linux magazine br 1

89
AGOSTO 2004 WWW.LINUXMAGAZINE.COM.BR Otimize o funcionamento da sua rede NETWORKING Distribua arquivos de configuração via DHCP Aprenda a usar ferramentas fundamentais Servidor de impressão com CUPS Linux Magazine R$12,90 Edição Número 1 Agosto 2004 NÚMERO 1 LINUX MAGAZINE AGOSTO 2004 Networking DHCP Ferramentas CUPS Pacotes no Slackware Mediawiki Sun Java Desktop Dicas KDE Veja também: Monitore ações com Perl Testamos MandrakeMove KDE 3.2: Dicas secretas Domando o MySQL Sun Java Desktop Slackware Descubra como gerar e gerenciar pacotes corretamente MediaWiki Instalação, configuração e gerenciamento C o m C D !

Upload: -

Post on 09-Mar-2016

390 views

Category:

Documents


16 download

DESCRIPTION

Linux Magazine BR 1

TRANSCRIPT

AGOSTO 2004

WWW.L INUXMAGAZ INE .COM.BR

Otimize o funcionamento da sua rede

NETWORKINGDistribua arquivos de configuração via DHCPAprenda a usar ferramentas fundamentaisServidor de impressão com CUPS

Linux Magazine R$12,90Edição Número 1 Agosto 2004

ME

RO

1L

INU

X M

AG

AZ

INE

AG

OS

TO

20

04

Ne

two

rkin

gD

HC

P

Fe

rra

me

nta

s

CU

PS

P

ac

ote

s n

o S

lac

kw

are

M

ed

iaw

iki

S

un

Ja

va

De

sk

top

D

ica

s K

DE

Veja também:

Monitore ações com PerlTestamos MandrakeMoveKDE 3.2: Dicas secretasDomando o MySQLSun Java Desktop

SlackwareDescubra como gerar e gerenciar pacotescorretamente

MediaWikiInstalação, configuração egerenciamento

CCoomm CCDD!!

EDITORIALBem-vindo

3Agosto 2004www.linuxmagazine.com.br

É um prazerpoder finalmentepresentear vocêcom conteúdo damais alta quali-dade, como o queiremos lhe ofere-cer a partir desta

primeira edição da Linux Magazine.Após mais de 10 anos de sucesso na

Europa, onde vem sendo publicada noidioma local de países como Alemanha,Inglaterra, Polônia e Romênia, e estandodisponível em mais de 60 países, chegafinalmente ao mercado editorial brasilei-ro aquela que deverá ser a sua revistasobre Linux: contamos com a sua opi-nião e contribuição para poder repetiraqui no Brasil o sucesso que já foi alcan-çado no exterior.

A Linux Magazine trará mensalmenteaté você temas que atendam aos inte-resses da nossa comunidade de usuáriose desenvolvedores de sistemas de códigoaberto e livre, bem como do nosso mer-cado. Deste modo, a sua composiçãoconsistirá tanto de artigos de autoriainternacional – provenientes dos nossoscadernos que são publicados no exterior,focando, entretanto, as nossas necessi-dades locais – traduzidos para a línguaportuguesa, como de artigos de autoresbrasileiros. Assim, podemos dizer que,apesar de termos um corpo editorial es-palhado pelo mundo, atendemos sempreàs necessidades locais.

A Linux Magazine é, então, uma publi-cação de caráter técnico, dirigida a umpúblico diversificado, uma vez que estásegmentada em assuntos corporativos

envolvendo Software Livre, no intuito deauxiliar executivos de TI a tomar deci-sões sobre as tecnologias que farão partedo seu alvo de investimentos, e tutoriais,voltados para engenheiros e administra-dores de sistemas, analistas, técnicos eusuários domésticos.

Como leitor, de agora em diante vocêestará integrado a uma rede de informa-ções dedicada a distribuir conhecimentoe expertise técnico.

Mensalmente a Linux Magazine trarátambém um CD-ROM repleto de softwarepara o seu sistema operacional favorito!

Esperamos que você goste!

Finalmente...Prezado leitor, prezada leitora da Linux Magazine,

O CD-ROM que acompanha a Linux Magazi-ne este mês traz uma versão customizadado Kurumin, desenvolvida especialmentepara esta edição. Ele é o Kurumin 3.0d acres-cido dos seguintes pacotes, entre outros*:

• dhcp3-server - Servidor DHCP• ethereal - Analisador de pacotes de rede• iptraf - Ferramenta de análise da rede• mrtg - Monitor do desempenho da rede• mtr - Ferramenta de análise da rede• netcat - Canivete suíço do “networker”• nmap - “Port Scanner”• tcpdump - Analisador de pacotes TCP• traceroute - Analisador de rotas da rede• vncserver - Servidor VNC• nessus/nessusd - Analisador de segurança

A coletânea de software disponível no CD-ROM possibilita ao leitor utilizar o conheci-mento adquirido nesta edição da LinuxMagazine, mesmo que ele não disponha deLinux instalado em seu PC: basta inicializar osistema diretamente a partir do CD e todasas ferramentas necessárias para praticar es-tarão à disposição do experimentador inte-ressado. Divirta-se!______*Para uma lista completa veja o conteúdo do CD.

CD-ROM do Mês

Rafael Peregrino da SilvaEditor

Agosto 2004LINUX MAGAZINE

4 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS

Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

Negócios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8Microsoft x Governo: Entrevista com o Presidente do ITIO Salto Global: Entrevista com o CEO da CycladesGuia de Migração: Entrevista com o Secretário de Logística e TI

Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15

(In)Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

CAPA

Caiu na Rede... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

Tecendo a Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Rede sem Estresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24Use um servidor DHCP para facilitar a configuração da rede.

SCPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30Como configurar diferentes perfis de hardware facilmente.

Impressione os Amigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32Compartilhe a impressora entre os usuários e baixe custos.

ANÁLISES

Sun Java Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

MandrakeMove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40Testamos o “live CD” que a MandrakeSoft desenvolveu.

TUTORIAL

Tesouros Ocultos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

SuperKaramba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44Como adicionar funcionalidade extra ao seu desktop uti-lizando a linguagem de programação Python.

Domando o MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50Veja como configurar e monitorar servidores MySQL com arecém-lançada versão Alpha do MySQLAdministrator, umainterface gráfica para o banco de dados.

Embrulha pra Viagem! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53Entenda como funciona o sistema de gerenciamento depacotes do Slackware.

38 Sun Java DesktopO “Sun Java Desktop” é um sistema operacional voltadopara pequenas e médias empresas que visa facilitar amigração do Microsoft Windows para o Linux. Para atingireste objetivo, a Sun Microsystems procurou simular da

forma mais pre-cisa possível aaparência, a usa-bilidade e o com-portamento doWindows. Colo-camos o sistemaà prova, para verse ele realmentecumpre tudo oque promete.

42 Tesouros OcultosComo toda nova versão do KDE, a 3.2 tem o tradicional con-junto de novas funções, correções de bugs e melhorias nosrecursos previamente existentes. Mas você precisa olhar bemde perto para encontrar algumas das novidades. Neste artigonós fomos ver de pertoalgumas destas melho-rias, e descobrimosnovos e interessantesrecursos escondidos.Alguns deles deixamseu desktop mais bo-nito e fácil de usar,como barras de ferra-mentas transparentese cursores com som-bra. Não perca!

20 Tecendo a RedeSistemas em rede oferecem benefícios enormes, mastambém significam maior responsabilidade. Apartir do momento em que você conectaseu computador a uma rede, não só seespera que você saiba tudo sobre ela,como também sobre sua interaçãocom o mundo lá fora. Neste artigovocê aprenderá a utilizar ferra-mentas básicas de rede, que estãodisponíveis em todas as distri-buições Linux e que podemajudá-lo a solucionar a maio-ria dos problemas que vocêporventura encontrar quan-do sua máquina ficar“off-line”...

LINUX MAGAZINEAgosto 2004

5Agosto 2004www.linuxmagazine.com.br

86 5º Fórum Internacional de Software LivreLinux Magazine dá cobertura ao evento que este ano contoucom a presença de mais de 4500 participantes registrados,provenientes de 35 países. A 5ª edição do fórum foi com-posta por mais de 100 palestras e painéis durante um períodode 4 dias, de 2 a 5 de junho.

SYSADMIN

MediaWiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

Linguagem de Sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62Como controlar a comunição entre processos usando sinais.

Coluna do Charly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65Dicas e truques de um verdadeiro administrador de sistemaspara ajudar você.

PROGRAMAÇÃO

Perl: Trabalho de Equipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Crie aplicativos com multi-tarefa cooperativa usando o POE– Perl Object Environment

LINUX USER

JuK, o Rei do iê-iê-iê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75Novo reprodutor de áudio com gerenciador de playlists do KDE.

O Sorriso do Lagarto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76Aprenda como utilizar as extensões do Mozilla.

Nós Estamos Quase Lá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78Conheça os problemas de usabilidade do KDE 3.2.

Desktópolis: Tome Nota! . . . . . . . . . . . . . . . . . . . . . . . . . . . .80Malditas notas amarelas! Elas estão por toda parte!

Papo de Botequim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82Uma nova maneira de aprender a programar em Shell.

COMUNIDADE

DebConf4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87

5º Fórum Internacional de Software Livre . . . . . . . .88

Liberdade para Aprender . . . . . . . . . . . . . . . . . . . . . . . . . . . .91Projeto de Educação Livre em Santo André mostra que o Linuxé uma plataforma viável para o ensino.

Planeta GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94

SERVIÇOS

Eventos / Índice de Anunciantes . . . . . . . . . . . . . . . . . . .96

Expediente Editorial / Quadrinhos . . . . . . . . . . . . . . . . .97

Na Próxima Edição... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98

53 Embrulha pra Viagem!Apesar de ser a mais antiga distribuição

Linux ainda em atividade, o Slackware,criado em 1993 por Patrick Volkerding,ainda é muito subutilizado. Por exem-plo, uma acusação freqüente, e falsa, éque não existe um sistema de gerenci-amento de pacotes. Ele existe, e nesta

edição vamos aprender a utilizá-locorretamente e até mesmo como

desenvolver nossos própriospacotes para o Slackware.

Você conhecerá ferramentasbásicas para visualizar o conteúdo de

pacotes, como modificá-los para que sigam o padrão adotadopela distribuição e descobrirá como lidar com o pesadelo dadependência entre pacotes.

56 MediaWikiO sistema de autoria coletiva MediaWiki é usado por alguns dosmais poderosos wikis da Internet, tais como a enciclopédia deconteúdo aberto e livre Wikipedia e a enciclopédia Trekkie Me-mory Alpha. Com ele podemos coletar e gerenciar facilmente umaenorme quanti-dade de dados econstruir basesde conhecimen-to. Este artigolhe ensinará ainstalar, confi-gurar e admi-nistrar correta-mente esta óti-ma ferramenta.

TillKamppeter,cortesia

Mundo Livre em Revista

6 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Mundo

A Conectiva lançou no dia 05 de julho anova versão de sua distribuição Linux, oConectiva Linux 10. Entre seus principaisdestaques estão o kernel 2.6 com suportea Hyperthreading e aos processadoresAthlon e Pentium IV, gerenciamento dediscos avançado com o LVM2, suporte adispositivos de bloco (como discos rígi-dos) de até 16 Terabytes, firewall pes-soal, diversas soluções anti-spam eSamba 3, para compartilhamento dearquivos com uma rede Windows, inclu-sive sistemas utilizando o Windows 2000e Windows Server 2003.

No desktop, as principais novidadessão o KDE 3.2.3, Gnome 2.6, o cliente dee-mail Novell/Ximian Evolution 1.4.6,com plugin para acesso a servidoresMicrosoft Exchange 2000 e 2003, naveg-ador (Mozilla) com bloqueador de pop-ups, que elimina as janelas de propa-ganda indesejadas durante a navegaçãona Internet, diversos aplicativos parareprodução de arquivos multimídia(música e vídeo) e o Conectiva Office,conjunto de programas para escritórioem português (do Brasil) baseado noOpenOffice 1.1.2.

O produto será vendido nas lojas emduas versões: Desktop, por R$ 99,00, eProfessional, por R$ 299,00. A diferençafica por conta da menor quantidade dedocumentação impressa na versão desk-top (dois livros a menos), além daausência de ferramentas de desenvolvi-mento e administração de sistemas

Seguindo uma tradição que nasceujunto com a primera versão do ConectivaLinux, imagens dos 3 CDs de instalaçãodo sistema podem ser baixadas gratuita-mente via Internet, no site da própriaConectiva. A empresa recomenda o usodo BitTorrent, que garante downloadsmais rápidos e confiáveis e faz melhoraproveitamento da banda de conexão àInternet do usuário, além de evitar ocongestionamento dos servidores daempresa, ou de seus mirrors. ■

Conectiva: http://www.conectiva.com.br/Download via BitTorrentCD 1: http://distro2.conectiva.com.br/torrents/cl10_cd1.torrentCD 2: http://distro2.conectiva.com.br/torrents/cl10_cd2.torrentCD 3: http://distro2.conectiva.com.br/torrents/cl10_cd3.torrent

■Conectiva Linux 10 chega às lojas ■Katatudo abre seucódigo-fonte

A Katatudo, empresa brasileira que de-senvolveu um sistema de busca na Inter-net, liberou no dia 21 de julho todo ocódigo-fonte de seu “motor” de busca. Osistema foi concebido com uma versãomodificada do mnoGoSearch, um pode-roso software de busca desenvolvido naRússia e licenciado sob a GPL, dispo-nível na Internet. Os desenvolvedores daKatatudo fizeram várias modificaçõesneste código, como otimizações e adap-tação à língua portuguesa.

Estas alterações são absolutamentenecessárias, pois cada idioma possui umjogo de palavras próprio, e a combinaçãoprecisa destas palavras é a principalresponsável pela eficiência de qualquersistema de busca. Agora, assim como aempresa se beneficiou do código-fonteoriginal do mnoGoSearch, outros desen-volvedores também poderão se benefi-ciar das melhorias no código feitas pelaequipe da Katatudo.

O código-fonte, distribuído em umarquivo .tar.gz com 2.8 MB, pode serbaixado no endereço http://cvs.katatudo.com.br/. Além disso, foram criadas duaslistas de discussão, uma para divulgaçãode notícias sobre o desenvolvimento eoutra para discussão entre os desen-volvedores, e em breve o acesso ao servi-dor CVS (o repositório de código doprojeto) também estará liberado.

Além de seu sistema de busca, aKatatudo também oferece um serviçogratuito de webmail. Os endereç[email protected] tem espaço ilimitadona caixa postal, além de um sistema anti-spam e anti-vírus. ■

Katatudo: http://www.katatudo.com.brCódigo-Fonte: http://cvs.katatudo.com.br/mnoGoSearch: http://search.mnogo.ru

A Sun Microsystems lançou sob a GPL ocódigo fonte de seu “Projeto LookingGlass”, um estudo para a criação de umambiente desktop 3D. Um site tambémfoi criado para ajudar a comunidade dedesenvolvedores com exemplos decódigo e documentação.

O Looking Glass promete transformaros itens em seu desktop em objetos 3D.Janelas que não estão em uso podem sercolocadas de lado em um canto da tela,como livros em uma estante, e janelasativas podem ser viradas para acessarpainéis de prefe-rências ou notasem suas costas.

Os papéis de pa-rede também ga-nham vida nova:são compostos pormúltiplas camadasque se deslocamconforme a movi-mentação do mou-se, alternando oponto de vista edando ao usuárioa sensação de pro-fundidade.

Até o momento o software, que nasceude uma idéia do programador HideyaKawahara, ainda está na fase de desen-volvimento preliminar (ou Phase 1, nojargão interno dos programadores daSun) e roda apenas no Linux. O LookingGlass é escrito em Java, e usa Java3D/OpenGL na parte gráfica. ■

Projeto Looking Glass: https://lg3d-core.dev.java.net/Entrevista com Hideya Kawahara: http://today.java.net/pub/a/today/2004/07/06/3ddesktop.htm

■OpenOffice 1.1.2em português

Saiu em 19 de Julho a versão em por-tuguês do Brasil do OpenOffice.org 1.1.2,o mais popular conjunto de aplicativosde escritório no mundo do SoftwareLivre. Entre as novidades estão umdicionário de sinônimos, ajuda tradu-zida, suporte às etiquetas auto-adesivasda Pimaco e um conjunto de modelospara apresentações.

Versões para Linux (71.5 MB) e Win-dows (60.9 MB) podem ser baixadas gra-tuitamente, bem como o código-fonte doprograma. Infelizmente, não há versãopara o Mac OS X. Até o momento dofechamento desta edição, apenas o siteoficial tinha a nova versão. Os mirrors,ainda não atualizados, contavam apenascom a versão 1.1rc4. ■

Projeto OpenOffice Brasil: http://www.openoffice.org.br/Download: http://www.openoffice.org.br/openoffice/localized/pt-br/1.1.2/

■Hackers, uni-vos!Acontece no mini-auditório do campusdas Faculdades ESEEI em Curitiba, entreos dias trinta de julho e três de agosto, oevento HackerUnion, uma série de pa-lestras, cursos e workshops ministradospor técnicos e para técnicos com inte-resse em Software Livre.

No programa, cursos de programaçãoem Python, PyGTK e Shell Script, Gimp,Blender, além de palestras sobre segu-rança, Wine, PHP Nuke, QMail, clusters,distribuições Debian customizadas e em-barcadas, criação de “Live-CDs” (dis-tribuições Linux que rodam direto doCD-ROM) e balanceamento de carga.

A taxa de inscrição de apenas R$ 7,40ajudará a cobrir os custos relacionados àrealização do evento. ■

7Agosto 2004www.linuxmagazine.com.br

Mundo NOTÍCIAS

■Gnome BrasilCom o apoio da Gnome Foundation dosEUA, foi fundada em 20 de junho aGnome Brasil, uma associação civil quetem por objetivo promover o ambientedesktop e tecnologias desenvolvidas pelo

projeto GNOME e incentivar a criação desoftware relacionado no mercado na-cional. Com sede em Curitiba, a associ-ação tem como diretor técnico DjalmaValois Filho (do CIPSGA), Júlio CezarNeves como diretor jurídico, MarcosMazzoni (Secretário de Assuntos Estra-tégicos do governo paranaense) comodiretor comercial, e um conselho técnicocomposto por vários desenvolvedores,entre eles Eduardo Maçan e GustavoNoronha e Silva, (o “kov”), ambos tam-bém envolvidos no projeto Debian.

Entre vários outros, o principal obje-tivo desta primeira gestão é a criação detoda a infraestrutura técnica e políticanecessária para que a associação (nofuturo, Fundação) possa desenvolvernovos projetos. O mandato se encerraem Dezembro de 2005, quando será real-izado um novo processo de seleção dosmembros da diretoria. ■

Gnome Brasil: http://www.gnomebrasil.org.br/ (offline no fechamento desta edição).

Evento: HackerUnionData: 30/07/04 a 03/08/2004Cidade: Curitiba - PRLocal de Realização do Evento:Mini-Auditório do campus das FaculdadesESEEI. Rua Chile, 836, Bairro Rebouças, Curitiba,Paraná (ao lado do Teatro Paiol).Fone: 41 333 4900URL do Site Oficial:http://www.gnus.com.br/index.py?a=show_ev&id=76

SERVIÇO

■Sun lança Looking Glass sob a GPL

única empresa. Isso agora acabou. E naminha opinião eles erraram ao tentar uti-lizar o caminho legal para resolver umproblema de tecnologia, através de umaação judicial que teve caráter puramen-te intimidativo.

O que você achou da reação dacomunidade de usuários e desenvolve-dores de Software Livre (SL) à notícia doprocesso?

A comunidade respondeu com muitaforça e mostrou que o SL não dependedo governo e que não é o fato de seperseguir alguém isoladamente que vaimodificar a realidade de que o fim domonopólio na área de software é um fatoirrevogável. Uma vez eu estava dandouma entrevista no programa do PauloHenrique Amorim e ele me perguntou seestávamos prontos para enfrentar aMicrosoft. Ora, o que eu acho é que“eles” é que não estão preparados paraenfrentar a comunidade.

Qual é o plano de migração do go-verno federal?

Nós temos cerca de 300.000 desk-tops para migrar. O processo de migraçãoé dividido em três passos:1.Novas estações de trabalho irão “ro-

dar” utilizando SL. Aí é que aparecemalguns problemas de compatibilidade,tais como plugins que só funcionamno Windows, etc. Mas o problemaaqui não é tecnológico, e sim cultural.Mais ou menos 4 a 5 mil estações jáestão funcionando assim.

2.Novas soluções e sistemas são imple-mentados como SL, sob a GPL e multi-plataforma (ou como aplicação web).

3.São migrados em primeiro lugar os sis-temas que impeçam os dois passosanteriores, o que gera um efeito em

SA

LM

SA

LM

rede, de modo que se avançarmos bas-tante agora, o SL vai se espalhar.

Como superar a dominância da uti-lização do software proprietário no go-verno?

Com pioneirismo. No Brasil, háalgum tempo atrás, quando a gentechegava para falar da alternativa SL opessoal questionava quais implemen-tações daquele tipo já existiam; ou setais ferramentas eram suficientes paraatender às necessidades do projeto.Assim percebemos no governo que tí-nhamos que criar “cases”, tomandodecisões que não visam prejudicar ne-nhuma empresa, mas que abrem umnovo espaço de desenvolvimento. Sãoprojetos que vão desde o apoio à comu-nidade que deseja uma implementaçãolivre da linguagem Java, passando pelaTV Digital, sistemas de gestão paramunicípios e projetos de inclusão digitalsustentável (que para ser sustentáveltem que ser baseado em SL).

E como fica a questão de custos. Hádiminuição palpável? A Microsoft cos-tuma alegar que os custos com licençascorrespondem apenas a 4% do custo deum projeto e que o TCO de seus sistemasé melhor devido a uma menor necessi-dade de treinamento. Como você encaratal argumentação?

LM

SA

LM

Tomando como base uma entrevistadada por Sérgio Amadeu da Sil-veira, atual presidente do Instituto

Nacional de Tecnologia da Informação(ITI) e um dos maiores defensores doSoftware Livre no governo, à revistaCartaCapital em março, na qual a práticade doação de licenças de software é com-parada com “prática de traficante”, a Mi-crosoft entrou com um pedido deexplicações na 3a Vara Judicial de Baru-eri.

Amadeu, após consultar seus advoga-dos, já declarou que não irá responderao que considera uma “provocação judi-cial inusitada e descabida”.

A seguir leia a entrevista que o presi-dente do ITI cedeu à Linux Magazine,bem como a nota oficial que a Microsoftdivulgou a respeito da ação judicial queestá movendo contra ele.

Processo(Linux Magazine) Qual a sua

posição em face da ação judicial que aMicrosoft está movendo contra você?

(Sérgio Amadeu da Silveira) Eusempre tive uma postura e uma partici-pação afirmativa em todas as minhasatividades junto ao ITI e dentro do go-verno. Nunca chamamos nenhum jor-nalista para atacar qualquer empresa;muito pelo contrário. O que acontece éque apoiamos um modelo baseado nocompartilhamento do conhecimento pla-netário, o que não vai de encontro aosinteresses de alguns, mormente daquelesque detém posições de dominância eapostam na manutenção da reserva demercado de software e de monopólios.Porque no nosso país existia uma reservade mercado para o monopólio de uma

SA

LM

Microsoft leva à justiça o diretor-presidente do Instituto Nacional de Tecnolo-

gia de Informação. Ação judicial aquece o debate em torno do Linux e do Soft-

ware Livre, que chega à mídia não especializada. LM foi ouvir os dois lados.

POR RAFAEL PEREGRINO DA SILVA

8 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Entrevista

Figura 1: Sérgio Amadeu da Silveira, presidente doInstituto Nacional de Tecnologia da Informação.

Opção do governo pelo Software Livre começa a incomodar

Microsoft x Governo

Tomemos por exemplo o projeto deinformatização da escola. São em tornode dois milhões de computadores, seconsiderarmos uma média de 20 máqui-nas por escola. O custo com licenças desoftware com o SL é zero. Considerandoum custo de US$100,00 por licença nocaso de utilizarmos software propri-etário, temos um custo, somente com li-cenças de software, de 200 milhões dedólares! Então o custo com licenças é deapenas 4%? Tudo bem: estes 4% podemnão ser o maior problema no total docusto, mas é um problema para o Brasil!Com 200 milhões de dólares para investirem capacitação ficamos numa situaçãoconfortável e temos suporte técnico pre-parado e com domínio de uma tecnolo-gia criada dentro do país, da qual temospleno controle. Já temos experiências po-sitivas de capacitação no governo (SER-PRO, ANATEL, etc.). Realizamos umevento institucional de capacitação deuma semana com mais de 99 cursos de 8a 40 horas de carga horária. De outrolado, não podemos ser ingênuos imagi-nando que não há necessidade de treina-

SA mento em ferramentas proprietárias.Além disso, o suporte é mais barato amédio prazo quando consideramos o tri-nômio Apache-GNU/Linux. Quem a-prende a trabalhar com ferramentaslivres aprende a funcionalidade. No casodo software proprietário o que temos é arestrição do conhecimento e da fun-cionalidade a um só sistema ou pro-grama. É o futuro que está em disputa, eeu estou convicto de que este futuro serálivre.

O que você diz àqueles que o acu-sam de ter uma posição ideológica naquestão do Software Livre?

Eu digo que o meu objetivo é garan-tir a independência tecnológica ao país eque o modelo de desenvolvimento que oSoftware Livre oferece permite isso. Mui-tos interesses estão sendo contrariadospor isso. Quem me acusa de ter uma po-sição ideológica o faz pois está querendovender. Tem gente que defende a políticado monopólio. Aí eu estou fora! Tanto asempresas como o governo devem tentarser independentes de fornecedor, sempreque isso seja possível. ■

SA

LM

Entrevista NOTÍCIAS

A Linux Magazine contactou a Microsoft nointuito de abrir o mesmo espaço para que aempresa se manifestasse em relação aocaso. Abaixo a nota oficial, recebida direta-mente da Assessoria de Imprensa daMicrosoft:

“A Microsoft gostaria de ressaltar que estácomprometida em trabalhar com o governode modo respeitável e colaborativo para a-tender às necessidades econômicas, sociaise educacionais do país.

A Microsoft está no Brasil há mais de 14 anose tem um comprometimento de longoprazo com o país. Por meio de 10 mil empre-sas parceiras, a companhia proporciona 45mil empregos e R$ 1 bilhão em receitas comimpostos.

A Microsoft sabe que o Brasil tem liberdadepara escolher a melhor tecnologia para assuas necessidades. A companhia está satis-feita por competir pelos méritos de suatecnologia, que em análises objetivas mos-trará suas inovações e valor aos clientes.

São Paulo, 18 de junho de 2004

Microsoft Brasil”

Resposta da Microsoft

cação de dados era voltado para main-frames. Foi quando pensamos em usarnossa experiência para desenvolver apli-cações e produtos para PCs.

O que levou vocês a mudar a empre-sa para os EUA?

Em 1991 nós tivemos o fim da reser-va de mercado. Sabendo que em breve omercado brasileiro seria invadido porprodutos importados, decidimos apostarque éramos capazes de criar tecnologia enão apenas atuar como revendedores oudistribuidores, que foi o destino de mui-tas empresas brasileiras daquele tempo.E tínhamos uma pretensão ousada: criaruma máquina de comunicação usandoEISA, um tipo de barramento que pareciapromissor na época.

Como foi essa fase? Qual era o prin-cipal desafio?

Foi uma fase muito difícil. Enquantoeu trabalhava fazendo contatos e bus-cando oportunidades, o John ficavasegurando a barra e praticamente sub-sidiando toda a operação com seu tra-balho a partir do Brasil. Para promovernossa idéia, precisávamos adquirir co-nhecimento, fechar acordos. O duro erachegar às empresas dizendo que querí-amos comprar tecnologia, sendo pratica-mente desconhecidos. E foi assim atéque chegamos à então TMC, uma empre-sa chinesa que vendia placas-mãe paraPCs e lá conseguimos mostrar o que nos-sos produtos podiam fazer. Foi quandofechamos um acordo para a troca de tec-nologias, mas estávamos tão desprepara-dos que tudo estava em português.Tivemos então que fazer a tradução dosoftware, do código fonte e da documen-tação para o inglês. O executivo dessaempresa, aliás, foi quem nos deu orien-

DD

LM

DD

LM

tações sobre a importância de ter umbusiness plan (planejamento que defineos rumos e o processo de evolução deum negócio), o que nunca havia nos o-corrido. Só sei que foi preciso muita mo-tivação para não desistir naquela época.

Reza a lenda que Phil Hughes, entãoeditor do Linux Journal teria influenci-ado vocês a testar o sistema? Como foique o Linux entrou na vida da Cyclades?

Existem ocasiões na vida em que asorte nos sorri, ou uma oportunidadeaparece. Mas as coisas só acontecem sevocê junta a percepção com uma açãocoordenada. Foi assim que aconteceuconosco: em 1993, quando o Phil veiofalar conosco, o Linux não era nada, masnós vimos uma chance de ganhar ummercado que estava tomado por empre-sas como a MaxSpeed e a Digi Interna-cional – que mais tarde se tornaria umOEM da Cyclades. Ele veio até nós e nosmostrou a oportunidade que o Linuxtrazia e tivemos a vantagem adicional dotiming. Estávamos no início da explosãoda Internet e pequenos provedores usa-vam algumas placas para fazer a ligaçãoadequada de modems. Nós tínhamosuns seis modelos que faziam isso e – denovo, mérito do John – pegamos a maisbarata desenvolvemos um “driver” paraLinux para ela, o que fazia o preço finalchegar a US$ 99,00. Ela tinha algumaslimitações, pois só funcionava até umacerta velocidade, mas ajudou a promoveras vendas de outro produto, um poucosuperior, com preço de US$ 199,00. Sópara comparar, os produtos equivalentesde outros fabricantes chegavam a custarUS$ 500,00. Só que vendíamos a placa edávamos o software, o que, combinadoao preço, fez nossos produtos serem ado-

DD

LM

Empresa nascida no Brasil e proje-tada internacionalmente graças aocrescimento da Internet e ao uso do

Linux em seus produtos, a Cyclades éum exemplo claro de que é possíveldesenvolver negócios de forma consis-tente com plataformas abertas. Seusequipamentos, que incluem de rotea-dores a soluções para gerenciamento dedata centers, são utilizados por mais deoito mil clientes em todo o mundo. Maso sucesso exige, além de trabalho duro,visão e um leque de serviços consistentepara atender às necessidades das empre-sas, como nos diz Daniel Dalarossa, CEOda empresa, nesta entrevista exclusivaque ele concedeu à Linux Magazine namatriz da empresa, na Califórnia. Prestesa inaugurar seu mais recente escritóriointernacional, na Coréia, o executivo falada história da empresa, cuja origemremonta a uma garagem em São Paulo,do papel do Linux em seu crescimento edas diferentes visões sobre o Linux entrenos mercados brasileiro e norte-ameri-cano, entre outros assuntos.

(Linux Magazine) O que motivouvocê e seu sócio, o também brasileiroJohn Lima, a montar a Cyclades? Comoera o primeiro produto da empresa?

(Daniel Dalarossa) Nós dois vín-hamos da Digirede e, na época, percebe-mos a oportunidade de montar placaspara conectar PCs. Nosso primeiro pro-duto, o Cyclom-8, era uma placa de da-dos projetada pelo John e cujo softwareeu desenvolvi a partir do UNIX da SCO.Essa placa permitia ligar o computador aperiféricos como impressoras ou caixasregistradoras. É importante lembrar queestávamos no início dos anos 90 e muitodo que existia em termos de comuni-

DD

LM

Empresa de origem brasileira, a hoje internacional Cyclades é um grande

exemplo de que o Linux é uma base consistente para o desenvolvimento de

produtos e a realização de negócios na área de tecnologia.

POR ALEXANDRE BARBOSA

Entrevista com CEO da Cyclades Daniel Dalarossa

O Salto Global

10 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Entrevista

Figura 1: Dalarossa é CEO e co-fundador da Cyclades

tados por clientes em inúmeros países.Mas no início tivemos que aturar muitaspiadas de gente que nos ligava criticandoa escolha de um OS de “estudantes”.

Foi quando a empresa cresceu?Seguramente o grande salto foi a par-

tir daí. O mérito desse crescimento foitodo do John, que elaborou um plano devendas que foi muito bem executado. Apartir de 1995, criamos placas digitais deroteamento, as chamadas “Router Kil-ler”. A proposta era: para que comprarum roteador Cisco se você pode compraruma placa Cyclades, colocá-la num PCcom Linux e conseguir fazer a mesmacoisa pela metade do preço? Crescemosmuito vendendo placas Cyclades paraLinux. O engraçado é que vendíamosmuito bem em Windows. A projeçãoconseguida nos fez fechar bons acordoscom empresas como o Wal Mart. Em1999, eles compraram 2500 placas paraautomatizar aquelas máquinas de tocarCDs nas lojas (o Wal Mart é a empresaque mais vende CDs nos EUA) e tambémequipamos a parte de produção da Na-tional Semiconductors com placas Cycla-des rodando em Windows. Tais projetosexigiam drivers para Windows e outrossistemas operacionais, mas nosso mar-keting era todo em cima do Linux.

Quando foi que surgiram estes pro-dutos mais corporativos, como os usadosna administração de data centers?

Estes produtos de administração e a-cesso remoto surgiram para atender àdemanda de alguns clientes. Em 1999, oYahoo, que já vinha comprando produ-tos nossos desde 1997, nos chamou parauma reunião em que nos pediam algu-mas alterações em uma de nossas placaspara atender às especificações deles. Aoestudar o pedido, vimos que eles que-riam embutir a placa nos racks de servi-dores. Eles usavam a porta console paragerenciar servidores remotamete. Imagi-ne uma empresa de Internet, com cente-nas de equipamentos, sempre tendo quedeslocar técnicos para reparos ou manu-tenção. Com o nosso produto, eles fazi-am tudo isso de maneira centralizada.Ao desenvolver este produto, usamos ofeedback de outros clientes e embutimoso Linux dentro de uma solução quepodia trazer mais disponibilidade para osdata centers, permitindo evitar e corrigirno menor tempo possível os problemasde infra-estrutura nas redes.

DD

LM

DDLM

Qual é o tamanho atual da empresa?Nosso faturamento neste ano deve

ficar entre US$ 40 e US$ 50 milhões . Éum bom resultado, mas ainda estamoslonge da líder no mercado de produtosde disponibilidade para servidores que éa Avocent, dona de um faturamentoanual de US$ 300 milhões. Temos 8 milclientes no mundo que já compraram econtinuam comprando Cyclades. 85%das 100 maiores empresas da lista darevista Fortune são clientes nossos, in-cluindo aí grandes bancos e outras cor-porações. Mais ou menos metade denossas vendas vêm dos Estados Unidos e35% do mercado europeu. Temos 250funcionários no mundo, 70 deles no Bra-sil, e escritórios em 14 países.

Qual é o Linux que roda dentro dosequipamentos da Cyclades hoje?

Nos usamos um kernel da Monta-vista, uma distribuição de “embeded Li-nux” (quando o sistema é embutido emum equipamento). Mas, em breve, deve-mos ter nossa própria distribuição.

Como são definidas as linhas de pro-duto que receberão maior investimento?

Pesamos as necessidades mais críti-cas dos clientes e buscamos sofisticar oatendimento a essas demandas. Entrenossas linhas de desenvolvimento temosdado destaque à de power management,com a plataforma Alterpath. Apostamosno aumento de recursos dessa solução ena automação do maior número de tare-fas de detecção e correção de erros, parafacilitar a vida dos operadores e aumen-tar a disponibilidade dos equipamentos.

As parcerias são importantes paraalavancar os negócios de uma empresaque usa a plataforma Linux?

Depende das características de cadamercado. Em regiões como Brasil, Japãoe Austrália, lidamos com distribuidores erevendas, que precisam ser treinadospara saber vender e dar suporte aos pro-dutos, o que os eleva à condição de“Cyclades Certified Partners”. Em outrosmercados, adotamos o modelo de vendasdiretas, que responde por 60% do totalde vendas. Parcerias são importantes,pois ajudam a compor soluções atraentespara os clientes finais. Fechamos umaparceria internacional com a HP, atravésda qual todos os clusters Linux da em-presa virão com um gerenciador de portaconsole Cyclade instalado, o que atesta aconfiabilidade dessa tecnologia.

DD

LM

DD

LM

DD

LM

DDLM Mas nem todo mundo tem essa con-

fiança. No Brasil, o Linux ainda enfrentagrande resistência em muitas empresas.

O Linux é uma tecnologia madura.Mas muita gente não está preparada paraa verdade. Isso tem a ver com a maturi-dade das ofertas e com as característicaslocais de mercado. O mercado Windowsé muito forte no Brasil, assim como é nosEstados Unidos. Só que aqui, os críticosestão ficando mais cautelosos, principal-mente com o avanço do Linux em ban-cos e a adoção da plataforma aberta parainúmeras aplicações corporativas.

Como resumiria o papel do Linuxpara a Cyclades?

O Linux é uma tecnologia funda-mental para nós. É uma plataformaestável, que pode ser moldada de diver-sas formas e a diversidade de produtosque criamos é uma mostra dessa flexibil-idade. Mas fizemos tudo isso baseadonuma estrutura sólida de serviços: con-tinuamos seguindo o que determina aGPL, o que não é feito por muitas empre-sas. Você pode ir até o site da Cycladesbaixar o código fonte dos produtos.

Mas isso não permite que outrasempresas fabriquem equipamentos idên-ticos aos seus?

Há uma empresa coreana que copiounossos produtos, chamada Sena. Sim, épossível fazer isso; mas uma coisa écopiar um produto, outra é criar umaestrutura de atendimento que dê su-porte, respaldo, confiança enfim, aosprodutos que você fabrica e vende.

Que conselho daria às pessoas eempresas que querem prestar serviçoscom o Linux?

É muito importante ouvir o que omercado tem a dizer e adequar as ofertasàs necessidades reais dos clientes. Semessa sensibilidade, será difícil perceberreais oportunidades de negócio ou mes-mo atender à demanda do mercado.

É verdade que os funcionários maisvelhos ganham um carro?

É verdade (risos). Mas é um carropopular, ou seja, que custa entre 10 e 15mil dólares no mercado norte-ameri-cano, para quem completar 10 anos naCyclades. Foi a forma que encontramosde premiar a fidelidade dos funcionários,afinal, não é fácil permanecer tantotempo em uma mesma empresa na áreade tecnologia. Instituímos isso em 1998 eaté agora 7 carros foram dados. ■

DD

LM

DD

LM

DD

LM

DD

LM

DD

LM

11Agosto 2004www.linuxmagazine.com.br

Entrevista NOTÍCIAS

PCs ociosos numa nova abordagem com-putacional. Embora polêmico, o grandeganho do Linux não está nos desktops,mas nas atividades de back office.

Existem análises que comprovem aredução de custos com o Linux?

As análises que temos são pontuais,segmentadas por projetos. Mas em geralsegue-se o mesmo raciocínio aplicado asoluções corporativas: um terço do custoé hardware, um terço do custo é softwaree um terço é consultoria. A porção soft-ware é reduzida pois eliminamos a licen-ça do sistema operacional. Claro que segasta um pouco mais em consultoria,pois a solução vai exigir um grau maiorde adaptação, de customização. A van-tagem, no entanto, não está na análisede curto prazo, mas no longo prazo,onde quebramos os custos de aprisiona-mento. Isso funciona da seguinte forma:empresas fornecem soluções para o Gov-erno que acabam criando um custo amais se decidirmos mudar, abandonaraquela plataforma. É aí que os fornece-dores ficam gananciosos e cobram maiscaro pelo uso da tecnologia. Ou seja, asempresas que vendem para o governo,sabendo que podem ser preteridas emfunção do Linux, se tornam maisflexíveis nas negociações.

Nesse caso, o software proprietáriopoderia ficar oneroso com o tempo?

Exatamente. Na verdade a estratégiade marketing dos fornecedores, que vaicontinuar existindo apesar do softwarelivre, é facilitar a entrada numa determi-nada tecnologia e depois dificultar asaída. E a estratégia de quem compra éfugir desse roteiro. É onde os padrõessão importantes, onde o Linux é impor-tante. Isso significa que vamos deixar de

RS

LM

RS

LM

conviver com padrões proprietários?Dificilmente. Porque quando alguémpropor uma inovação que gere um talganho de produtividade que justifique osinvestimentos, aí valerá a pena correr orisco de ir para a solução proprietária.

E como as empresas estão reagindo àtendência governamental em apoiar oSoftware Livre?

Acho que as empresas estão maisassustadas do que deveriam. Mesmo quetodo o setor público se decidisse pela mi-gração para o Software Livre em todos oslugares, ele não conseguiria, porque nãohá força de trabalho suficiente no paíspara isso. Mas, seguramente, quem forganancioso, sairá perdendo. O que asempresas precisam fazer é pensar nonível de apropriação que estão propondoe, se exagerarem na dose, serão osprimeiros a ser substituídos.

O Guia de Migração será restrito aosórgãos governamentais ou também po-derá ser usado por empresas perten-centes ao setor público?

O Guia poderá ser usado pelasempresas públicas e privadas. A idéia doGuia é de facilitar a migração,fornecendo um modelo estruturado doque deve ser considerado para a migra-ção, como por exemplo documentação,estratégias e todo um conjunto que visa

RS

LM

RS

LM

Em meio a todo o debate que cercaos estudos sobre a adoção do soft-ware livre no Governo, uma das

vozes mais sóbrias é a do Secretário deLogística e Tecnologia da InformaçãoRogério Santanna. Com sua pasta ligadaao Ministério do Planejamento, Orça-mento e Gestão, Santanna é um dos maisimportantes articuladores do incentivo àutilização do software de código abertono Governo Federal e um dos coorde-nadores do “Guia Livre. Referência deMigração para Software Livre do Go-verno Federal”, documento de 150 pági-nas, elaborado por mais de 60 técnicosde vários departamentos do governo eque traz informações técnicas que visamfacilitar a vida dos gestores de tecnologiaem órgãos públicos ao migrarem para oLinux e que foi apresentado ao públicopela primeira vez durante o 5º FISL.

Em entrevista à Linux Magazine, San-tanna falou sobre a importância do Soft-ware Livre para o País e sobre novosmodelos computacionais, mais adequa-dos a países emergentes como o Brasil,entre outras questões.

(Linux Magazine) O Software Livrerealmente atende às atuais necessidadesdo Governo Federal?

(Rogério Santanna) Atende a todasas necessidades. Pode-se encontrar solu-ções de todos os tipos em plataformaaberta, mas tudo vai depender da ade-quação técnica. Nem sempre a soluçãolivre será a melhor alternativa. Mas oLinux é muito importante, pois pode terusos absolutamente inovadores dentrodo Governo Federal, permitindo realizarcomputação de alto nível como o proces-samento distribuído ou na computaçãosob demanda, dando uso a incontáveis

RS

LM

Colocado sob consulta pública por ocasião do 5º Fórum Internacional de Soft-

ware Livre (FISL), guia é uma referência de migração para Software Livre para o

setor público e também para as empresas brasileiras.

POR RAFAEL PEREGRINO DA SILVA E ALEXANDRE BARBOSA

Entrevista com Rogério Santanna

Guia de Migração

12 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Entrevista

Figura 1: Santanna, Secretário de Logística e TI

estimular a disseminação de experiên-cias e, por que não, de problemas com osoftware livre, economizando tempo pa-ra os usuários. E ele ficará cada vez maisrico, porque reunirá um conjunto maiorde experiências relatadas com o tempo.

Como e onde nasceu a idéia do Guiade Migração do Governo Federal?

A idéia começou pequena. No inícioa idéia era pensar na melhor distribuiçãodo Linux para uso em desktops. Depoispercebermos que poderíamos ser maisambiciosos. O grupo que começou aestudar isso envolvia o Comitê Técnicode Legados e Licenças e o Comitê deSoftware Livre. Descobrimos então que aComunidade Econômica Européia já ti-nha um trabalho nesse sentido e ele esta-va à disposição para consulta, tendo nosservido de base, o que permitiu avançar-mos na elaboração do guia com rapidez,de forma que ele já está, agora, em fasede consulta pública.

O documento será disponibilizadopara outros países parceiros, no âmbitodo Mercosul, por exemplo?

Sim, claro. Durante o FISL recebe-mos pedidos de outros países latinoscomo a Argentina e outros que se inte-ressaram em usar nosso documentocomo base para suas próprias versões eisso, para nós, é gratificante, nos colo-cando, enquanto país, como um inter-locutor importante no que tange o usodo Software Livre.

Como foi o processo de criação? Al-gum resultado prático já foi alcançadocom o uso do Guia?

Na verdade foi o contrário. Tivemosmuitas pessoas participando dos gruposque analisaram as várias abordagens doLinux no Governo e relatamos algumasexperiências práticas, bem como as cau-telas e experiências de pessoas que jáenfrentaram esse tipo de dificuldade du-rante uma migração.

Como foi tratada a questão dosuporte técnico?

Como eu disse, cada caso é diferente.Teremos ocasiões em que a terceirizaçãoserá bem sucedida e outras em que ainternalização será a melhor escolha. Vaidepender do projeto. Hoje o nível dediferenciação e a falta de padrões são tãograndes que não há uma instalação igualà outra. Há casos em que o pessoalinterno é quem melhor conhece a com-plexidade daquele ambiente e o fornece-

RS

LM

RS

LM

RS

LM

RS

LM

dor externo dificilmente conseguirá dar osuporte técnico adequado, seja para osoftware livre, seja para o proprietário.

O Guia está em consulta públicaatualmente. Que tipo de contribuiçãoespera da comunidade do software livre?

Não tenho uma posição oficial dosresultados da consulta pública mas o queposso dizer é que tenho recebido mos-tras de que há um grande apoio da co-munidade e ela está muito envolvida.Tenho certeza de que a participação ati-va dessa comunidade vai nos ajudar amelhorar o guia enormemente. E essa é aessência democrática do guia, que visajustamente compartilhar a base de co-nhecimento em torno das plataformas desoftware aberto, o que vai acelerar seuprogresso, tornar mais rápidas estas con-quistas. Imagino que em breve recebere-mos contribuições como sugestões deequivalência ou ainda propostas alterna-tivas melhores do que as que tivemos emnossas experiências.

Qual a sua opinião sobre a recentepolitização do debate em torno daquestão do Software Livre?

Acho que essa politização tem sidoproposta de forma artificial. Não é essa adiscussão que desejamos. Queremos,sim, discutir o compartilhamento e aapropriação da tecnologia. E esse debateopõe os países pobres e ricos, pois essaagenda discute o futuro da computação eo direito de propriedade industrial e inte-lectual. Hoje, esses direitos sobre pro-priedade intelectual são 70% da balançacomercial norte-americana. Então, quan-do discutimos essa questão, estamos fa-lando do que interessa aos países pobres,emergentes e que precisam de tecnologiae de fácil acesso a ela, para que possamdisputar espaço na economia do conhec-imento. O problema é não ideologizar adiscussão, porque no fundo é uma dis-cussão política, que fala das inovaçõestecnológicas e se elas podem servir paradiminuir a desigualdade global.

Como fica a questão do treinamentode pessoal dentro do Governo? Porquenão é possível usufruir das vantagens doSoftware Livre sem pessoal especial-izado. Há alguma ação do tipo ligada aoGuia de Migração?

Tivemos recentemente um grandeesforço nessa área com mais de mil pes-soas sendo capacitadas em 50 cursosdiferentes para criar essa massa crítica

RS

LM

RS

LM

RS

LM

de empresas e ter mais concorrência equalidade, além de democratizar todo onegócio. Claro que, naturalmente, quemé atingido direta ou indiretamente poressas mudanças acaba reagindo.

Mas isso significa que, numa pri-meira, fase será necessário um grau ma-ior de internalização?

Em alguns casos sim. Por exemplo, oMinistério de Planejamento passou aoSerpro o sistema de planejamento queantes rodava numa empresa privada eeste é um dos sistemas mais importantes

do governo. No ano passado tivemosvários problemas de integração e queatrapalharam o andamento da aprovaçãoda lei orçamentária. E eram feitos emempresas privadas e isso não trouxe me-lhorias para o processo. Essa forma frag-mentária levou a inúmeros problemas eé o que está me levando a propor umpadrão mínimo de interoperabilidadedentro do Governo, uma norma que per-mita um mínimo para o fluxo de dadosdentro do setor público.

E como fica a capacitação dosfornecedores de software livre paraprocessamentos críticos e de grandeporte? Serão capazes de fornecer suporteem momentos de grande demanda?

É por isso que eu defendo a dis-cussão de novos modelos computa-cionais. Para abordar o processamentode grande porte com eficiência. Às vezesficamos engessados em relação às

RS

LM

RS

LM

maneiras usuais de pensar o grandeporte. Veja, o caso do sistema de paga-mento da União lida com um milhão emeio de contribuintes e mais de oitentabilhões de Reais em dinheiro. Aí vem apergunta: ele precisa necessariamenterodar em um ambiente de mainframe? Seolharmos de perto o sistema, veremosque ele faz 250 folhas de pagamento di-ferentes e que existem dados agregados.Se eu distribuísse essa carga em 250 sub-sistemas com processadores indepen-dentes eu poderia obter ganhos. Ou seja,se a aplicação fosse pensada para serdesmembrada, ou “distribuída”, poderiarodar em plataformas menores com cus-tos mais atraentes.

Assim, o problema então não está notamanho da aplicação mas na qualidadedo projeto que vamos fazer e daí aimportância de ter gente qualificada paracuidar disso. E não adianta ter projetosruins de Software Livre. Temos que sercriativos e elaborar sistemas mais leves emais baratos, adequados aos paísespobres. Daí podemos fornecer soluçõespara outros países que enfrentam dificul-dades como as nossas. Temos que noslibertar de paradigmas intensivos emhardware e desprovidos de inteligência.

O que falta ainda ser discutido naarena do Software Livre?

O que não custa reforçar é que odebate que nós fazemos em cima doSoftware Livre é mais profundo e porisso ele tem causado essa verdadeiracomoção junto aos fornecedores. Ele é odebate sobre o compartilhamento e agestão do conhecimento no futuro, umdebate vital para países periféricos comoo nosso, esses que estão ao Sul, abaixoda linha do Equador, e que não estão nomapa da microeletrônica mundial.

De nada adiantará termos ganhosenormes na agricultura se a cada veztivermos de pagar mais sacas de sojapara cada licença de software. O padrãode troca é determinado por quem detémo poder econômico e devemos lutar porregras que nos sejam mais favoráveis. Eé absolutamente legítimo que o façamos.Afinal, só assim estaremos defendendoos nossos interesses e contribuindo para,finalmente, ter o controle do conhe-cimento e o domínio da tecnologia quepoderá até mesmo elevar o país à catego-ria de exportador de soluções em Tec-nologia da Informação. ■

RS

LM

dentro do Governo Federal e que faz par-te do nosso esforço maior, geral, de criarinformação, documentação e especial-ização. O Software Livre é um vetor demudança se tivermos agentes capazes esuficientes para realizá-la.

Essa é uma ação pluripartidária ouestá ligada aos grupos ligados à basepolítica do Governo?

Ela é pluripartidária. Temos gover-nadores de grupos que não são da basedo governo e que têm endossado essasiniciativas, até porque o Estado Brasilei-ro precisa racionalizar seus gastos comurgência, o que é, aliás, uma cobrançada sociedade, cobrança da qual a área deTI não pode escapar.

Como fica a questão de internaliza-ção de serviços? O Governo não seguia atendência de concentrar sua atenção ematividades-fins?

Ao longo da história do EstadoBrasileiro, fomos perdendo coisas e oGoverno anterior, por exemplo, tinha aidéia de que a privatização era a solução.Eu não tenho nada contra a terceiriza-ção, desde que ela seja feita por quementende do negócio. Se você terceirizaáreas que estão ligadas diretamente àcadeia de valor do que você faz, vocêarrisca o negócio. No caso do Estado,isso compreendeu perder a inteligência,a gestão do processo. E como a admi-nistração pública pode tomar decisõessobre o cidadão com base em sistemasde informação dos quais ele não podesequer explicar o funcionamento? Se agente não sabe como o código foi feito,as regras de negócio utilizadas, nãosabemos se há mal uso das informaçõesou recursos públicos.

A gestão federal anterior optou poresvaziar as empresas públicas, e asempresas de tecnologia como o Serpro ea Dataprev ficaram excluídas de recur-sos para modernização. Então haviamuito dinheiro disponível, mas poucosbons projetos na área de tecnologia.Então precisamos rever essa questãoporque não é só dos grandes fornece-dores que o Governo Federal é depen-dente. Precisamos, portanto, comprarmelhor. Comprar tecnologia de umaforma em que não abandonemos o con-trole sobre o processo. Se comprássemoscomponentes e objetos em vez de soft-ware, conseguiríamos democratizar omercado para um universo muito maior

RS

LM

RS

LM

14 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Entrevista

Figura 2: Guia Livre, documento que o GovernoFederal colocou sob consulta pública no 5º FISL.

estatísticas sobre o comportamento devários usuários são valiosas na criaçãode um grande número de algorítmos nokernel. O subsistema de memória virtualé um exemplo de recurso do kernel quepode se beneficiar de uma contabilidadeprecisa no sistema.

Questões como que aspectos de umsistema em execução precisam estar naRAM ou em SWAP, e quando uma tran-sição deve ser feita, além do que fazerquando estes recursos se tornam escas-sos, são difíceis de responder, pois paracada sistema em particular há um com-portamento adequado diferente. ■

■Escondendo dadosGuillaume Lacôte começou a trabalharem um meio de esconder dados no níveldo mapeador de dispositivos, de modoque atacantes em potencial tenham difi-culdades em interpretar as informaçõesdisponíveis a eles. Isso envolve um algo-rítmo de compressão que, na verdade,não precisa comprimir nada.

A compressão tende a fazer com queos dados pareçam aleatórios, porque pa-drões são identificados e removidoscomo parte do processo. Guillaume tam-bém pretende usar uma forma de inter-leaving para adicionar dados aleatórios.

Ele espera que um agressor simples-mente desista, em vez de tentar separaro “lixo”. Há algum apoio entre os desen-volvedores à idéia, mas não há certezade que o método de Guillaume atingirá onível de “ofuscação” desejado. ■

■Só mais um recursoA tentativa de Marcelo Tosatti de fechara árvore do kernel 2.4 para a adição denovos recursos progride lentamente,enquanto ele tenta balancear as necessi-dades dos usuários com a necessidadedo processo de desenvolvimento do Li-nux de estabilizar as árvores de códigodas versões 2.4 e 2.6 e avançar em di-reção à 2.7. Recentemente ele aceitouum patch para suporte à tecnologia Se-rial ATA (SATA) no kernel, uma decisãocorajosa e de certa forma controversa, jáque o kernel 2.6 também suporta SATA.A razão é que uma boa parte do novo

hardware no mercado vem com contro-ladoras SATA. A árvore 2.6 ainda nãotomou conta da base de usuários devidoa várias mudanças radicais que ocorre-ram durante o desenvolvimento da série2.5, como novo código de módulos,novas ferramentas para compilação e ou-tros recursos que tornam difícil simples-mente trocar um kernel 2.4 por um 2.6.

Marcelo começou a se repetir, maisuma vez dizendo que “este é o últimorecurso que será adicionado ao 2.4”

A tarefa de Marcelo é difícil, porqueele precisa balancear a necessidade demanter o kernel 2.4 estável como o ker-nel Linux principal, enquanto aceitaalguns recursos julgados essenciais erejeita outros que, por uma razão ououtra, não são tão essenciais assim. ■

■Módulos, de um jeito fácilFico feliz ao ver nova documentaçãosobre o kernel, e recentemente SamRavnbourg escreveu um tutorial sobrecomo compilar módulos para um kerneljá compilado. O sistema de configuraçãoKBuild, tão controverso durante o desen-volvimento da série 2.5, fornece umasérie de recursos que facilitam a tarefa.

Para compilar um módulo, o usuárioprecisa do kernel já compilado e seucódigo fonte. Sam lista uma série decomandos ‘make’ para realizar tarefascomo compilar ou instalar módulos, ouremover arquivos objeto dos diretórios.Vale a pena dar uma olhada. ■

15Agosto 2004www.linuxmagazine.com.br

Kernel NOTÍCIAS

Notícias do Kernel A lista de discussão do kernel é o núcleo dasatividades de desenvolvimento do kernel doLinux. O volume de tráfego é imenso e estarem dia com todo o processo de desenvolvi-mento é uma tarefa impossível para uma sópessoa. Uma das poucas almas corajosas osuficiente para aceitá-laé Zack Brown.

Nossa coluna mensalmanterá você informa-do sobre as últimasdiscussões e decisões,selecionadas e resumi-das pelo próprio Zack,que já publica um resumo semanal, sob aforma da lista Kernel Traffic, há vários anos.Só a leitura do resumo já é uma tarefa queconsome um bom tempo. A LM agora lhe dáacesso à essência das atividades de desen-volvimento do kernel, direto da fonte.

INFORMAÇÕES

■Liberdade TotalJá faz algum tempo que o kernel Linuxdecide a quais recursos um módulo temacesso baseado em sua licença. Se omódulo exporta uma variável dizendoestar licenciado sob a GPL, terá maiorliberdade dentro do kernel.

A existência desta “variável da licen-ça” é controversa, assim como a legali-dade ou ilegalidade dos módulos binári-os; Mas alguns fabricantes de hardwareproprietário conseguiram evitar esta va-riável, de propósito ou inadvertidamen-te, de uma forma bem interessante.

A LinuxAnt é uma destas empresas, eusa a seguinte string na variável delicença: "GPL\0 for files in the \"GPL\"directory; for others, only LICENSE fileapplies". Note o '\0' depois de 'GPL'.Como na linguagem C o '\0' significa ofim de uma string, isso faz com que omódulo veja apenas a sigla GPL edescarte o resto da frase.

O resultado é que o módulo da Linux-Ant obtém acesso total ao kernel, apesardo fato de que nem todos os seus com-ponentes sejam livres. Alguns dosdesenvolvedores acreditam que a Linux-Ant adicionou o '\0' de propósito paraburlar a verificação, mas de qualquerforma, futuras versões do kernel nãoserão vulneráveis a truques deste tipo.Ainda assim, é interessante observar odesenvolvimento deste “recurso”. ■

■Contando os custosO projeto ELSA (Enhanced Linux SystemAccounting) começou como uma tenta-tiva de estender os mecanismos atuaisde contabilização de processos. Uma dasformas de atacar o problema é agruparos processos em “bancos” de processosrelacionados, que poderão ser analisadoscomo um grupo. Em teoria, outras coisasalém de processos podem ser inclusasnestes grupos, tornando possível chegara conclusões sofisticadas de acordo comos dados obtidos.

O problema de rastrear o uso dos re-cursos do sistema é crucial no design desistemas operacionais. Embora a maioriados usuários não tenha necessidade derastrear seu próprio comportamento, as

NOTÍCIAS Dicas de (In)Segurança

root). Esta vulnerabilidade existe apenasquando o Tripwire está gerando um e-mail de relatório.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0536. ■

Código de Referência do Mandrake:MDKSA-2004:057

■xpcdO xpcd é um visualizador de PhotoCD.Ele lê um arquivo com thumbnails e per-mite que você navegue pelas imagens.Uma vulnerabilidade no xpcd-svga, in-cluso no pacote xpcd, foi descoberta porJaguar. xpcd-svga usa a svgalib paramostrar imagens no console, e pode co-

piar dados de tamanho arbitrário forne-cidos pelo usuário em um buffer detamanho fixo na função pcd_open. Alémdisso, Steve Kemp descobriu um outrobuffer overflow no xpcd-svga que pode-ria ser causado pelo uso de uma variável$HOME muito longa. Isto poderia serexplorado por um agressor local paraobter privilégio de root no sistema.

O projeto “Common Vulnerabilitiesand Exposures” deu estes problemasdeu os códigos CAN-2004-0649 e CAN-2004-0402, respectivamente. ■

Código de Referência do Mandrake:MDKSA-2004:053Código de Referência do Debian:DSA-508-1 xpcd – buffer overflow

■Servidor KolabLuca Villani reportou a divulgação de in-formações críticas de configuração noservidor Kolab, parte do projeto KDEGroupware. As versões afetadas armaze-nam senhas OpenLDAP em texto puro. Ocoração do Kolab é um sistema escritoem Perl que reescreve os arquivos deconfiguração de certos aplicativos combase em templates. A função build() dei-xava o arquivo slapd.conf com permis-são global para leitura, exibindo a senhade root do OpenLDAP. ■

Código de Referência do Mandrake:MDKSA-2004:052

■mod_sslHá um buffer overflow no gerencia-mento de pilha da função ssl_util_uuen-code_binary, que faz parte do arquivossl_engine_kernel.c, nas versões domod_ssl para o servidor web Apache1.3.x. Quando o mod_ssl é configuradopara confiar na autoridade de certifi-cação, um agressor remoto pode execu-tar código arbitrário através de umcertificado do cliente com um campoassunto (DN) longo.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0488. ■

Código de Referência do Mandrake:MDKSA-2004:054

Dicas de (In)Segurança

16 Agosto 2004 www.linuxmagazine.com.br

Distribuição Referência de Segurança Comentários

Conectiva Info: http://distro2.conectiva.com.br/ Possui uma página específica sobre segurança, masseguranca/ não há link para ela na página principal. Os alertas sãoLista: [email protected] distribuídos através de e-mails assinados com a chave.com.br e http://distro2.conectiva.com.br/ PGP da empresa, para assegurar sua autenticidade, elista/ Referência:CLSA-... 1 contém links para os pacotes atualizados e para fontes

de referência sobre o problema sendo corrigido.

Debian Info: http://www.debian.org/security/ Alertas de segurança recentes são colocados naLista: http://lists.debian.org/debian- homepage e distribuídos como arquivos HTML comsecurity-announce/ Referência:DSA-… 1 links para os patches. O anúncio também contém uma

referência à lista de discussão.

Gentoo Info: http://www.gentoo.org/security/en/ Os alertas de segurança são listados no site degsla/index.html segurança da distribuição, com link na homepage.Fórum:http://forums.gentoo.org/ São distribuídos com o páginas HTML, e mostramLista: http://www.gentoo.org/main/ os comandos necessários para baixar versõesen/lists.xml Referência:GLSA: … 1 corrigidas dos softwares afetados.

Mandrake Info: http://www.mandrakesecure.net A MandrakeSoft tem seu próprio site sobre segurança.Lista: http://www.mandrakesecure.net/ Entre outras coisas, inclui alertas e referência a listas deen/mlist.php Referência: MDKSA-… 1 discussão. Os alertas são arquivos HTML, mas não há

links para os patches.

Red Hat Info: http://www.redhat.com/errata/ A Red Hat classifica os alertas de segurança comoLista: http://www.redhat.com/mailing “Erratas”. Problemas com cada versão do Red Hat-lists/ Referência:RHSA-… 1 Linux são agrupados. Os alertas são distribuídos na

forma de páginas HTML com links para os patches.

Slackware Info: http://www.slackware.com/ A página principal contém links para os arquivos dasecurity/ Lista: http://www.slackware. lista de discussão sobre segurança. Nenhuma infor-com/lists/ (slackware-security) mação adicional sobre segurança no Slackware estáReferência: [slackware-security] … 1 disponível.

SuSE Info: http://www.suse.de/uk/private/ Após mudanças no site, não há mais um link para a pá-support/security/ Patches: http://www. gina sobre segurança, que contém informações sobresuse.de/uk/private/download/updates/ a lista de discussão e os alertas. Patches de segurançaLista: suse-security-announce para cada versão do SuSE Linux são mostrado em ver-Referência:SUSE-SA … 1 melho na página de atualizações. Uma curta descrição

da vulnerabilidade corrigida pelo patch é fornecida1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.

Postura das Principais Distribuições quanto à Segurança

■TripwireTripwire é uma ferramenta que procurapor mudanças em seu sistema. O progra-ma monitora atributos chave de arquivosque não devem mudar, incluindo assina-tura binária, tamanho, mudanças espe-radas de tamanho, etc. Conhecida comouma ferramenta para detecção de intru-são, pode ser usada para muitos outrosfins, como verificação de integridade, ge-renciamento de mudanças e muito mais.

Paul Herman descobriu uma vulnera-bilidade relativa à uma string de forma-tação no programa. Isso permite que umusuário local execute um código qual-quer com as permissões do usuário queestá executando o tripwire (tipicamente

■LHALHA é um utilitário para arquivamento ecompressão de dados no formato LHarc.Ulf Harnhammar encontrou um bufferoverflow na pilha e falhas no tratamentode diretórios.

Um agressor pode explorar os múlti-plos buffer overflows na pilha, que ocor-rem na função get_header no arquivoheader.c do LHA 1.14, se criar umarquivo LHA cuidadosamente estrutu-rado de forma que o código seja execu-tado quando o arquivo é testado oudescompactado pela vítima. O projeto“Common Vulnerabilities and Expo-sures” deu a este problema o códigoCAN-2004-0234.

Um agressor pode explorar as múlti-plas falhas no tratamento de diretóriosno LHA 1.14 para possibilitar que agres-sores remotos, ou usuários locais, criemarquivos arbitrários usando arquivosLHA com (1) sequências fazendo refe-rência a .. e (2) caminhos absolutos combarras duplas (“//caminho/absoluto”).

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0235. ■

Código de Referência do Red Hat:RHSA-2004:178-09Código de Referência do Debian:DSA-515-1 lha – several vulnerabilities

■Krb5O Kerberos é um sistema de autenticaçãoem rede. Bugs foram encontrados nafunção krb5_aname_to_localname da bi-blioteca. Mais especificamente, bufferoverflows são possíveis em todas as ver-sões do Kerberos até a 1.3.3 (inclusive).

A função citada traduz um nome prin-cipal Kerberos para um nome de umaconta local, tipicamente um nome deusuário UNIX. Ela é freqüentementeusada na verificação de autorizações.

Se configuradas para mapear nomesprincipais Kerberos específicos paradeterminados nomes de usuário UNIX,certas funções chamadas por krb5_ana-me_to_localname não irão verificar otamanho dos buffers usados paraarmazenar partes do nome principal. Seconfigurado para mapear principais paranomes de usuários usando regras,krb5_aname_to_localname consistente-mente escreve um byte além do fim dobuffer alocado a partir da pilha.

Somente configurações que habilitemo mapeamento explícito ou baseado emregras que krb5_aname_to_localname()retorna são vulneráveis a esse problema.Essa configuração não é feita por padrão.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema onúmero CAN-2004-0523. ■

Código de Referência do Mandrake:MDKSA-2004:056-1Código de Referência do Red Hat:RHSA-2004:236-14

■EtherealO Ethereal é um programa para moni-torar e analizar tráfego de rede. O sepa-rador MMSE nas versões 0.10.1 a 0.10.3contém um buffer overflow. Em um sis-tema que esteja executando o Ethereal,um agressor remoto pode enviar pacotesmaliciosos que fazem com que o Ethe-real caia ou execute código arbitrário.Além disso, outras falhas em versões doEthereal anteriores à 0.10.4 foram encon-tradas, que fazem com que o programacaia em resposta à pacotes SIP, AIM ouSPNEGO especialmente construídos.

O projeto “Common Vulnerabilitiesand Exposures” deu a estas falhas os có-digos CAN-2004-0507, CAN-2004-0504,CAN-2004-0505 e CAN-2004-0506. ■

Código de Referência do Red Hat:RHSA-2004:234-06Código de Referência do Debian:DSA-511-1 ethereal – buffer overflows

■CVSO Concurrent Versions System (CVS)oferece ferramentas que permitem aosdesenvolvedores compartilhar e mantergrandes projetos de software e é freqüen-temente usado para para manter reposi-tórios de código-fonte.

Enquanto investigava uma vulnerabili-dade anterior, já corrigida, Derek Pricedescobriu uma falha relativa a linhas“Entry” mal-formadas que levam à faltade um terminador nulo na string. O pro-jeto “Common Vulnerabilities and Expo-sures” deu a esta falha o códigoCAN-2004-0414.

Stefan Esser e Sebastian Krahmer con-duziram uma auditoria no CVS e corrigi-ram uma série que problemas quepoderiam levar a falhas de segurança.Entre os itens considerados passíveis deexploração estavam:

• Uma condição double-free relacionadaà string error_prog_name.

• Ao enviar um grande número de argu-mentos ao servidor CVS, é possívelfazê-lo alocar uma grande quantidadede memória, que não cabe no espaçode endereçamento, causando um erro.

• Escritas fora dos limites na funçãoserv_notify()Um agressor com acesso a um servidor

CVS pode ser capaz de executar códigoarbitrário sob o UID que estiver execu-tando o servidor CVS.

O projeto “Common Vulnerabilitiesand Exposures” deu a estas falhas oscódigos CAN-2004-0416, CAN-2004-0417e CAN-2004-0418. ■

Código de Referência do SuSE:SuSE-SA:2004:015Código de Referência do Mandrake:MDKSA-2004:058Código de Referência do Red Hat:RHSA-2004:233-07Código de Referência do Debian:DSA-517-1 cvs – buffer overflow

■KDElibsO pacote kdelibs3 é um dos pacotes basepara o K Desktop Environment, ou KDE.O manipulador de URIs da biblioteca declasses do kdelibs e kdelibs3 contém u-ma falha que permite que atacantes re-motos criem arquivos com as permissõesdo usuário que está executando o pacotekdelibs/kdelibs3. Isto afeta aplicativosque utilizam o tal manipulador, comoKonqueror e KMail.

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha o códigoCAN-2004-0411. ■

Código de Referência do SuSE:SuSE-SA:2003:014

■SquidO Squid é um web proxy/cache. O apli-cativo auxiliar usado para autenticaçãoNTLM no Squid é vulnerável a um bufferoverflow que pode ser explorado remota-mente com o envio de uma senha longademais, o que leva a um estouro dobuffer, possibilitando a execução decódigo arbitrário. Se o Squid for configu-rado para trabalhar com autenticaçãoNTLM, essa falha pode ser explorada.

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha noSquid código CAN-2004-0541. ■

17Agosto 2004www.linuxmagazine.com.br

Dicas de (In)Segurança NOTÍCIAS

Quando iptables é configurado comopções TCP (--tcp-option), agressoresremotos podem levar o Kernel a pararutilizando pacotes TCP especialmentepreparados. Um sistema assim atacadotorna-se inacessível via rede.

Osuchowski e Dubinski fornecem adescrição e uma correção (patch) para oproblema em um Advisory no arquivoBugTraq. A correção consiste em modi-ficar o tipo da variável “opt”, que estádefinida como uma array de signed char,no tipo unsigned char ou U_int8_t, que écomo ela está declarada na mesma fun-ção do Kernel 2.4. ■

Código de Referência do SuSE:SuSE-SA:2004:020

■Linux Kernel IIDurante uma auditoria de segurança noKernel do Linux, Michael Schröder eRüdiger Örtel, ambos da empresa SuSE,descobriram um problema de segurança,que, sob certas circunstâncias, permite ausuários comuns realizarem modifica-ções não autorizadas no group ID dequalquer arquivo utilizando o comandochown. O group ID define a qual grupode usuários um arquivo pertence no sis-tema de arquivos. Agressores locais po-dem utilizar modificações no group IDno intuito de estender seus direitos deacesso até obter status de administradordo sistema (root).

O problema, que está documentadoem um Security Advisory, se encontra nachecagem incorreta do chamado Discre-tionary Access Control (DAC) na funçãofchown(). No entanto, esta vulnerabili-dade pode somente ser explorada paraarquivos que tenham sido exportadospor um servidor NFS e montados local-mente pelo usuário. Além disso, estafalha de segurança permite também mo-dificar o group ID de arquivos no di-retório /proc. Ainda de acordo com oSecurity Advisory, esta última alternativanão é possível para usuários que nãodisponham de status de administrador.

Tanto o Kernel 2.4 quanto o 2.6 estãocomprometidos pelo problema. Tanto aSuSE quanto Red Hat e Fedora disponibi-lizaram pacotes com a correção para oproblema (patches).

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha o códigoCAN-2004-0497. ■

Código de Referência do SuSE:SuSE-SA:2004:020Código de Referência do Red Hat:RHSA-2004:354-08

■PHP4/mod_php4PHP é uma linguagem script muito po-pular utilizada em servidores web paraoferecer conteúdo dinâmico.

Stefan Esser descobriu uma falha desegurança no código do interpretadorPHP com a qual um agressor remotopoder forçá-lo a atingir o limite de me-mória em determinados trechos de códi-go não preparados para esta condição, oque pode levar à execução de códigoarbitrário utilizando o ID do usuário ro-dando o interpretador.

Além disso, a função script_tags(), uti-lizada geralmente para validar a entradade usuários, pode permitir tags que ti-vessem o caracter null. Isso possibilita aagressores remotos a execução de ata-ques XSS (cross-site scripting).

Conectiva e SuSE disponibilizaram pa-cotes de atualização para o programaque corrigem esta vulnerabilidade.

O projeto “Common Vulnerabilitiesand Exposures” deu a estas falhas desegurança os códigos CAN-2004-0594 eCAN-2004-595. ■

Código de Referência da Conectiva:CLA-2004:847Código de Referência do SuSE:SuSE-SA:2004:021

■WebminKeigo Yamazaki reportou uma vulnera-

bilidade no webmin (até a versão 1.140)que possibilita a usuários não autentica-dos obter acesso de leitura à configura-ção de um módulo. O problema pode sersanado com a atualização do webminpara a versão 1.150, que pode ser baix-ada diretamente do site do projeto.

Várias distribuições disponibilizarampacotes de atualização do webmin queresolvem o problema.

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha o códigoCAN-2004-0582. ■

Código de Referência da Conectiva:CLSA-2004:848Código de Referência do Debian:DSA-526-1 webmin - several vulnerabilitiesCódigo de Referência do Gentoo:GLSA-200406-12

Código de Referência do SuSE:SuSE-SA:2004:016Código de Referência do Mandrake:MDKSA-2004:059Código de Referência do Red Hat:RHSA-2004:242-06

■GalleryUm bug foi descoberto no Gallery, um ál-bum de imagens escrito em PHP. Graçasa este bug, um agressor pode conseguiracesso ao usuário “admin” da galeria,sem a necessidade de autenticação.

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha o códigoCAN-2004-0522. O projeto Debian lan-çou uma atualização para o software ■

Código de Referência do Debian:DSA-512-1 gallery – unauthenticated access

■GatosSteve Kemp descobriu uma falha noxatitv, um dos programas do pacote ga-tos, usado para exibir vídeo em certasplacas de vídeo da ATI.

xativ é instalado com setuid root paraganhar acesso direto ao hardware devídeo. Normalmente o aplicativo aban-dona o privilégio de root logo após a ini-cialização. Contudo, se a inicializaçãofalhar devido à falta de um arquivo deconfiguração, os privilégios não são a-bandonados, e o xatitv usa a função sys-tem (3) para executar seu aplicativo deconfiguração sem limpar variáveis deambiente fornecidas pelo usuário.

Ao explorar esta vulnerabilidade, umagressor pode conseguir privilégios deroot caso o arquivo de configuração nãoexista. Contudo, um arquivo de configu-ração padrão é fornecido no pacote, por-tanto esta falha não pode ser explorada anão ser que o arquivo de configuraçãoseja removido pelo administrador.

O projeto “Common Vulnerabilitiesand Exposures” deu a esta falha o códigoCAN-2004-0395. ■

Código de Referência do Debian:DSA-509-1 gatos – privilege escalation

■Linux Kernel IAdam Osuchowski e Tomasz Dubinskidescobriram uma falha de segurança gra-ve no código do iptables que acompanhao Linux Kernel 2.6. O problema é que umtipo incorreto foi utilizado para umavariável da função tcp_find_option().

18 Agosto 2004 www.linuxmagazine.com.br

NOTÍCIAS Dicas de (In)Segurança

CAPARedes Locais

19www.linuxmagazine.com.br Agosto 2004

parece estar a apenas um passo dos di-nossauros. Hoje em dia, o livro de re-ceitas foi substituído por um laptop nacozinha, o seu “aparelho de som” nadamais é que um cliente que recebearquivos MP3 de um servidor central noarmário da bagunça, e nem é precisodizer que os meios de comunicação sãointeiramente eletrônicos.

Enquanto os escritórios ainda usamfios, as redes sem fio continuam seucrescimento em escritórios domésticos eredes familiares. Após organizar a partefísica da rede, é hora de escolher o soft-ware. Cada máquina na rede precisa deum endereço único; ela precisa saber emque rede reside, e qual computador eladeve consultar se precisar enviar dadospara fora da rede local.

A escolha é suaSuas opções são configurar do-lorosamente cada uma das má-quinas ou montar um servidorpara fazer o serviço. O esforçoextra vale a pena, especial-mente se sua rede continuara crescer e for necessáriofazer mudanças de confi-guração. Se precisar adi-cionar alguns laptopsaqui e ali, você vaigostar de distribui-ções modernas comsistemas de auxílioa modificações daconfiguração, co-mo o SCPM daSuSE.

Configura-ções novastendem aser pro-

blemáticas. Neste caso, ferramentas co-muns do Linux são de grande ajuda.Embora elas possam, a princípio, parecerdesconfortáveis, tais ferramentas estãopresentes em quase todas as distribui-ções, embora em alguns casos vocêtenha de instalá-las manualmente.

E quando sua rede estiver funcionan-do, você pode começar a distribuir tare-fas a máquinas individuais que vão ben-eficiar toda a rede, como por exemploum servidor DHCP ou de impressão. ■

Disquetes eram uma coisa comumaté poucos anos atrás. Talvez vo-cê ainda se recorde de quando

usava disquetes para distribuir planilhas,transportar o último capítulo de sua tesede mestrado do laboratório da universi-dade para casa ou para trocar as últimasnotícias com os amigos.

Olhando pra trás, esse tipo de “rede”

O computador isolado é uma espécie em extinção. Máquinas sem uma conexão com o mundo exterior estão rapida-

mente se tornando coisas do passado. Redes locais, conectadas os não à Internet, facilitam o trabalho e oferecem

possibilidades ilimitadas de entretenimento. POR PATRICIA JUNG

Simplificando o gerenciamento de redes locais

Caiu na Rede...

Tecendo a Rede .................20No momento em que você conecta sua má-quina a uma rede, não só se espera que vocêsaiba tudo sobre ela, mas também sobre aforma como ela se comunica com o mundo.Ferramentas comuns podem ajudá-lo.

Rede sem Estresse .............24Adicionar máquinas a uma rede significamais trabalho de configuração. Uma soluçãousando um servidor DHCP para atribuirendereços IP e outros valores às estações dáfim às dores de cabeça do administrador.

SCPM..................................30Mudar o ambiente de operação de umamáquina envolve muito trabalho de config-uração. O SCPM facilita a vida dos usuáriosdo SuSE ao manter perfis com diferentesconfigurações que podem ser trocados sem-pre que necessário.

Impressione os Amigos .....32Compartilhar uma única impressora commúltiplos usuários pode ajudá-lo a econo-mizar dinheiro e recursos. Conecte sua im-pressora a um servidor CUPS para permitirque Macs, e até mesmo máquinas Windows,tenham acesso à ela.

CAPA

[1] Gnome Human Interface Guidelines:http://developer.gnome.org/projects/gup/hig

[2] Freedesktop.org:http://www.freedesktop.org

INFORMAÇÕES

Assim como um navegador web nãonecessita saber se a informação estásendo transmitida via componentes“wireless” ou linhas FDDI e uma linhaFDDI não precisa saber se os bits que elaestá transportando pertencem a arquivosHTML, MP3s ou vídeos, especialistasusam um modelo de camadas (layers)para descrever redes de computadores.Como em uma cebola, cada camada éconstruída sobre as camadas inferiores,mas, fora isto, cada uma trabalha deforma independente das outras.

A camada de aplicação, como o nomesugere, define como aplicações, taiscomo navegadores ou programas deemail, “conversam” com servidores deInternet ou de email, respectivamente.Como isto ocorre exatamente dependeda aplicação. Por exemplo, o Protocolode Transferência de Hipertexto (HTTP) éutilizado na Internet, enquanto down-loads de arquivos normalmente sãofeitos utilizando o Protocolo de Transfe-rência de Arquivos (FTP).

A camada de transporte reside abaixoda camada de aplicação. Esta camadarealiza conexões entre computadores,

permitindo que eles troquem dados. OTCP cria uma fila de dados estável entreos pontos de rede (para os protocolos deaplicação HTTP, SSH, POP ou SMTP) eassegura que pacotes perdidos sejamretransmitidos. O outro protocolo maissignificativo neste nível é o Protocolo deDatagrama de Usuário (UDP), que podeperder pacotes (e é utilizado, por exem-plo, por “streams” do Real Audio).

As coisas começam a ficar realmenteinteressantes na camada de rede inferior.É nela que os pacotes de dados são colo-cados na mídia de transporte e tentamencontrar a melhor rota até o seu alvo.Para simplificar esta tarefa, cada pacoteinclui os endereços do transmissor e doreceptor. Quando uma página da Web étransmitida pelo servidor, os pacotes quea formam podem tomar rotas diferentes.Após aceitar tais pacotes, o receptor deveassegurar que eles serão “remontados”na ordem correta. Além do Internet Pro-tocol (IP), a camada de rede temprotocolos como o Internet Control Mes-sage Protocol (Protocolo de Controle para

Hoje em dia, um computador semuma conexão com o mundo láfora parece nos reportar a um

mundo pré-histórico.Embora todas as distribuições Linux

atuais instalem os elementos básicospara o funcionamento do computadorem uma rede, a responsabilidade por seugerenciamento ainda fica a cargo dosadministradores do sistema – e em al-guns casos o treinamento recebido nãocobriu como deveria todo o conjunto detécnicas associadas ao funcionamento deuma rede. Neste caso, faz sentido obter omáximo de conhecimento possível sobreo que pode acontecer com computadoresligados em rede.

Os problemas são variados: redesinteiras podem parar de responder, ouuma máquina (como o servidor de inter-net) pode tornar-se inacessível. Feliz-mente, a maioria das distribuições Linuxjá traz todas as ferramentas necessáriaspara solucioná-los.

Fundamentos de RedesInfelizmente, a maioria dessas ferramen-tas assume que você saiba exatamentecomo uma rede de com-putadores funciona. O pro-tocolo TCP/IP é o com-ponente básico da Internete de muitas redes locais.Ele é uma combinação doTransmission Control Proto-col (Protocolo de Controlede Transmissão - TCP) e doInternet Protocol (Protocolode Internet - IP), e especi-fica como os computadoresdevem se comunicar.

Máquinas em rede oferecem enormes benefícios, mas também significam

maior responsabilidade. A partir do momento em que você conecta sua

máquina à uma rede, não só se espera que você saiba tudo sobre ela, como

também sobre como ela se comunica com o mundo lá fora. Ferramentas

comuns podem ajudá-lo a chegar lá… POR NICO LUMMA

Ferramentas básicas

Tecendo a Rede

20 Agosto 2004 www.linuxmagazine.com.br

Tecendo a RedeCAPA

Figura 1: Os dados mostrados pelo comando ip addr incluem infor-mações importantes sobre seu endereço de IP. inet indica amáscara de rede.

DNS: Servidores DNS possuem bases de dadosque são utilizadas para mapear endereços IP anomes de servidores na Internet (e vice-versa),assim como ocorre em uma lista telefônica.Quando o usuário de uma aplicação de redetenta acessar um determinado domínio, taisbases de dados são utilizadas pelos servidoresDNS para converter o nome digitado noendereço IP do servidor.Assim,quando umusuário digita www.google.com.br,está naverdade acessando o servidor com o endereçoIP 216.239.51.104.Será com este endereço que onavegador abrirá uma conexão.

GLOSSÁRIO

Mali Veith,visipix.com

Mensagens na Internet - ICMP), para efe-tuar o controle de mensagens (tais comomensagens de erro), o Address Resolu-tion Protocol (Protocolo de Resolução deEndereços - ARP), que associa endereçosIP a endereços de hardware (MAC), e seuoposto, o protocolo RARP (ReverseAddress Resolution Protocol - Protocolode resolução reversa de endereço).

A camada mais inferior do modelo OSIde camadas é a camada física. Nestenível, a principal preocupação é com atransmissão de bits, bem como apadronização de protocolos para tratarde interfaces elétricas, mecânicas e desinalização. Isto inclui padrões como oRS-232 e X.21.

Os componentes de uma rede sãoidentificados através dos seus endereçosIP. O TCP pode retransmitir pacotes per-didos ou danificados, assegurando que oreceptor contará com, pelo menos, umconjunto completo dos pacotes envia-dos. Os protocolos de aplicação, pormais sofisticados que sejam, se baseiamneste serviço. Sem um pouco de conhe-

cimento sobre as camadas citadas acima,muitas ferramentas de rede não farãonenhum sentido.

Verificação de StatusAntes de começar a analisar o tráfico dedados na rede, é importante certificar-sede que seu computador está realmenteutilizando a rede como deveria.

Para encurtar a história, cada máquinanecessita um endereço IP (também co-nhecido como IP Address) único para sercapaz de comunicar-se com as outrasmáquinas da rede. Um gateway permiteque pacotes de dados com destino àInternet possam deixar a rede local.

O comando ip fornece detalhes sobre asua configuração atual. Sistemas maisantigos talvez tenham somente oscomandos ifconfig e route, que mostrama mesma informação, embora de formaligeiramente diferente. Se o seu shell nãoé capaz de encontrar nenhum destescomandos, pode ser que eles tenhamsido instalados no diretório /sbin, quenão está normalmente no search path

(rota de busca) do sistema. Neste caso,basta informar o caminho inteiro quandoquiser rodar o programa (ex: /sbin/ip).

A opção addr indica ao comando ipque ele deve fornecer dados sobre aplaca de rede. A linha finalizada por eth0indica a primeira placa de rede do sis-tema (eth1 é a segunda – possivelmenteutilizada para WLAN, e assim pordiante). Ela mostra o endereço IP docomputador (192.168.1.245 na Figura 1),a máscara de rede (/24), o endereço debroadcast (192.168.1.255) e o nome dainterface de rede (eth0).

O resultado do comando ip route émais fácil de ler (ver Figura 2). Aprimeira linha mostra a rede (o endereçoda rede no nosso exemplo é 192.168.1.0)e a netmask (/24), a interface de rede e,por fim, a chamada data source (por issoo termo src, indicando “source”) que é oendereço IP (192.168.1.245). A segundalinha indica o default gateway, cujoendereço IP é 192.168.1.1.

Caso informações importantes, taiscomo os endereços IP da máquina e do

21Agosto 2004www.linuxmagazine.com.br

CAPATecendo a Rede

Figura 2: o utilitário ip route mostra informações claras a respeito d0endereço IP de sua máquina.

Figura 3: A máquina alvo, que tem o endereço IP 192.168.1.1, respondeu atodos os cinco pings.

Figura 4: traceroute mostrando a rota para “www.linuxmagazine.com.br”. Figura 5: o mtr combina os resultados de traceroute e ping.

Figura 3), quantas respostas retornaram(cinco novamente) e quanto tempo istolevou para acontecer (4002 milisegun-dos). Se pacotes fossem descartados ouperdidos, tais estatísticas os mostrariamem uma seção chamada packet loss. Se ocomputador alvo não está acessível,nada acontece por um tempo, enquantoo ping aguarda por respostas.

O comando ping hostname transmitepacotes ICMP sem parar até que vocêpressione [Ctrl-C]. Você também podeespecificar ping -c 10 hostname paratransmitir apenas dez pacotes.

RotasEnquanto ping só mostra se o computa-dor alvo está respondendo, traceroutemostra todo o caminho que os pacotesde dados tomaram até atingi-lo (verFigura 4). Os asteriscos (*) indicam que

um erro ocorreuno roteamento, ouque um firewallbloqueou a pas-sagem deste tipode pacote de da-dos. Aliás, a opção-n pode ser uti-lizada para evitarque os hostnamessejam mostrados.Para indicar qual ainterface de rede aser usada, utilize aopção -i.

O comando mtrtargethost mostraa rota dos pacotes

de forma mais clara (ver Figura 5), poisindica exatamente onde os pacotes estãotendo atrasos maiores (caso você nãopressione a tecla [q]). Para cada trechoda rota, mtr descobre o que está aconte-cendo com os pacotes de dados. Por isso,mtr pode ser visto como uma combi-nação entre ping e traceroute. Porexemplo, o comando:

mtr -c 10 --report Utargethost

informa ao mtr para transmitir apenasdez pacotes, parar e fornecer umrelatório. A coluna HOST indica onde opacote de dados se encontra, LOSSinforma a porcentagem de pacotesdescartados ou perdidos, RCVD e SENTmostram, respectivamente, quantos pa-cotes foram recebidos e enviados e ascolunas BEST, WORST e AVG informamquanto tempo a transmissão dos pacoteslevou, no melhor e no pior dos casos, etambém na média.

Para obter maior precisão…… experimente usar tcpdump, a ferra-menta de análise de rede de mil e umautilidades. A maioria das distribuiçõesLinux já fornece um pacote de insta-lação. Caso contrário, o código fontepode ser baixado em [1]. Se quiser com-pilar seu próprio binário, você vaiprecisar da biblioteca libcap.

O tcpdump precisa de privilégios deadministrador para rodar, uma vez queele coloca a placa de rede em modo“promíscuo”, o que permite a ela ler

gateway, estiverem faltando aqui, istopode explicar porque o seu computadornão está se comportando como deveriana rede. Neste caso, rode a ferramentade configuração da sua distribuição(como o YaST, no caso do SuSE Linux),verifique a configuração de rede do seusistema e tente novamente.

Ping-Pongping é uma ferramenta simples paraanálise da rede, mas é também extrema-mente prática. Ela transmite pacotes dedados ICMP do seu computador para umcomputador alvo e mostra o tempo quecada resposta leva para retornar ao seucomputador – assumindo que o com-putador alvo responda. A seção final doresultado de um ping é um grupo deestatísticas que mostram a você quantospacotes foram transmitidos (cinco na

22 Agosto 2004 www.linuxmagazine.com.br

Tecendo a RedeCAPA

Figura 6: iptraf é útil, mesmo sem uma configuração e filtro exclusivos. Figura 7: Quantos pacotes estão indo e vindo para qual endereço?

Figura 8: iptraf fornece estatísticas detalhadas sobre a rede.

quaisquer pacotes que passem pelainterface de rede local, inclusive a cap-tura de dados.

O tcpdump mostra todos os pacotes dedados que aparecem na interface daplaca de rede:

11:56:27.833598 192.168.1.245 U

.ssh > 192.168.1.20.39258: P U

1392512:1392720(208) ack 1201 U

win 9120 <nop,nop,timestamp U

2599771999 1711932971> (DF) U

[tos 0x10]

Em nosso exemplo pode ser visto que amáquina com o IP 192.168.1.245 enviouum pacote de dados ssh para a máquinacom o IP 192.168.1.20. Digite:

tcpdump -i eth0 port 80

e os dados destinados à porta TCPnúmero 80 – comumente utilizada porservidores de Internet – serão mostrados.Por outro lado, tcpdump host targethostfornecerá o tráfico de rede em targethost.

Pra onde?É importante instalar ferramentas espe-cializadas de modo a não ficar “noescuro” no que concerne à utilização darede. O iptraf é um exemplo. Ele mostraexatamente o que está acontecendo coma placa de rede, que protocolos estãosendo utilizados atualmente e com queoutras máquinas a máquina sob análiseestá “conversando”. Pressione as teclas[q] e [Enter] para encerrar o programa.

No menu principal (ver Figura 6) háum item chamado IP Traffic Monitor (verFigura 7), que fornece uma visão geraldo tráfego dos dados na rede, e permite aidentificação de pontos de sobrecarga.

Por outro lado, o item Detailed Inter-face Statistics (ver Figura 8) não indicaquais máquinas estão trocando dados,

mas analisa o fluxo do tráfego, classifi-cado por protocolo. Isto fornece infor-mações úteis sobre a taxa transferênciade dados e indica onde se encontramproblemas de performance (os chama-dos gargalos ou bottlenecks). Por exem-plo, se há mais saída do que entrada dedados, pode-se assumir que alguém estábaixando algo do seu micro.

Teríamos muito mais a relatar sobreiptraf e outras ferramentas mencionadasneste artigo. Se o leitor quer melhorarseus conhecimentos nesta área, não háalternativa: adquira o máximo de con-hecimento e experiência possível. ■

CAPATecendo a Rede

[1] Tcpdump: http://www.tcpdump.org

[2] IPTraf:http://cebu.mozcom.com/riker/iptraf

[3] Conjunto de protocolos da Internet:http://en.wikipedia.org/wiki/TCP/IP

[4] Protocolo TCP:http://en.wikipedia.org/wiki/Transmission_Control_Protocol

[5] Protocolo IP: http://en.wikipedia.org/wiki/Internet_Protocol

Nico Lumma é oDiretor de TI daOrangemedia.deGmbH, empresaespecializada nacomercialização deespaço publicitárioonline, e conta comanos de experiência no uso do Linuxem ambientes empresariais.SO

BRE

O A

UTO

R

INFORMAÇÕES

Mesmo que exista uma lista organizadados endereçamentos IP já atribuídos (eque você saiba onde essa lista se encon-tra), se você precisar reestruturar suarede (por exemplo, adicionar um novoservidor de nomes, alterar a máscara darede ou mesmo utilizar um outroroteador para acesso às redes públicas),terá que reconfigurar individualmentecada estação já existente.

Até os visitantes que normalmentetrazem consigo laptops precisam saber

alterar esses parâmetros para poderemutilizar a rede local. Seja franco : Vocêsabe como fazer a configuração de redeno MacOS 7.6 ? Ou se lembra como fazera configuração no Windows 98 ?

O DHCP (Dynamic Host ConfigurationProtocol, ou Protocolo de ConfiguraçãoDinâmica de Hosts), tem as repostas àestas perguntas. Para usar DHCP você sóprecisa configurar um computador paraser o servidor DHCP. Feito isso, essamáquina será responsável pelo gerencia-

mento das configurações derede de todas as outras máqui-nas ligadas a essa rede. Alémdos parâmetros tradicionais derede, você também poderádefinir outros parâmetros espe-cíficos como o servidor de hora(timeserver) e o servidor WINS.

Muitas máquinas…Com o que isso se parece emum caso prático ? Vamos anal-isar uma pequena rede privada.

Não importa se for para a suaempresa, para a organização deum evento, ou mesmo para a

organização do seu escritório pessoal,configurar cada computador de umarede individualmente é sinônimo de bas-tante trabalho. Um administrador de sis-temas pode configurar individualmente esem problemas parâmetros como ende-reços IP, Netmask, Default Gateway e oDNS (Domain Name Server) para cadamáquina. Agora procure imaginar umgrupo de pessoas, com os maisdiferentes níveis de instrução eexperiência, tentando executaressa tarefa, e você certamenteterá uma grande surpresa.

A medida em que o número demáquinas aumenta, mesmo osadministradores mais experientesterão problemas para manter econfigurar uma rede. Cada ende-reço IP só pode ser assinalado aum único Host (ou nó) da rede,para que não hajam conflitos.

Adicionar máquinas à uma rede significa muito trabalho com a configuração inicial. Uma solução centralizada,

utilizando um servidor DHCP para atribuição automática de endereços IP às máquinas clientes, evita muitas

dores de cabeça aos administradores. POR MICHAEL RENNER

Servidor DHCP para redes locais

Rede sem Estresse

24 Agosto 2004 www.linuxmagazine.com.br

Servidor DHCPCAPA

01 default-lease-time 3600;02 max-lease-time 14400;0304 subnet 192.168.2.0 netmask 255.255.255.0 {05 range 192.168.2.50 192.168.2.69;06 option domain-name-servers 194.25.2.129;07 option broadcast-address 192.168.2.255;08 option routers 192.168.2.1;09 }

Listagem 1: Um exemplo simples,porém completo, do dhcpd.conf

Nessa caso, “privado” significa que arede utiliza uma faixa de endereços IPnão roteáveis. Para evitar confusão essesendereços podem ser utilizados nas re-des locais (LANs) porém não são utiliza-dos na Internet (rede pública).

Grandes redes privadas de computa-dores, chamadas de redes classe A,podem utilizar endereços IP no intervaloque vai de 10.0.0.0 a 10.255.255.255. Jáas redes privadas de tamanho médio, ouredes classe B, podem utilizar endereçosIP entre 172.16.0.0 e 172.31.255.255. Sesua rede não for tão grande assim, vocêpode usar um dos 65023 endereçoscontidos na faixa entre 192.168.0.0 e192.168.255.255.

Pequenas redes utilizam apenas umaclasse C. Vou tomar como exemplo ocaso da minha rede doméstica, que temo endereço 192.168.2.0. Isso também éútil para estabelecer uma rede local emum condomínio.

… e um só servidorA máquina que vai fornecer todos osendereços IP’s necessita de um programaservidor de DHCP. Não existem muitasimplementações livres desse programa.Nós optamos por trabalhar com o ISCDHCP server, dhcpd, como a maioria daspessoas fazem.

Se você quiser compilar o programa, ocódigo fonte está disponível na Internetem [1]. A maioria dos usuários prefereminstalar o pacote fornecido por sua dis-tribuição. Usuários Debian podem fazerisso com o comando :

apt-get install dhcpd

Usuários de outras distribuições geral-mente encontram um pacote RPM nosCDs ou DVDs de instalação. Caso con-trário, vá ao site http://rpmfind.net/ eprocure por DHCP.

Após a instalação, você encontrará oarquivo de configuração dhcpd.conf nodiretório /etc/. Esse arquivo é bem docu-mentado, o que facilita a tarefa de alteraros parâmetros nos exemplos deste artigode forma que a refletir o ambiente da suarede. Pare um pouco e pense sobre onúmero de computadores que irão aces-sar a rede ao mesmo tempo. Se vocêestiver organizando uma LAN Party, porexemplo, este pode ser um número bemgrande. Uma rede residencial raramentepossui mais do que 10 máquinas.

O exemplo da Listagem 1 assume queno máximo 20 máquinas necessitam deacesso simultâneo à rede. Queremos queo servidor dhcp, dhcpd, assinale osendereços IP dentro do intervalo entre192.168.2.50 e 192.168.2.69. Utilizare-mos também o parâmetro domain-name-servers para definir os servidores DNS eo parâmetro routers para especificar ogateway para a Internet. Se você não temum servidor DNS na sua rede local, use ofornecido pelo seu provedor de Internet.

Note os colchetes que englobam adefinição de um segmento de rede. Ecada linha de configuração é terminadapor um ponto-e-vírgula.

Livremente configurávelEm termos gerais, existem dois tipos deentradas no arquivo de configuração:uma que se inicia com uma palavrachave (conhecida como option) e o valor

que a mesma assume. Essas opções (vejavisão geral na Tabela 2) são passadaspara uma máquina cliente a cada vezque são solicitadas. A capacidade docliente processar as informações obtidasno servidor DHCP depende do sistemaoperacional. Administradores podemdefinir scripts que especificarão comoessas informações serão processadas.

As entradas restantes são utilizadaspelo próprio servidor, dhcpd. A Tabela 1apresenta os principais parâmetros.

Atribuição permanenteSe você se decidir por utilizar DHCP nasua rede, haverá com certeza semprealguns computadores que necessitarãode endereçamento IP estático. Afinal decontas, não faz sentido ter que adivinharqual o endereço IP do gateway oumesmo de um servidor de arquivos antesde acessá-lo, certo?.

O arquivo /etc/dhcpd.conf também éutilizado para clientes que necessitam deparâmetros específicos. O servidordhcpd verifica o MAC Address (único porplaca de rede) da máquina cliente queestá requisitando um endereço e faz aatribuição correta.

O MAC Address vem normalmenteimpresso em uma etiqueta colada aoscartões de rede PCMCIA e nas placasWireless LAN USB. Se você não puder lero MAC Address na placa, é possíveldescobrir esse endereço através decomandos específicos do seu sistemaoperacional. Nos sistemas baseados emUnix você pode utilizar o comando ifcon-fig, já os sistemas operacionais daMicrosoft usam o comando ipconfig. A

25Agosto 2004www.linuxmagazine.com.br

CAPAServidor DHCP

01 renner@lyra:~$ /sbin/ ifconfig eth002 eth0 Link encap:Ethernet HWaddr 00:02:2D:34:90:8503 inet addr:10.32.130.79 Bcast:10.32.135.255

Mask:255.255.248.004 UP BROADCAST NOTRAILERS RUNNING MULTICAST

MTU:1500 Metric:105 RX packets:15695 errors:0 dropped:0 overruns:0

frame:006 TX packets:10988 errors:204 dropped:0 overruns:0

carrier:007 collisions:0 txqueuelen:10008 RX bytes:5201433 (4.9 MiB) TX bytes:1559490 (1.4

MiB)09 Interrupt:10 Base address:0x100

Listagem 2: Utilizando ifconfig paradescobrir o MAC Address

Figura 1: O MAC Find correlaciona MAC Addresses e fabricantes de hardware.

cional de rede sem fio), você poderáassinalar o mesmo hostname para osdois endereços MAC :

host lyraB {hardware ethernet U

00:80:C7:C1:3D:76;fixed-address lyra.mtr.mynet;

}

Em alguns casos, você pode até substi-tuir uma placa de rede enquanto amáquina está funcionando sem sequerinterromper a conexão! Ao invés dohostname, que requer um servidor DNS,você pode assinalar um endereço IP.

Uso avançado do DHCPO DHCP pode fazer ainda mais! É pos-sível informar a um cliente que não pos-sui um disco rígido qual imagem de umdado sistema operacional (boot image)deve ser baixada e executada. Isso é pos-sível devido à utilização do protocoloTFTP (Trivial File Transfer Protocol), umsubprotocolo do FTP, para transferirinformação através da rede. A Listagem4 apresenta um exemplo onde umaworkstation SGI Indy procura seu kernelLinux via DHCP. Esse sistema não éusado apenas em aplicações de cluster-ing, mas também em laboratórios deinformática utilizados por alunos emUniversidades e Faculdades.

O boot pela rede funcionará apenas seo servidor tftpd estiver habilitado em/etc/inetd.conf. Para permitir que umservidor encontre a imagem de boot

Listagem 2 apresenta um exemplo deexecução do comando ifconfig em umamáquina Linux, cujo MAC Address, ouHardware Address, (endereço de hard-ware) é 00:02:2D:34:90:85.

Não se preocupe se você não conse-guir acessar a máquina diretamente, poiso servidor dhcpd mantém um registro detodos os endereços IP atribuídos e oprazo de validade no arquivo /var/lib/-dhcp/dhcpd.leases.

Uma alternativa é mandar um ping atodas as máquinas da rede, e depois exe-cutar o comando arp -a para encontrartanto o endereço IP quanto o MACAddress do computador em questão(veja mais na Listagem 3). Lembre-seque você precisa primeiro enviar o ping,pois a tabela do arp só inclui osendereços dos hosts com os quais seucomputador já se comunicou.

26 Agosto 2004 www.linuxmagazine.com.br

Servidor DHCPCAPA

01 renner@lyra:~$ ping -c3 192.168.2.002 PING 192.168.2.0 (192.168.2.0): 56 data bytes03 64 bytes from 192.168.2.1: icmp_seq=0 ttl=64 time=0.2 ms04 64 bytes from 192.168.2.52: icmp_seq=0 ttl=64 time=3.5 ms (DUP!)05 64 bytes from 192.168.2.53: icmp_seq=0 ttl=64 time=4.2 ms (DUP!)06 64 bytes from 192.168.2.62: icmp_seq=0 ttl=64 time=4.7 ms (DUP!)07 [...]08 renner@lyra:~$ /usr/sbin/arp -a09 ? (192.168.2.1) at 00:03:E3:00:18:F1 [ether] on eth010 ? (192.168.2.52) at 00:30:05:55:02:ED [ether] on eth011 ? (192.168.2.53) at 00:0C:6E:1F:32:C4 [ether] on eth012 ? (192.168.2.62) at 00:30:05:55:03:7F [ether] on eth0

Listagem 3: Como descobrir oMAC Address com arp e ping

Figura 2: Ativando o cliente DHCP no Mandrake Linux. Figura 3: O Mac OS X suporta DHCP.

Qual MAC Address?De qualquer forma, você ainda precisasaber qual destes MAC Addresses é o quevocê está procurando. Em alguns casos,pode ser aconselhável manter umatabela [2] com os endereços fornecidospelos fabricantes das placas de rede(veja Figura 1).

Após descobrir o endereço de hard-ware (MAC), você pode adicionar umaentrada de mapeamento estático deendereço IP na configuração do dhcpd :

host lyraA {hardware ethernet U

00:02:2D:34:90:85;fixed-address lyra.mtr.mynet;

}

Se o computador possui múltiplas inter-faces de rede (exemplo, um cartão adi-

especificada (no nosso exemplo oarquivo indy_r4k_tftpboot.img), vocêprecisa especificar o caminho completopara o servidor (/boot) :

tftp dgram udp wait nobody U

/usr/sbin/tcpd U

/usr/sbin/in.tftpd /boot

Distribuições que utilizam o modernoxinetd, ao invés de inetd, precisam do

arquivo /etc/xinetd.d/tftp, cujo conteúdoaparece na listagem 5.

Um único servidor DHCP pode supor-tar o gerenciamento de múltiplos seg-mentos de rede ao mesmo tempo. Parafazer isso, você deverá criar uma entradade subnet para cada segmento de rede naconfiguração do dhcpd. Os parâmetros(options) entre parênteses como DNS edomínio NIS, devem ser únicos. Em apli-cações práticas, cada segmento de rede é

designado a uma pla-ca de rede distinta doservidor DHCP.

Deve-se reiniciali-zar o dhcpd para queas alterações feitasno arquivo de confi-guração se tornem a-tivas. Uma vez feita aconfiguração do ser-vidor DHCP, altera-ções são muito raras.Desta forma, o admi-nistrador da rede fica

livre de trabalho adicional a cada vezque uma nova estação ou servidor é co-nectado à rede local.

Máquina clienteAs novas máquinas não necessitarãomais de excessiva configuração inicialpara funcionar. Basta habilitar o clienteDHCP nessas máquinas. Dependendo dosistema operacional (e possivelmente dadistribuição Linux) existem vários méto-dos para habilitar o cliente DHCP. Sevocê for um usuário Debian, deve adi-cionar uma linha como :

iface eth0 inet dhcp

no arquivo /etc/network/interfaces. Out-ras distribuições possuem ferramentasgráficas para configuração da interface.A Figura 2 mostra um assistente de con-figuração do Mandrake Linux.

Usuários do Windows devem utilizar aferramenta de Rede (Network) no painelde controle. Usuários do MacOS devemacessar o painel de controle (Control

27Agosto 2004www.linuxmagazine.com.br

CAPAServidor DHCP

01 host indy {02 filename "indy_r4k_tftpboot.img";03 hardware ethernet 08:00:69:08:58:40;04 fixed-address 192.168.2.12;05 server-name "cassiopeia.mtr.mynet";06 option host-name "indy";07 option domain-name "mtr.mynet";08 option domain-name-servers 192.168.2.53;09 option routers 192.168.2.1;10 }

Listagem 4: Indicandouma imagem de boot

Entrada Parâmetro Significadodefault-lease-time Tempo em segundos Especìfica o prazo de validade dos parâmetros designados. O

cliente precisa renovar a concessão do endereço IP após esse período. Se o cliente não fizer isso, o endereço IP poderá ser assina-lado a outra máquina.

max-lease-time Tempo em segundos Especifica o período máximo de validade dos parâmetros designados Se o cliente requisitar um default-lease-time maior que o configurado, o servidor então apresenta o max-lease-time.

subnet Endereço de Rede Segmento de rede ao qual a configuração se aplica (veja Quadro 1).netmask Máscara de Rede Máscara do segmento de rede ao qual a configuração se

aplica (veja Quadro 1).range Primeiro e último endereço IP Faixa de endereços IP a serem distribuídos pelo servidor DHCP.fixed-address Endereço IP ou hostname Endereço fixo a ser designado a um cliente específico.filename Nome do arquivo Imagem de boot para um cliente (veja “Uso Avançado

do DHCP”, à página 26).hardware ethernet Endereço MAC Endereço de hardware do cliente.

Tabela 1: Parâmetros do dhcpd

Além do endereço IP, a configuração de umdispositivo de rede inclui o endereço debroadcast e a máscara da rede. Esta máscaraé utilizada para subdividir uma rede em sub-redes menores.Para entender a relação entre endereço IP emáscara de rede é necessário fazer umaanálise em nível de bits. Para fazer isso,vamos converter cada número decimal parabase 2 (binário):255=1*(2^7)+1*(2^6)+1*(2^5)+1*)2^4)+1*(2^3)+1*(2^2)+1*(2^1)+1*(2^0)Dessa forma, convertendo a máscara de rede

255.255.255.0 do formato decimal parabinário temos :11111111.11111111.11111111.00000000Evidentemente, não fizemos nenhumgrande esforço matemático para realizaressa conversão. O número 1 aparece 24 vezese por esse motivo a rede também é co-nhecida como uma rede “/24”.Aplicando a mesma técnica para o endereçoIP 192.168.2.3, teremos o equivalente binário :11000000.10101000.00000010.00000011O endereço de rede é um AND bit a bit (bit-wise) entre o endereço IP e a máscara. O

resultado dessa operação é 1 quando ambosos bits do IP e da máscara forem iguais a 1, ezero para os demais casos. O resultado doAND bit a bit é :11000000.10101000.00000010.00000000Convertendo o número de binário para deci-mal o resultado é 192.168.2.0.Como o IP zero é reservado para o endereçoda rede (no exemplo 192.168.2.0) e o últimoendereço, tipicamente 255 (no exemplo192.168.2.255) é reservado para o endereço debroadcast, podemos afirmar que a rede apre-sentada pode acomodar até 254 máquinas.

Quadro 1: Endereço IP, Máscara e Endereço de Rede

01 # default: off0203 service tftp04 {05 disable = no06 socket_type = dgram07 protocol = udp08 wait = yes09 user = root10 server = /usr/sbin/in.tftpd11 server_args = -s /boot12 }

Listagem 5: Arquivo/etc/xinetd.d/tftp

Existem alguns truques que tornampossível o uso de versões antigas dodhcpd no kernel 2.6. A princípio, estacombinação deveria funcionar, mas odhcp-client usa o script /sbin/dhclientpara verificar a versão do kernel. Como omesmo não reconhece o kernel 2.6, oprograma se encerra nesse ponto. Comoo DHCP precisa diferenciar apenas entreo kernel 2.0 e as versões mais novas,você pode modificar o script para recon-hecer 2.6 como uma versão válida dokernel, como mostrado a seguir:

2.[123456].*)exec /sbin/dhclientU-2.2.x -q "$@";;

Adicione o número “6”, como apareceem negrito acima, aos números entrechaves, e rapidamente você terá um cli-ente DHCP funcionando, sem quaisquerproblemas adicionais, podendo conti-nuar a desfrutar do conforto de receberautomaticamente seu endereço IP. ■

Panel) TCP/IP no menu Apple. NoMacOS X, (veja Figura 3) habilite oDHCP em System Preferences / Network.

ConclusãoNão existem muitos clientes DHCP paraLinux. Um deles, o pump, é bastantepopular entre as mini-distribuições devi-do ao seu tamanho reduzido. Versõesmais completas, como o dhcp-client e odhcpd, têm funções adicionais, como apossibilidade de executar um script apósa configuração do endereço IP.

28 Agosto 2004 www.linuxmagazine.com.br

Servidor DHCPCAPA

Entrada (sem parâmetro) Parâmetro Significadorouters Hostname ou endereço IP Roteadores ou gateways para acesso à Internet.domain-name-servers Hostname ou endereço IP Servidor de Nomeshost-name Hostname Hostname do cliente.ntp-servers Hostname ou endereço IP Servidor de hora, para sincronismo.netbios-node-type 1,2,4 ou 8 (recomendado) Tipo de resolução para Windows. 1-broadcast, 2-unicast,

4 ambos (primeiro tenta-se broadcast, depois unicast),e 8 é o modo híbrido que utiliza método unicast, depois broadcast.

netbios-name-servers Hostname Servidor WINS para resolução de nome de Internet para sistemas Windows.

domain-name Domínio Nome do domínio da rede.nis-domain Domínio Nome do domínio NIS.nis-servers Hostname ou endereço IP Servidor NISsubnet-mask Máscara Máscara do segmento de rede

Tabela 2: Parâmetros do Cliente

Endereço IP: Cada máquina presente na redeé identificada através de um único endereçoIP de 32 bits. Para facilitar a memorização eleitura, os endereços IP são apresentados embase decimal separados por ponto, onde cadasegmento do endereço pode ser um númeroentre 0 a 255. Além da faixa de endereços IPglobalmente acessíveis, existe também umaoutra faixa de endereços IP utilizados emredes privadas. Esses últimos não sãoacessíveis através de redes públicas.Netmask: Netmask, ou máscara de rede, é uti-lizada para definir um segmento de rede. Asmáquinas utilizam máscaras de bits paraidentificar se um dado endereço pertence àssuas próprias redes.Veja o Quadro 1 para umentender melhor o funcionamento.Name Server: Um Domain Name Server, ouDNS, provê a facilidade de traduzir nomessimbólicos de hosts (por exemplo, linux-mag-azine.com) em endereços IP (62.245.157.219) evice-versa. DNS é uma base de dadoshierárquica distribuída para resolução denomes. Cada servidor não precisa possuir umalista completa de todos os hostnames, pois oprotocolo permite a requisição de nomesentre servidores.Default gateway: Máquina na rede localpara a qual as máquinas enviam todos ospacotes com destino fora da rede local.

Timeserver: Servidor que provê um horárioúnico à todas as máquinas da rede. Os fusoshorários são calculados tendo como referên-cia a hora oficial na Inglaterra, medida a par-tir da linha do Meridiano de Greenwich, doRoyal Observatory em Greenwich.WINS:Windows Internet Naming Service, daMicrosoft. Mapeia o nome NetBIOS de umcomputador Windows para o seu endereço IP.Um servidor WINS tem uma função especialna rede. Se existirem muitas máquinas comWindows na rede, o servidor WINS pode pre-venir mensagens broadcast indesejadas. Oprojeto Samba possue suporte à WINS.Broadcast: Mensagens indiretas em broad-cast são utilizadas para atingir múltiploshosts, sem a necessidade de adição de nen-huma informação específica sobre cada umdeles. Mensagens em broadcast podem econ-omizar banda quando se deseja falar comvárias máquinas, porém devem normalmenteser evitadas por causar sobrecarga na rede.Unicast: O servidor envia uma cópia de umdado a cada cliente. Conexões ponto-a-pontodesse tipo são facilmente configuráveis, mascausam sobrecarga no servidor se o númerode clientes simultâneos for grande.NIS: O NIS (Network Information Service)facilita a propagação de configurações emuma dada rede. O servidor NIS provê infor-

mações de login, senhas, diretórios home,privilégio de grupos de usuários e hostnames.Isso permite que um servidor NIS envie infor-mações dos arquivos de configuração parauma máquina cliente, tais como /etc/passwd,/etc/groups, ou /etc/hosts. Um arquivochamado /etc/nsswitch.conf especificaquando um servidor NIS provê informaçõespara os arquivos de configuração, e que tipode informação deve ser enviada. Um métodoalternativo é ter o servidor DHCP configuradopara transmitir informações sobre o servidorNIS na rede local.MAC Address: O MAC Address (Media AccessControl), ou mais comumente conhecidocomo endereço Ethernet, e um número hexa-decimal de 6 bytes. O MAC Address é gravadoem cada dispositivo Ethernet, e permite acada dispositivo ser unicamente identificado.Cada fabricante tem uma faixa de MACAddresses e assinala um endereço para cadaequipamento uma única vez.Boot image: Um kernel Unix ou Linux espe-cialmente adaptado que é obtido através darede local e depois executado pelo cliente. Istopermite a montagem de uma rede onde osclientes não possuem unidade de disco emontam um sistema de arquivos raiz (/)remoto. Um uso típico são laboratórios deensino em escolas e universidades.

GLOSSÁRIO

Michael Renner trabalha comoadministrador de rede e de sistemasUNIX no Instituto Max-Planck emTübingen, na Alemanha. Além deadministrar sistemas Linux, IRIX eFreeBSD, ele também é o respon-sável pelo suporte técnico dosusuários do instituto no dia-a-dia,tarefa que ele gentilmente classificacomo auto-flagelação.

SOBR

EO

AUTO

R[1] DHCP Server:

http://www.isc.org/index.pl?/sw/dhcp/

[2] MAC database:http://www.coffer.com/mac_find/

INFORMAÇÕES

ples comando. Como alternativa, vocêpode simplesmente selecionar um perfildurante a inicialização.

O SCPM é um componente padrão doSuse Linux desde a versão 8. Assumindoque você não o apagou manualmente, ogerenciador de perfis já deve estar insta-lado em seu sistema e pronto para uso.

O módulo Profile Manager do YaST,encontrado no grupo System, o ajuda aconfigurar o SCPM [Figura 1]. Você tam-bém pode digitar yast2 profile-manager eexecutar diretamente a ferramenta.

Perfis já existentes são exibidos na telaprincipal do gerenciador de perfis. Vocêpode adicionar um novo perfil ou modi-ficar a configuração existente. O botãoOptions lhe permite modificar ou criargrupos de recursos (veja a Figura 2).

Sua configuração corrente é usadacomo ponto de partida quando você criaum novo perfil. O SCPM cria um di-retório com o nome do novo perfil sob/var/lib/scpm/profiles/, e copia os ar-quivos de configuração para os grupos

de recursos especificados para o dire-tório recém criado.

GruposAdministradores podem usar grupos derecursos para especificar a quais serviçosas configurações de um perfil se aplicam.Por exemplo, o SCPM só salva seusajustes de impressão se você habilitar ogrupo Printer. Se você não habilitar esterecurso específico, as configurações nãoserão afetadas por uma mudança de per-fil, e a configuração atual será mantida.

OLinux caminha a passos largospara o mundo dos laptops, emáquinas portáteis são especial-

mente propensas a trabalhar em ambi-entes heterogêneos. Mesmo que vocêgeralmente se conecte à Internet usandouma rede com fio, pode esporadica-mente ter de usar uma rede wireless, oumesmo ficar sem conexão. Outro bomexemplo é o uso de laptops ora em ambi-ente de escritório, ora em ambientedoméstico. No escritório você pode dis-por de uma docking station com monitorexterno, enquanto em sua casa você usao monitor LCD que acompanha defábrica o laptop. O Suse Linux possuiuma ferramenta chamada SCPM, Sis-tema de Configuração e Gerenciamentode Perfis, que ajudar sua máquina a seadaptar rapidamente a um novo ambi-ente de trabalho.

Perfis PreservadosO SCPM salva um conjunto completo deparâmetros do sistema operacional paracada ambiente de trabalho em perfis,permitindo a você restaurar as configu-rações quando preciso. Os perfis deusuários não são apenas compostos porarquivos de configuração,mas também contém in-formações adicionais taiscomo quais serviços de-vem estar habilitados oudesabilitados. Isto tornapossível fazer todas asmudanças necessárias pa-ra adaptação a um novoambiente com um sim-

Alterar o ambiente de operação de

uma máquina envolve muito traba-

lho de configuração. O SCPM facilita a

vida dos usuários do Suse, ao manter

perfis com várias configurações.

POR FALKO ZURELL

Gerenciando a configuração de sistemas com o SCPM

Mudança de Ares

30 Agosto 2004 www.linuxmagazine.com.br

SCPMCAPA

#scpm dbSCDB Utility (SCPM version 0.9.4)loadcreate resource U/opt/tomcat/conf/server.xml filesavequit

Listagem 1: o modo bancode dados do SCPMAtivar o SCPM scpm enable

Criar um novo perfil scpm add nome_perfilMudar de perfil scpm switch nome_perfilSalvar alterações no perfil atual scpm saveCopiar um perfil scpm copy perfil_fonte perfil_destinoMostrar o perfil ativo scpm activeListar perfis disponíveis scpm listRecarregar configuração do perfil atual scpm reload

Tabela 1: Comandos do SCPM

Figura 1: O YaST2 o ajuda a configurar o SCPM.

Alguns grupos de recursos pré-defini-dos são criados quando o SCPM é insta-lado. Estes grupos cobrem a maioria dasconfigurações e incluem parâmetros derede (network), o serviço NTP para sin-cronização do relógio através da Internet(ntpd), o Firewall (SuSEfirewall2) e oautomounter – montagem automática devolumes (autofs). Se nenhuma destasopções atende suas expectativas, vocêpode definir seu próprio grupo.

No ambiente em que testamos a ferra-menta, o módulo para o YaST apresentoumau funcionamento no indicador de sta-tus. Ele insiste em informar que o ge-renciador de perfis está desabilitado,independentemente do seu estado real.Caso o usuário, de forma inadvertida,tente inicializar o gerenciador de perfismais de uma vez, não ocorrerá nenhumproblema no SCPM, pois o banco dedados e os templates não são sobre-scritos nesta operação. O SCPM permiteao usuário forçar a sobrescrita do bancode dados com o uso de um parâmetro nalinha de comando.

Praticamente não há limites aoaumento das capacidades do gerenciadorde perfis, já que você pode dizer aoSCPM para executar scripts antes oudepois do início ou fim de uma mudançade configuração (veja a Figura 3).

Quando você seleciona um perfil dife-rente, o SCPM primeiro executa os doisscripts de parada, e o alerta no caso dealterações não salvas. Então sistema exe-cuta o script de pré-inicialização, buscano banco de dados os arquivos de con-figuração para o novo perfil e as aplicaao sistema. O SCPM verifica se os

serviços estão sendo executados e certi-fica-se de aplicar o status necessário. Oúltimo passo da mudança de perfis é aexecução script de parada pós-inicializa-ção (post-stop script).

Se você quiser especificar um perfildurante a inicialização do computador,basta especificar o parâmetro PROFILE=profile_name no menu de boot paradizer ao SuSE para já carregar a configu-ração adequada. O script /etc/init.d/boot.scpm é o responsável por isso.

Se você muda regularmente de perfildurante o boot, talvez queira adicionaralgumas entradas com parâmetros dokernel pré-configurados ao arquivo deconfiguração do seu gerenciador de boot(no YaST2 em System/Bootloader Confi-guration). Adicione uma nova sessãocom os mesmos parâmetros do kernelpadrão e altere simplesmente o parâme-tro PROFILE= para carregar o perfil req-uisitado no próximo boot.

Linhas de ComandoMesmo sabendo que o YaST torna o tra-balho de configurar o SCPM muito maisfácil, seu uso contínuo para alterar umperfil pode se tornar irritante, e a linhade comando é uma alternativa Caso vocêopte por utilizar a linha de comando,certifique-se de que tem privilégios deroot – afinal, você estará modificando aconfiguração do sistema – e utilize umpequeno conjunto de comandos simplespara executar a tarefa de forma rápida. ATabela 1 traz uma listagem dos coman-dos mais importantes. Por exemplo, ocomando scpm switch ISDN habilita umperfil chamado ISDN.

As alterações só podem ser aplicadasao perfil corrente, não importa se vocêusa o YaST ou a linha de comando paraefetuá-las. Para fazer isso, alterar suaconfiguração de forma usual. Quandovocê estiver satisfeito, execute scpm savepara gravá-las. O SCPM vai listar todasas alterações para que você as confirmeantes de aplicá-las ao seu perfil.

Se você precisa alterar arquivos deconfiguração que estão sendo ignoradospelo SCPM devido à sua configuração derecursos, pode fazer alterações manual-mente no modo de base de dados intera-tiva (veja Listagem1). O comando load éextremamente importante, pois carrega obanco de dados na memória e o abrepara edição. Se você se esquecer de car-regar o banco de dados e salvar suasalterações, ele será sobrescrito com umarquivo que conterá apenas estas alte-rações recentes.

Caso você sobrescreva seu banco dedados de configuração por engano, nãose desespere. O SCPM salva as três últi-mas versões dele no diretório /var/lib/scpm/scdb/. O banco de dados atual temo nome scdb.db, os arquivos de backupgerados pelo sistema têm alguns carac-teres aleatórios adicionados ao nomeoriginal. E é fácil criar um backup de umperfil, você só vai precisar do arquivoscdb.db, e de uma cópia do diretório/var/lib/scpm/profiles. ■

31Agosto 2004www.linuxmagazine.com.br

CAPASCPM

Figura 2: Módulo YaST2 do SCPM – Configuração de grupos de recursos. Figura 3: Diversas possibilidades de implementação de um perfil.

[1] SuSE Linux: http://www.suse.com/

[2] YaST: http://www.suse.de/en/private/products/suse_linux/prof/yast.html

INFORMAÇÕES

executado durante a inicialização. Se asua distribuição favorita não inclui oCUPS, ou se você desejar atualizar parauma versão ainda não empacotada porela, é possível baixar o código-fonte nosite oficial do CUPS [1].

Antes do surgimento do CUPS, as dis-tribuições costumavam trabalhar comsistemas de impressão menos poderosos,como o BSD ou LPRng. Ambos eram bas-tantes difíceis de serem integrados emum ambiente de rede. Caso você aindatenha uma distribuição muito antiga,seria conviente considerar a substituiçãodo servidor de impressão pelo CUPS. Adocumentação do CUPS contém maisinformações sobre esse assunto [2].

Não é necessário modificar nenhumaplicativo para utilizar o CUPS, e seusprogramas irão interagir com ele tanto deforma nativa (como é o caso dos aplica-tivos do KDE) quanto através doscomandos de impressão System-V, ouBerkeley. Esses últimos são as ferramen-tas de impressão de linha de comando lpou lpr, normalmente invocados pelasaplicações. O CUPS traz versões com-patíveis desses programas. Esses coman-dos são úteis quando se deseja enviarum arquivo para impressão utilizandoapenas a linha de comando. O manualdo usuário do CUPS [2] explica essescomandos em detalhes.

Configuração através dainterface WEBAo contrário do antigo sistema LPRng, oCUPS foi baseado no Protocolo deImpressão via Internet (IPP – InternetPrinting Protocol, [3]), que é uma exten-são do protocolo HTTP atualmente uti-lizado para transferir páginas através daInternet. Isso também explica porque oIPP utiliza um paradigma similar para atransmissão de dados: Um computador,conhecido como cliente CUPS, enviadados de impressão para um servidorCUPS. O daemon cupsd, que roda emsegundo plano no servidor, recebe essesdados e os processa antes de enviá-lospara a impressora. Em outras palavras ocupsd é o núcleo do sistema CUPS.

Você pode acessar a interface de con-figuração do CUPS com qualquernavegador, basta visitar o endereçohttp://localhost:631. Se o CUPS está ro-dando em outra máquina, substitualocalhost pelo nome dessa máquina. Porsegurança, o CUPS não permite acessoexterno à interface web, portanto aprincípio é necessário acessá-la no pró-prio computador que executa o servidor.Se quiser permitir configuração remota,será necessário alterar o arquivo de con-figuração /etc/cups/cupsd.conf. Procurepelas seções entre as tags <Location/…> e </Location> (veja a Figura 1).

Computadores antigos que foramsubstituídos por desktops novospodem ser utilizados como servi-

dores de impressão de uma rede. Umservidor de impressão não permitesomente compartilhar uma impressora,mas também retira do seu desktop astarefas de impressão, permitindo que eledesempenhe suas tarefas na velocidademáxima. Em redes domésticas, usuáriosdistintos usam impressoras distintas.Enquanto o pai da família imprime um e-mail em uma impressora laser, seus fi-lhos podem estar imprimindo fotos daúltima festa em uma impressora jato detinta. Esse cenário já não existe na maio-ria das empresas, onde um servidor deimpressão como o CUPS (Common UnixPrinting System) permite que clientescom sistemas operacionais da Microsoft,Apple ou mesmo o Linux tenham acessoa qualquer impressora na rede.

Primeiros passosDois passos são necessários para ter umservidor CUPS disponível em uma rede.Primeiramente, você deverá configuraros computadores onde as impressorasestão conectadas, estes serão os servi-dores de impressão. Essas máquinaspodem ser sistemas desktop comuns oumesmo servidores dedicados, que nãonecessitam de interface gráfica (GUI). Asdistros atuais normalmente instalam oCUPS por padrão e também fornecemferramentas de configuração. Geral-mente o CUPS é configurado para ser

Compartilhar uma impressora com

múltiplos usuários economiza di-

nheiro e recursos. Basta criar um

servidor CUPS para que até mesmo

Macs e sistemas Windows possam

entrar na brincadeira.

POR TIM SCHÜRMANN

Configurando o servidor de impressão CUPS

Impressione os Amigos

32 Agosto 2004 www.linuxmagazine.com.br

Impressão em redeCAPA

As tags Location contém detalhes decomo o CUPS deverá controlar o acessoàs várias seções da interface de configu-ração. <Location /> se refere ao menuprincipal, e <Location/ admin> se re-fere ao item Administration. Adicionar alinha Allow From 192.168.0.16 permitiráque o host 192.168.0.16 acesse a inter-face de configuração. Por razões de segu-rança não se recomenda permitir quesenhas sem criptografia trafeguem pelarede. O FAQ do CUPS [4] apresenta umavisão geral sobre privilégios de acesso.

A interface web permite que seususuários gerenciem e configurem o CUPS(veja Figura 2). Os usuários podem tam-bém visualizar a fila de impressão (ocomando lpstat pode ser usado para amesma finalidade). De preferência uti-lize o programa de configuração deimpressora que vem na sua distribuição,por exemplo, o SuSE Linux possui a fer-ramenta YaST. Existe também outrocomando, o lpadmin, que possui algu-mas opções adicionais se comparado àinterface web [2]. Caso você não tenhagostado de nenhum dos métodos de con-figuração até aqui apresentados, vocêainda pode optar por um dos muitossoftwares de configuração desenvolvidospara esse fim. Por exemplo, versõesrecentes do KDE possuem um compo-nente especial para essa tarefa, encon-trado no Control Center (Centro deControle) dentro da sessão Hardware/Printers (veja Figura 3).

Nos exemplos a seguir vamos utilizar ainterface web. A opção Printers te dáacesso às filas de impressão (veja Figura

4). Cada fila deimpressão tem umnome diferente econfigurações in-dividuais, e vocêpode atribuir múl-tiplas filas de im-pressão a uma ú-nica interface ouimpressora. A in-terface para a qualos documentos deuma fila de im-pressão são envi-ados é definidapor um identifi-cador de recurso(URI – UniformResource Identifi-er). A notação é similar à usada noendereço de uma página na internet. Porexemplo: parallel:/dev/lp0 indica a pri-meira impressora conectada à uma portaparalela, e usb:/dev/usb/lp0 para a pri-meira impressora ligada à uma portaUSB. Use o comando lpinfo -v para mos-trar uma lista de todas as interfaces dis-poníveis. Vamos voltar ao assunto dasURIs mais tarde.

Para criar uma nova fila de impressão,selecione o item Administration na inter-face web e clique em Add Printer.Informe o nome da fila de impressão nocampo Name, lembrando-se de respeitaro limite máximo de 127 caracteres. Nastelas seguintes você deve informar ainterface na qual a nova impressora estáconectada, qual é o modelo da impres-sora e finalmente o filtro GhostScript

(que alguns cha-mam de “driver”)apropriado.

Nos passos des-critos na seqüên-cia, assume-se queo CUPS tenha sidocorretamente con-figurado no com-putador ao qual aimpressora está li-gada (o servidorde impressão), eque você tenhaconseguido impri-mir uma página deteste, clicando emPrinters/Print TestPage.

33Agosto 2004www.linuxmagazine.com.br

CAPAImpressão em rede

Figura 1:A diretiva Allow permite que o computador com o endereço IP192.168.0.16 acesse a interface web remotamente.

Configuração da máquinaclienteO segundo passo é configurar os com-putadores que vão utilizar a impressoracompartilhada (clientes). Existem váriasformas de fazer isso, porém o denomi-nador comum reside no fato de que odaemon CUPS, cupsd, precisa estar emexecução como um processo em se-gundo plano. Algumas distribuições sóexecutam o daemon automaticamentedurante a inicialização se uma impres-sora já tiver sido configurada. No SuSELinux 9, o YaST tem uma opção que per-mite iniciar o servidor de impressão maistarde. Para fazer isso, selecione Change/Advanced e depois CUPS Server. Se oprograma de configuração de sua distronão permite isso, escreva um script deinicialização do CUPS e o adicione aosníveis de execução (runlevels) 3 e 5 nodiretório /etc/init.d/

Anunciando a impressoraVocê deve informar à máquina clientedetalhes sobre a impressora remota, parapermitir ela seja encontrada na rede.Para fazer isso, abra em seu navegador apágina de administração do servidorCUPS como mencionado anteriormente.Nas propriedades da impressora, sele-cione IPP (Internet Printing Protocol)como o dispositivo (Device). Então, dig-ite a URI da impressora remota, porexemplo: ipp://meuservidor/printers/mi-nhaimpressora. Substitua meuservidorpelo nome ou endereço IP do servidor deimpressão, e substitua minhaimpressorapelo nome da fila de impressão. Os pro-

Figura 2: A página de boas-vindas da interface web do servidor CUPS.Paravisitá-la, é necessária a configuração correta das permissões de acesso.

nome, ou preferencialmente o endereçoIP, do servidor que processará todos ostrabalhos de impressão (veja Figura 6).

O terceiro método talvez seja o maisconveniente. Cada daemon CUPS divul-ga periodicamente sua configuração paratoda a rede. As máquinas clientes querecebem essas configurações imediata-mente passam a utilizá-las. A principalvantagem desse método reside na simpli-cidade da configuração, pois você só teráque configurar a nova impressora nocomputador onde ela está conectada e arede toda poderá utilizá-la automatica-mente. Evidentemente, a divulgação daconfiguração via broadcast não é amaneira mais segura de se trabalhar.Qualquer computador pode receber estasconfigurações e passar a utilizar a im-

pressora, e no pior caso seria possível aqualquer usuário da internet usar suaimpressora. Por padrão, as versões maisrecentes não divulgam mais a configu-ração via broadcast.

Contudo, várias ferramentas de confi-guração permitem a correta definiçãodas opções de broadcast. Novamentevamos usar em nosso exemplo o YaST doSuSE Linux. Os items que você necessitaalterar estão em Change/Advanced/CUPSServer Settings (veja Figura 7). Para con-figurar manualmente o servidor, edite oarquivo /etc/cups/cupsd.conf. Linhas quecomeçam com o caracter # são consider-adas comentários e portanto ignoradaspelo CUPS. Cada parâmetro ocupa umalinha e consiste em uma palavra chave eseu conteúdo. Consulte a referência [2]

gramas de configuração fornecidos pelamaioria das distribuições Linux possuemopções similares (Figuras 5a e 5b mos-tram o SuSE Linux). Repita o procedi-mento para cada fila de impressãoremota. Reconheço que este método deconfiguração é bastante complexo, prin-cipalmente quando se tem um grandenúmero de impressoras.

É de bom senso configurar o CUPSpara usar o servidor de impressãoremota para cada trabalho, de forma aevitar a execução do daemon do CUPSnas máquinas clientes. Para isso énecessário alterar o arquivo de configu-ração /etc/cups/client.conf na linha quecomeça com ServerName. Remova o car-acter # no início da linha e após ServerName insira um espaço e adicione o

34 Agosto 2004 www.linuxmagazine.com.br

Impressão em redeCAPA

Figura 5a: Configurando uma impressora remota no Suse Linux 8.2. Primeiro,diga ao YaST que você deseja acessar uma impresora remota via IPP...

Figura 5b: ...e a seguir informe o nome do servidor e a URI para completar aconfiguração.

Figura 3: Detalhe da configuração do sistema de impressão no Centro deControle do KDE. Entre outras, há uma opção para reiniciar o daemon CUPS.

Figura 4: A entrada “Printers” na interface de administração do CUPS listatodas as filas de impressão reconhecidas, incluindo suas URIs.

para uma visão geralsobre os parâmetros evalores. O arquivo deconfiguração do CUPStambém possui peque-nas explicações sobreos vários parâmetros,além de fornecer algunsbons exemplos.

Para que o servidorde impressão divulgue aconfiguração via broad-cast, você deve procurarpelas linhas do arquivode configuração que começam com Browse.Por exemplo, o valorpara o parâmetro BrowseInterval define ointervalo, em segundos, no qual o servi-dor deverá transmitir. O parâmetroBrowseAddress define o endereço debroadcast. Por exemplo, BrowseAddress192.168.0.255 envia as informações doservidor de impressão a todos os com-putadores na subnet 192.168.0.0.

Uma alternativa últil ao broadcast é oPolling. Nesse caso, é a máquina clienteque toma a iniciativa de pedir a configu-ração ao servidor de impressão. Noarquivo cupsd.conf na máquina cliente,configure o parâmetro BrowsePoll com oendereço IP do servidor. É possível con-figurar múltiplas entradas com a palavrachave BrowsePoll, permitindo que amáquina cliente peça a configuração amúltiplos servidores de impressão. Aohabilitar o parâmetro BrowseRelay amáquina cliente divulga as informaçõesque aprendeu com os servidores paratodas as máquinas da subnet local.

Reinicializando o daemonApós alterar o arquivo cupsd.conf, o dae-mon CUPS precisa ser reinicializado. Ocomando exato depende da distribuiçãoque você estiver utilizando. Usuários doSuSE Linux podem executar /etc/init.d/cups restart. Se você tiver utilizado oYaST para alterar a configuração, essaferramenta já se encarrega de reiniciar odaemon. A partir daí, a janela deimpressão do KDE apresentará a lista deimpressoras prontas para uso (vejaFigura 8).

Se as opções acima não funcionam,verifique os hostnames. Você deve adi-cioná-los ao arquivo /etc/hosts para quea transmissão ocorra com sucesso.

Estranhos no ninhoVocê também pode integrar qualquer sis-tema operacional que suporte IPP ao seusistema de impressão. Isso inclui o MacOS X versão 10.2 ou superior. Se vocêtem um Mac e quer compartilhar suaimpressora, simplesmente marque aopção Printer Sharing (Compart. deImpressora) dentro do item Services nopainel Sharing (Compartilhamento), naspreferências do sistema. Estas impresso-ras serão apresentadas como SharedPrinters na janela de impressão.

No caso de versões mais antigas doMac OS, você vai precisar do pacotenetatalk. Adicione uma entrada paracada impressora no arquivo de configu-ração papd.conf. O importante aqui é secertificar de que você possui o arquivoPPD correto para cada impressora dentrodo diretório /etc/cups/ppd:

Description:MyPrinter@MyServer:\:pr=|/usr/bin/lp -d MyPrinter:\:op=daemon:\:pd=/etc/cups/ppd/MyPrinter.ppd:

O Windows 2000 e Windows XP tambémpossuem suporte nativo ao IPP. Qual-quer outra versão do Windows precisado Samba versão 2.0.6 ou mais recente.Adicione as duas linhas abaixo à sessão[Global] do arquivo de configuração dosamba, smb.conf:

printing=cupsprintcap name=cups

Distribuições Linux recentes já devemestar configuradas desta maneira porpadrão. Clientes Windows vão precisarde um driver de impressora que sejacapaz de gerar saída no formato Post-Script, como o Apple LaserWriter.

Se você preferir utilizar o driver origi-nal da impressora, você deverá configu-rar uma nova fila de impressão no seuservidor CUPS. Selecione raw devicecomo o modelo da impressora. Essaoperação informará o CUPS para enviaros dados vindos da máquina cliente dire-tamente para a impressora. Note quedesta forma os computadores sem o dri-ver original da impressora não con-seguirão utilizá-la.

A versão 2.2 do Samba, ou maisrecente, exporta o driver da impressoraautomaticamente quando um clienteWindows tenta imprimir. O cupsaddsmb,como usado nos exemplos a seguir, pode

interpretar somente dri-vers Adobe PostScript[6], ou então seus pró-prios drivers. Os driversda Adobe só estão dis-poníveis no formatoEXE, e você deverá pri-meiro executar um pro-grama, como por exem-plo o Winzip para ex-trair os arquivos. Arma-zene-os no diretório/usr/share/cups/drivers.Todos os nomes dosarquivos deverão estarem letras maiúsculas.

Modifique a configu-ração do Samba deforma a permitir que o

35Agosto 2004www.linuxmagazine.com.br

CAPAImpressão em rede

Figura 6:Após habilitar o redirecionamento, somente o computadorno IP 192.168.0.20 precisará de um servidor de impressão, e quaisquertrabalhos serão redirecionados a esta máquina.

Figura 7: Habilitando broadcast no YaST. Em nosso exemplo, infor-mações sobre as impressoras conectadas ao servidor são transmitidasà subnet 192.168.0.

ipp://…, informe a URI na forma smb://workgroup/server/sharename. Se a im-pressora estiver conectada a uma má-quina Windows NT ou Windows 9x queexige uma senha de acesso, esta senhadeverá ser informada na URL, noseguinte formato smb://user:password@workgroup/server/sharename.

Opções avançadasEsse artigo aborda apenas a configuraçãobásica do CUPS como servidor de

impressão em rede. O próximo passoseria configurar permissões de acesso esegurança. Por exemplo, é possívelatribuir quotas de impressão e senhas.Talvez isso não faça muito sentido sevocê estiver configurando o CUPS narede local de sua casa, a menos que vocêtenha uma cara impressora laser coloridae deseje controlar sua utilização. Aosadministradores de rede, recomendamosuma leitura atenta da documentação.

As classes, conjuntos de impressoras,também fornecem opções úteis. Quandoum trabalho de impressão é enviadopara uma classe, o servidor CUPSimprime esse trabalho na primeiraimpressora livre dentro da classe. Ainterface Web apresenta uma forma sim-ples e conveniente uma forma de config-urar essas classes.

A documentação fornecida pela suadistribuição também pode conter infor-mações preciosas para auxiliar nasolução de problemas; caso contrário, dêuma olhada no FAQ do CUPS [2]. Os“logs” armazenados em /var/log/cupstambém podem conter dicas úteis. ■

servidor de arquivos exporte o driver daimpressora. (em caso de dúvida, con-sulte a documentação do Samba paramais detalhes de como fazer isso), e dê ocomando cupsaddsmb -U root -a paraexportar sua impressora e colocar os dri-vers no servidor. Note que o cupsaddsmbusa o usuário root para copiar osarquivos do driver utilizando o programasmbclient. Certifique-se que o Sambatem permissão de acesso à essa conta.

O Samba também possui um novoback-end chamado smbspool que per-mite às máquinas Linux utilizar impres-soras compartilhadas em máquinasWindows. Sua distribuição já deve con-figurar esse back-end corretamente, mascaso contrário, execute, como root, oseguinte comando : ln -s `which smbpool`/usr/lib/cups/backend/smb. Isso permiteque você configure a impressora damesma forma que uma impressoraremota conectada a um servidor CUPS.Ao invés de utilizar um endereço como

36 Agosto 2004 www.linuxmagazine.com.br

Impressão em redeCAPA

[1] Projeto CUPS: http://www.cups.org[2] IPP: http://www.pwg.org/ipp/[3] CUPS FAQ: http://www.danka.de/

printpro/faq.html[4] Netatalk: http://netatalk.sourceforge.net[5] Adobe: http://www.adobe.com

INFORMAÇÕES

Figura 8:Após completar a configuração, a janelade impressão do KDE deve ter uma lista dasimpressoras remotas e seus detalhes.

IPP: O Internet Printing Protocol foi criadopelo Printer Working Group, e foi baseado naespecificação HTTP 1.1, mas o daemon escutana porta 631 (ao invés da porta 80). Os doisprotocolos são muito próximos, e algumasimplementações IPP, como o CUPS, podem seracessadas de modo nativo através de HTTP.

Imprimir é algo bastante simples, quando sepensa sobre o assunto. Um usuário selecionao item Imprimir em um menu e o programaenvia todos os dados para a impressora, quecria uma certa quantidade de papel com oconteúdo do arquivo. Mas certamente aimpressão não é algo tão simples quantoparece à primeira vista.

O primeiro problema que surge é a possibili-dade de o computador travar durante oprocesso de impressão. A maioria dasimpressoras simplesmente não possuimemória suficiente para suportar aimpressão de um documento inteiro. Paraevitar esse problema, os sistemas deimpressão utilizam um programa separado,chamado spooler, para prover o cachenecessário para o armazenamento das infor-mações a serem impressas na forma da bemconhecida fila de impressão. O spooler moni-tora a impressora e só envia a próxima partedo trabalho de impressão quando a impres-sora está pronta para imprimir novamente.No caso do CUPS, o daemon cupsd (tambémconhecido como scheduler) é quem cuidadessa tarefa.

A grande variedade de modelos de impres-soras é um outro assunto. Cada um utilizauma sequência de controle distinta, ou seja,uma linguagem diferente. Um aplicativo quepretende enviar um documento paraimpressão necessita formatar os dados de

maneira que a impressora os entenda. Infe-lizmente, para fazer isso o aplicativo teriaque falar a mesma liguagem de todas asimpressoras do mercado. Como isso é prati-camente impossível, existem filtros quefazem a tradução entre o spooler e a impres-sora. Essas ferramentas (filtros) traduzem osdados para a linguagem da impressora antesdo envio. Em outras palavras, os aplicativosenviam seus dados em um formato padrãopara o spooler. O Linux utiliza o formatoPostScript, desenvolvido pela a Adobe [6]como uma linguagem especial para trata-mento gráfico. Impressoras PostScriptpodem interpretar dados nesse formatodiretamente sem a necessidade de filtros.

Programadores da comunidade Open Sourcedesenvolveram o GhostScript, um programaque permite utilizar dados em formato Post-Script em impressoras que não o suportam.O GhostScript utiliza o driver da impressorapara converter um documento no formatoPostScript para a linguagem da impressora.Quando o CUPS encontra uma impressoraque não suporta PostScript, o spooler sim-plesmente invoca o GhostScript, que con-verte os dados da maneira necessária.

Os back-ends são o último link na cadeia. Umback-end representa uma porta como a USBou a porta paralela. Definições de back-endnos permitem adicionar novos tipos de inter-faces que ainda não existem atualmente.

Cups Revelado

Tim Schürmann estudou Ciênciasda Computação na Universidade deDortmund, no oeste da Alemanha.Ele trabalha com Engenharia deTráfego Assistida por Computador(Computer Aided Traffic Engineer-ing) e é autor de diversos artigossobre Linux e Software Livre, muitosdeles publicados na Linux Maga-zine, com ênfase em soluções livrespara escritório.

SOBR

EO

AUTO

R

GLOSSÁRIO

cliente de e-mail é oXimian Evolution, ver-são 1.4.5. Esse softwaretraz também agenda elivro de endereços, e édescrito no menu como Emailand Calendar. O StarOffice 7 é oconjunto de aplicativos de escritório,para as aplicações padrão de texto,planilha, etc. Para leitura e impressão dearquivos PDF o Acrobat Reader 5.0 é uti-lizado, enquanto que o gerenciamentode projetos fica por conta do Planner(também conhecido como MrProject). Aferramenta escolhida para tratamento deimagens é o Gimp, em sua versão 1.3.18.

Como criadora do Java, a Sun fazmenção à sua linguagem de programa-ção ao chamar sua distribuição de “SunJava Desktop”. Contudo, existem apenascinco aplicações Java pré-instaladas,descontando o próprio ambiente Java.Um programa gráfico para apresentaçãochamado JGraphpad, o jDictionay, que éum dicionário online, uma ferramenta deanálise de rede, e um player multimídia.E, por último, um editor de texto Java, ojEdit. É muito pouco para justificar o uso

do nome Java!Cada licença custa

100 dólares (por má-quina), e inclui umano de suporte téc-nico e 60 dias desuporte à instalação,fornecidos pela Sun.Como só o StarOffice7.0 custa 80 dólares,sendo um aplicativo“stand-alone”, o im-pacto da política depreços aplicada pelaSun no seu “JavaDesktop System” éamenizado.

Secompara-

do com outrasdistribuições, o Sun Java Desktop, comseu desktop Gnome estável, porém an-tigo, tem muito pouco a oferecer parapoder ser considerado o melhor na cate-goria. Essa afirmação não prejudica emnada a usabilidade da distribuição nasaplicações básicas. Usuários inexperien-tes em Linux provavelmente não terãoproblemas durante a instalação e o desk-top traz tudo que se pode necessitar parainiciar o trabalho na nova distribuição,com o mínimo de esforço. Desde o iní-cio, a maioria dos usuários vai se sentirem casa, devido à clareza da estrutura demenus e à boa integração que a Sun deuaos elementos do desktop. ■

Aintenção da Sun Microsystems aodesenvolver o Sun Java Desktop[1] foi emular de forma precisa a

aparência, o comportamento e a usabili-dade do Windows. O sistema é baseadono SuSE Linux Enterprise Edition [2].

Instalação RápidaNossos testes em laboratório transcor-reram sem problemas, mesmo quandofoi utilizado um laptop antigo. Embora aSun tenha feito alterações no programade instalação da SuSE, o YaST, seus prin-cipais recursos foram preservados.

Após a instalação e a reinicialização, oYaST configura os aplicativos, solicita aousuário a configuração de senhas de roote de usuário, configura a interface grá-fica e em seguida o ambiente de rede.

Após o login é apresentado ao usuárioum ambiente desktop baseado no Gno-me versão 2.2, o que infelizmente não éuma grande inovação tecnológica. A Sunmodificou o menu e os nomes dos pro-gramas para deixar o sistema mais ami-gável para usuários inexperientes.

O Mozilla 1.4 é o navegador padrão,descrito no menu como Web Browser. O

38 Agosto 2004 www.linuxmagazine.com.br

Sun Java desktopANÁLISES

Sun Java Desktop

Café FrescoO “Sun Java Desktop” é um sistema operacional voltado para

pequenas e médias empresas que visa facilitar a migração do

Windows para o Linux. POR FRANK WIEDUWILT

Figura 1: Sun Java Desktop.

[1] Sun Java Desktop: http://www.sun.com/software/javadesktopsystem/index.html

[2] Suse Enterprise Server:http://www.suse.de/en/business/products/server/sles/index.html

INFORMAÇÕES

Frank Wieduwilt estu-dou história, e vem tra-balhando há algunsanos como autor téc-nico freelance paravárias editoras emBerlim, Alemanha,escrevendo manuais desoluções de banco de dados. Frank é umescritor regular da Linux Magazine espe-cializado em assuntos SOHO como pro-gramas gráficos e office.

SOBR

EO

AUTO

R

O hardware exigido pelo Mandrake-Move é um Pentium (II ou superior),AMD K-6, Duron ou Athlon e 256Megabytes de memória RAM (o mínimoé de 128 Megabytes.) A Mandrakesofttambém recomenda um leitor de CD-ROM com velocidade não menor que32X. Não é necessário um disco rígido. Oúnico requisito da chave USB é que elanecessita ser formata com o sistema dearquivos VFAT. Nós não encontramosproblemas com um Pico Disk Easy2, de128 Mbytes. Mas a lista de discussão daMandrake menciona diversos problemascom outras chaves. A imagem ISO foitestada numa configuração mínima(AMD K6-2 de 350 Mhz, 128 Mbytes deRAM) e num computador um poucomais potente (AMD Duron de 900 Mhz,256 Mbytes de RAM).

Como esperado e confirmado na estru-tura do menu mostrado na Figura 1, oMandrakeMove é indicado para uso do-

méstico e em pequenos escritórios. Omenu não oferece compiladores ou ou-tras ferramentas de programação, mas osistema não foi feito para isso. A maioriada documentação disponível no CD é amesma do Mandarke Linux 9.2. Umcapítulo é dedicado a quem quer mudardo Windows para o Linux.

InicializaçãoO boot é gráfico. Pressionar F1 exibe

algumas informações gerais – mas nãomuitas – sobre como conduzir o sistemadurante essa fase. Por exemplo, eleexplica como passar algumas opções aokernel, mas não diz quais estão dispo-níveis. É possível abrir outro terminal,rodando o busybox, pressionando Ctrl +Alt + Fn. A inicialização leva menos deum minuto em um PC de 350 MHZ. Tor-ná-la tão rápida quanto possível foi umdos principais objetivos durante o desen-volvimento. Ou seja, evitar perguntas

desnecessárias sempre que possível.Embora isso possa significar o não

aproveitamento do hardware ao má-ximo, faz sentido. Um Live-CD comoeste é quase sempre usado por perí-odos curtos de tempo para realizartarefas simples e/ou por usuáriosinexperientes. Nos passos seguinteso usuário deve escolher o idioma(Inglês, Alemão, Francês, Italiano,Holandês e Espanhol são disponí-veis) e aceitar a licença. A detecçãodo hardware é feita logo após ousuário fornecer um login e senha.Uma vez que o sistema tenha sidoinicializado, tanto as ferramentas

Algumas distribuições podem ini-cializar e rodar diretamente doCD-ROM, sem instalar nada no

disco rígido. Ultimamente essa forma deempacotar o Linux se tornou popularcomo o desktop Open Source definitivo,ou uma excelente solução para demon-strações. As pessoas podem experimen-tar uma distribuição diferente todos osdias, basta inserir o CD no drive e depoisremovê-lo para retornar ao sistemapadrão da máquina.

O Mandrake oferece dois CDs nomodelo acima citado, baseados noMandrake Linux 9.2, chamados Mandra-keMove (www.mandrakesoft.com/produ-cts/mandrakemove). O primeiro pode serbaixado gratuitamente da internet, osegundo vem em diversas versõescomercializadas. As duas mais popularescustam 69.9 e 129 Euros respectiva-mente. Em contraste à versão gratuita, ascaixinhas contém “chaveirinhos” USB de128 ou 256 MB e documentação adi-cional, em parte específica ao Man-drakeMove (quase nada dela podeser encontrado online). Os usuáriosque adquirirem as caixinhas vãoencontrar software adicional, não-GPL, como drivers para hardware danVidia, Real Player e Flash Player.

A principal vantagem da versãocomercial é que ela pode armazenararquivos e dados de configuração nochaveiro USB. Na versão gratuita,mostrada nesse artigo e disponibi-lizada online em 9 de dezembro de2003, você precisa reconfigurar tudoa cada vez que reinicializar o micro.

40 Agosto 2004 www.linuxmagazine.com.br

MandrakeMoveANÁLISES

Figura 1: O menu de sistema do Mandrake: todas as coisasnecessárias para trabalhar no escritório, ou apreciar músi-cas e vídeo em casa.

Leve um Desktop Linux com você, onde quer que você vá

MandrakeMoveSem um laptop, como você pode ter seu Linux fora de casa? Como

nós podemos converter aqueles amigos ou parentes teimosos, que

quase não tem tempo para instalar o Linux, ou tem receio de perder

seus arquivos? Uma distribuição que roda diretamente de um CD-

ROM é a resposta, e MandrakeMove é a escolha certa.

POR MARCO FIORETTI

padrão de gerenciamento do Mandrakequanto a linha de comando estão dis-poníveis. Quase todo o hardware de nos-sos dois sistemas de teste foi detectado,configurado e utilizado sem problemas.Todos os drives de CD e disquetes gan-haram ícones no desktop, isto só nãofuncionou com a chave USB.

O computador K-6 é uma máquinasomente Linux com várias partiçõesext3. Todas elas foram montadas auto-maticamente. Tanto o drive C: do sis-tema Duron (que tem somente Win-dows) quanto a chave USB (ambosVFAT) foram montados sob /mnt/win-dows. O som funcionou corretamente,desde os bips do sistema até a repro-dução de CDs e arquivos Ogg Vorbis. Omesmo se aplica à impressão com umaEpson Stylus e uma HP Deskjet 890.

Usando o KPPP o modem funcionoucomo sempre no Linux: nos conectamosimediatamente com um modem 3ComUS. Robotics externo. Não tivemos suce-sso, como esperado, com um Win-modem anônimo interno.

O DesktopO MandrakeMove é configurado porpadrão para o fuso horário norte-ameri-cano. Se este for mesmo o seu fuso tudobem, mas você não será avisado de quedeve modificar as configurações casocontrário. Esta é a única falha numambiente desktop que é bem implemen-tado, completo e fácil de usar. Aplataforma base é o KDE 3.1, e aplica-tivos populares como o Gimp 1.2.5,OpenOffice.org 1.1 Gnucash, Mr.Project,

Gnome, Meeting, o Media Player Totem emuitos outros estão inclusos.

Tudo roda tão rapidamente quantonuma instalação normal do Linux nomesmo computador. O Open Office.orgfunciona bem, exceto pelo fato de quesempre reclama da falta do Java RuntimeEnvironment (ambiente de execuçãoJava) no diretório /usr/lib/jdk-1.4.1.0.1.Caso seja necessário se tornar root porqualquer razão, basta digitar su-, semsenha. Tivemos de fazer isto paradesmontar o disquete. Ele é auto-mon-tado, mas a opção umount do menu con-textual do ícone não funciona.

O CD do MandrakeMove pode serremovido do drive durante o uso, paraque você possa inserir outro disco. Masantes de fazer isso você precisará parar odaemon do CUPS, o que pode ser feitoem uma janelinha pop-up. Sempre queparávamos de ouvir música, o sistemanos lembrava de colocar o CD do Man-drakeMove de volta no drive.

As ferramentas e os procedimentosbásicos de acesso à internet são os mes-mos tipicamente oferecidos pelo KDE,como o discador KPPP, cliente de e-mailKMail e navegador Konqueror. Como tí-nhamos apenas acesso discado, usamoso KPPP para fazer uma conexão. Obvia-mente, conexões via ASDSL e LANtambem são possíveis. Alguns arquivosde sistema, geralmente criados duranteuma instalação padrão, não estavam pre-sentes nos locais esperados: o KPPPreclamou da falta dos arquivos/dev/modem e /etc/resolv.conf. Recadopara a MandrakeSoft: alterar o KPPPpara evitar as mensagens de erro, ouoferecer mensagens diferentes, pode evi-tar confusão por parte dos usuários.Apesar disso, com um modem externonós estávamos conectados e navegandoem poucos minutos.

ConclusãoMesmo com os pequenos defeitos des-critos acima, o MandrakeMove ofereceum belo e completo desktop de bolso.Contudo, existem outros CDs maisdesenvolvidos, com as mesmas carac-terísticas ou um pouco melhores, como oKnoppix. A versão para download é cer-tamente a melhor escolha se o usuário jáestá familiarizado com o modo Man-drake de ser, ou se você quiser praticarprimeiro antes de instalar o Mandrake9.2 em um ambiente de produção.

Por outro lado, a versão para down-load é a melhor demonstração possívelda versão comercial, mesmo sem a ace-leração de hardware e a chave USB. ■

41Agosto 2004www.linuxmagazine.com.br

ANÁLISESMandrakeMove

Figura 2: O MandrakeMove utiliza a mesma interface de gerenciamento dehardware do Mandrake 9.2.

Figura 3: Apontar e clicar: navegando por arquivos Ogg Vorbis no disco rígidoe os reproduzindo com o Totem.

Figura 4: Os parâmetros de conexão para váriosprovedores já estão pré-configurados no KPPP.

que envolve mergul-har nas profundezas doservidor X, encontrar osdiretórios corretos, copiar osarquivos com as fontes para eles, eentão rodar alguns scripts. Mas tudo issoé brincadeira de criança no KDE3.2.

A nova abordagem usa um “KIOslave” especial, peço desculpas aosexperts no KDE que podem achar istodemasiadamente óbvio, executado den-tro do Konqueror. Ao digitar fonts:/ nabarra de endereços surgem duas pastas:System (Sistema) para gerenciamentoglobal das fontes instaladas, e Personal(Pessoal) para fontes usadas apenas pelousuário atual. Para instalar novas fontes

TrueType, basta quevocê tenha um velho CD do Corel Draw,ou qualquer outro com milhares fontes,e arraste os arquivos .ttf do CD para apasta apropriada. Você precisará dasenha de root se quiser copiar os arqui-vos para a pasta Sistema.

Ponteiros sem limitesVocê tem inveja de seus colegas usuáriosdo Windows, com aqueles cursores domouse multicoloridos, com sombras ouaté mesmo animados?

Se sim, é hora de virar o jogo. Com oKDE3.2 (e o XFree86 versão 4.3.x, inclu-so na maioria das distribuições Linuxrecentes) é muito fácil ter a última modaem ponteiros para o mouse. E em con-traste com o concorrente, no X os pon-teiros do mouse podem usar mais de 256cores ao mesmo tempo, além de efeitoscomo transparências e sombras.

Para definir o quão extravagante vocêquer seu ponteiro do mouse, selecione oitem Peripherals/Mouse (Periféricos/-Mouse) no Centro de Controle do KDE. Aaba Cursor Theme (Tema do Cursor) trazuma seleção de temas (veja a Figura 1); emodelos adicionais (junto com milharesde outros itens para enfeitar seu desk-top) estão disponíveis no site KDE Look[1]. Entretanto, você precisará reiniciar o

Barras de ferramentas transpar-entes, cursores com sombra, mu-dança da resolução de vídeo com

um simples clique – algumas das novi-dades do KDE3.2 não estão visíveis àprimeira vista. Elas fazem seu dia-a-diadiante do desktop mais fácil, ou ao me-nos mais bonito. Vale a pena procurá-las,ao invés de simplesmente esperar paratropeçar nelas algum dia.

FontWizardry (Gerenciadorde fontes)A equipe de desenvolvedores do KDE fezuma contribuição monstro ao sistema degerenciamento de fontes, geralmente opior pesadelo do usuário Linux comum,

42 Agosto 2004 www.linuxmagazine.com.br

Dicas do KDETUTORIAL

Figura 1: Mudar a aparência do ponteiro do mouse nunca foi tão fácil.

Como toda nova versão do KDE, a 3.2 tem o tradicional con-

junto de novas funções, correções de bugs e melhorias aos

recursos previamente existentes. Mas você precisa olhar

bem de perto para encontrar algumas das novidades.

POR DANIEL MOLKENTIN

Usando o KDE 3.2

Tesouros Ocultos

servidor X (isto é, encerre sua sessão efaça login novamente) para que a mu-dança tenha efeito.

Alterando a resolução dovídeoUsuários agora podem alterar a re-solução de vídeo sem medo de errar esem a necessidade de reiniciar o servidorgráfico. Tudo o que você precisa fazer éselecionar a opção Peripherals/Display(Periféricos/Tela) no Centro de Controledo KDE. O item Size & Orientation(Tamanho & Orientação) permite girarou espelhar a tela intervalos de 90 graus.Isto poder ser útil em apresentações.

Se você necessita alterar a resoluçãofreqüentemente, pode adicionar aopainel um item de acesso rápido, encon-trado em System/More Programs/ScreenResize & Rotate (Sistema/Mais Progra-mas/Redimensionar e Rotacionar tela)no menu K no painel.

TransparenteOs painéis (também conhecidos como“barras”) cinzas do KDE, são muito criti-cados por serem “feios”, ou por ocu-parem muito espaço. No KDE 3.1 eles jáocupavam menos espaço, e o KDE 3.2adiciona a capacidade de transparência.Para deixar um painel transparente,clique com o botão direito em um espaçovazio nele e selecione no menu pop-up oitem Configure Panel/Appearance (Con-figurar Painel/Aparência). Marque aopção Enable Transparency (Habilitartransparências) e pronto.

Cuidado com a carteiraOs usuários que frequentam a web cons-tumam ter um problema: alguns web-sites são protegidos por senhas, e nãopermitem que o usuário escolha suaprópria senha. A maioria das pessoasnão estão preparadas ou simplesmentenão conseguem memorizar tantas se-nhas diferentes. O KDE3.2 disponibilizaum repositório, um local seguro paraguardar todas as suas senhas, chamadoKwallet, sua carteira digital.

O KWallet usa uma senha mestra paraproteger os dados armazenados e éresponsável por gerenciar as senhas doswebsites para o navegador Konqueror,além de senhas para outros aplicativoscomo o Kopete (cliente para mensagensinstantâneas). O KWallet usa criptografiade chave simétrica para guardar as se-nhas de forma segura em seu diretóriopessoal. Certifique-se de escolher suasenha mestra com muito cuidado: eladeve conter pelo me-nos oito caracteres,nunca deve ser umapalavra comum (dotipo encontrado emdicionários) e, de pre-ferência, conter umamistura de números,letras e símbolos.

Pode ser que você precise dar umaolhada na sua carteira digital de temposem tempos, para adicionar novas senhasmanualmente, por exemplo. A ferra-menta de gerenciamento de senhas seencontra no menu K, item Settings/Man-age Digital Wallet (Configurações/Geren-ciar carteira digital). Isto exibe um íconeno painel que dá acesso a todas ascarteiras disponíveis.

A carteira digital padrão é chamadakdewallet. Como qualquer outra carteira,ela contém uma pasta para guardardados de formulários (para os nave-gradores, por exemplo), uma pasta parasenhas e ainda outra para aplicaçõesespecíficas. Você pode criar uma pastapessoal para atender às suas necessi-

dades, e armazenar outros dados confi-denciais nesta pasta. O gerenciador dejanelas permite que a carteira sejafechada facilmente, mesmo que as pas-tas com os dados das carteiras estejamabertas. Basta selecionar o ícone dacarteira que você deseja fechar, clicarcom o botão direito do mouse e sele-cione a opção Fechar (Close) no menu(veja Figura 2).

Pastas Virtuais no cliente dee-mailSe você recebe uma grande quantidadede e-mail diariamente, provavelmentetem um sistema de filtros automáticospara barrar o spam e separar sua cor-respondência do lixo. Mas como encon-trar todas as mensagens enviadas pordeterminada pessoa caso você tenhaoptado por separar as mensagens nãopor remetente, mas por projeto?.

A forma tradicional é fazer uma buscaem todas as suas pastas dee-mail. Infelizmente, estetipo de operação pode con-sumir muito tempo. NoKDE 3.2 o KMail introduz“pastas de busca” (searchfolders) para facilitar estaoperação. Usá-las é muito

simples: primeiro, vamos fazer umabusca comum, por exemplo: “Remetente”contém “[email protected]”.

Agora vem a parte inteligente: Digiteos termos da busca no campo SearchFolder para mostrar os resultados comouma pasta do Kmail (Figura 3). Men-sagens recém chegadas que satisfaçamos critérios da busca são adicionadasautomaticamente a esta pasta. Como sãopastas virtuais, apagá-las não remove asmensagens nelas contidas, e você podecriar quantas quiser, já que não con-somem espaço em disco. ■

43Agosto 2004www.linuxmagazine.com.br

TUTORIALDicas do KDE

Figura 2: O KWallet funciona como um cofre parasuas senhas.

Figura 3: As úteis “pastas debusca” do KMail não ocupamespaço em disco.

Transparência Alfa: Imagens e ícones trans-parentes tem um “valor alfa”(ou canal alfa)para cada pixel, além dos valores para ver-melho, verde e azul (RGB). Ele diz quanto dofundo deve ser visível, e seu valor geralmenteé expresso como um percentual de opacidade.

KIO slave: Componente do KDE responsávelpela entrada e saída de dados (KDEInput/Output Slaves). Pode ser acessadoatravés da URL correta, como os prefixoshttp://, ftp://, file:/ ou font:/. Em um aplica-tivo como o gerenciador de arquivos e naveg-

ador web Konqueror,os KIO slaves são usadospara exibir dados de forma “legível”. Os KIOSlaves também podem ser usados paramostrar o conteúdo de um CD de áudio (dig-ite audiocd:/), ou para configuração do sis-tema (settings:/).

GLOSSÁRIO

[1] KDE Look: http://www.kde-look.org

INFORMAÇÕES

outro arquivo ao diretório do tema. Eledeve ter o mesmo nome que o tema, e éreconhecido pela extensão .py. Os desen-volvedores do Super Karamba recomen-dam que você começe com um modelo[6], e a partir daí modifique-o. Veja umlink para um exemplo no item [4], noquadro Info ao final deste artigo.Descompacte-o com o comando:

tar - C ~/.superkaramba - U

xjvf U small_text_xmms.tar.bz2

no diretório ~/.superkaramba (talvezvocê precise criar o diretório antes). Istovai criar um diretório chamado small_text_xmms contendo o tema. Agoracopie o arquivo modelo, template.py,para este diretório. Certifique-se demudar o nome do arquivo para o mesmonome do tema:

cp template.py U~/.superkaramba/Usmall_text_xmms/small_text_xmmsU.py

Agora abra o arquivo do tema, small_text_xmms.theme, selecionando Open... najanela principal do SuperKaramba, paratraduzir o código fonte Python em byte-code Python (veja o Quadro 1). Se vocênão consegue ver o diretório oculto.superkaramba, na caixa de diálogo deseleção do tema, aperte [F8]. Como ocompilador mostra mensagens de erro edebug na saída padrão (stdout), faz sen-tido iniciar o SuperKaramba manual-mente digitando superkaramba (talvezvocê tenha que especificar o caminhocompleto até o binário) em um terminalcomo o konsole. Por exemplo, uma men-sagem como “Minha extensão emPython foi carregada!,” é gerada peloseguinte comando:

print "Minha extensão em PythonUfoi carregada!"

na última linha do modelo. Isto permiteque eu me assegure de que a compilaçãodo arquivo Python foi feita corretamente.Infelizmente, não foi isto o que aconte-ceu em minha instalação do Suse Linux9, pois a distribuição configura incorreta-

mente algumas das variáveis de ambi-ente usadas pelo Python. Neste

caso, para resolver o problemadigite os comandos abaixo noconsole antes de executar oSuperKaramba:

export PYTHONPATH=/usr/libU/python2.3/

export PYTHONHOME=/usr/lib/Upython2.3/

Arrastar & SoltarNossa primeira extensão adiciona supor-te a drag & drop de arquivos mp3, que

Uma vez que você começa a usar oSuperKaramba [2], para adicionarum relógio ou um MP3 Player ao

background de seu desktop KDE [1],provavelmente você vai começar a querermais. A boa notícia é que você pode usara linguagem de programação Python paraadicionar uma ampla gama de recursosinterativos aos temas do Karamba. Porexemplo, você pode criar menus, modi-ficar textos dinamicamente e adicionarsuporte a drag & drop aos seus temas.

O conceito é o seguinte: Quando umevento do KDE ocorre (por exemplo. aomover o mouse, iniciar um programa, ouselecionar uma opção em um menu), oprograma responsável por tais eventosemite um sinal, que é recebido e inter-pretado por uma função. Naturalmente,o SuperKaramba pode interpretar even-tos deste tipo. A API Python doSuperKaramba [5], permite que vocêespecifique o que deve ocorrer.

Encantando a serpenteSe nós quisermos usar Python e adi-cionar mais funcionalidades aos temas[1], nós não precisamos modificar ocódigo existente. Em vez disso, bastaadicionar um

O SuperKaramba lhe ajuda transformar o background de seu desktop KDE em

algo mais útil. Agora, com uma ajudinha da linguagem Python, você pode

definir exatamente como vai ser aquele recurso extra de que você precisa.

POR HAGEN HÖPFNER

Embeleze seu desktop KDE com o SuperKaramba e Phyton

Python pra Karamba

44 Agosto 2004 www.linuxmagazine.com.br

SuperKarambaTUTORIAL

permite que os usuários arrastem umarquivo do Konqueror para o tocador deMP3 integrado. Por enquanto, queremosque o XMMS toque os arquivos.

A Listagem 1 mostra nossa solução Sevocê não quiser desenvolver o arquivomodelo, simplesmente sobrescreva oarquivo small_text_xmms.py com o con-teúdo da listagem.

Para permitir que um tema do SuperKaramba suporte drag & drop, o temaprecisa ser inicializado. A melhor ma-neira de se fazer isto é criar um widgetdo SuperKaramba (veja Glossário nestapágina). Isto emite um sinal que serárecebido por um dos “receptores deeventos” do SuperKaramba, a funçãocallback initWidget(). Podemos digitar:

def initWidget(widget):

para definir na linha seguinte a reaçãoquando usarmos o tema como fundo:

karamba.acceptDrops(widget)

Neste caso, queremos que o widgetaceite que itens sejam soltos sobre ele. OSuperKaramba usa o itemDropped() paraprocessar o sinal. A função espera rece-

ber duas informações, como indicado naTabela 1: um apontador para o widget e -no caso de arquivos - uma lista de nomede arquivo em múltiplas linhas na var-iável dropText, onde cada linha repre-senta um arquivo.

Infelizmente, cada nome de arquivo éprecedido pela palavra chave file:. Comoo XMMS não sabe como lidar com URLsdo tipo file:/caminho/para/arquivo.mp3,mas espera um nome de arquivo no for-mato /caminho/para/arquivo.mp3, te-mos que remover os dados supérfluosdas linhas armazenadas em dropTextantes de passá-los ao XMMS para que osnomes de arquivo sejam reconhecidos.

Perdendo pesoNós vamos precisar das funções demanipulação de strings [7] acessíveisatravés de, import string. A próximaetapa é definir uma variável vaziachamada xmms_filename = “” onde ire-mos armazenar a lista “limpa” de nomesde arquivos. Nós podemos então chamarstring.split() para dividir a lista de URLsde dropText em seus componentes:

string.split(string.Urstrip(str (dropText)),"\n")

Estamos usando o caractere \n (novalinha) como separador. A função maisinterna na expressão acima, str(), per-mite que conteúdo de dropText sejamanipulado como uma string, enquantostring.rstrip() remove todos os caracteresnão padronizados à direita.

Agora que temos as URLs individuais,podemos usar um loop for para removero prefixo file:. Vamos escreverer as URLsna variável filename uma por uma, com:

string.split(nomedoarquivo, U

"file:", 1)

Para ser mais preciso, dividimos o con-teúdo de filename em duas partes naprimeira (1) instância do separador file:.Se não fizéssemos isso quaisquerarquivos MP3 que contivessem a stringfile: seria cortado em pedaços. O resul-tado é uma lista com duas entradas, quearmazenamos em uma outra variável,temp. O primeiros elemento, temp[0],contêm apenas uma string vazia depoisda primeira operação de divisão.

Para cada iteração do loop, adi-cionamos o nome do arquivo ao con-teúdo da variável xmms_filename. Comoo ele é o segundo elemento da lista temp,podemos acessá-lo como temp[1]:

xmms_filename=xmms_Ufilename+ " \" "+ string.Urstrip(U temp[1 ]) +" \ ""

45Agosto 2004www.linuxmagazine.com.br

TUTORIALSuperKaramba

Função Chamada quando...initWidget(widget) Um widget SuperKaramba é criado.widgetUpdated(widget) O tema é atualizado. O intervalo de atualização é definido no arquivo .theme.widgetClicked(widget, x, y, button) Um clique do mouse ocorre dentro do tema. x e y indicam as

coordenadas (relativas ao tema) button indica o botão do mouse que foi pressionado.

widgetMouseMoved(widget, x, y, button) O mouse é movido dentro do tema. x e y indicam as coordenadas atuais(relativas ao tema); button indica o botão do mouse que foi acionado, eseu status (pressionado ou não).

menuItemClicked(widget, menu, id) Um item de menu é selecionado. Isto informa o manipulador do menu(veja o texto) e o item de menu que foi clicado (id).

menuOptionChanged(widget, key, value) Um item no menu de configuração do tema é selecionado. key indica omanipulador do item do menu, e value o novo valor (verdadeiro ou falso).

meterClicked(widget, meter, button) Um mostrador é clicado. meter indica o manipulador, button o botão domouse que foi clicado.

commandOutput(widget, pid, output) Um programa é chamado por executeInteractive(), desde que isto geresaída em stdout. pid é o process ID do programa, output contém o textoenviado a stdout.

itemDropped(widget, dropText) Objetos (por exemplo ícones) são soltos sobre o tema através de umaoperação de arrastar e soltar. dropText contém o texto do objeto (porexemplo, sua URL, veja a seção Arrastar & Soltar).

StartupAdded(widget, startup) O KDE executa um novo aplicativo. Quando a inicialização do programa écompletada, um sinal startupRemoved() é emitido, seguido por taskAdded().

startupRemoved(widget, task) Veja startupAdded().taskAdded(widget, task) Veja startupAdded().taskRemoved(widget, task) O programa foi encerrado.activeTaskChanged(widget, task) Um outro aplicativo é movido para o primeiro plano.

Tabela 1 - Receptores de sinais do SuperKaramba

API: Uma Application Programming Interface(Interface de Programação de Aplicativos),define um número de funções dentro de umsoftware que outros programas escritos emuma linguagem específica podem chamar.Em nosso caso, aplicativos em Python podemusar as funções implementadas noSuperKaramba.

stdout: A saída padrão especifica para ondeos aplicativos Linux devem enviar o texto desaída.Tipicamente é a tela, mas você poderedirecionar esta saída para um arquivo ouuma impressora. Além do stdout, o Linuxtambém possui uma saída chamada stderror(tipicamente também o monitor), para ondetodas as mensagens de erro são enviadas, estdin, a entrada de dados padrão, que geral-mente é o teclado.

Widget: Termo genérico para os elementosde controle de uma interface gráfica. Estesincluem janelas, botões, menus, checkboxes,abas, barras de rolagem, etc.

GLOSSÁRIO

cáveis no arquivo .theme, então vamosusar a API Python para fazer isto.

Para experimentar, substitua o con-teúdo do arquivo ~/.superkaramba/small_text_xmms/small_text_xmms.pycom o conteúdo da Listagem 2. Minhasdesculpas aos desenvolvedores profis-sionais pela gambiarra no uso das var-iáveis globais select_menu e my_menu,usadas apenas para simplificar as coisas.

select_menu tem inicialmente valor 0(zero) e representará mais tarde o objectID do menu. my_menu [[],[]] cria um“contâiner” para armazenamento deuma lista com dois elementos. Esta listaserá usada mais tarde pelo programapara mapear os itens do menu ao IDsatribuídos a eles.

Em resposta à abertura da janela dotema, initWidget() adiciona um menu:

selectmenu= karamba.createUMenu(widget)

O número interno atribuído pelo sistemaé armazenado na variável global selectmenu. Isto é chamado de “índice”,porque o número é usado para identi-ficar internamente o menu. A, um tantoquanto longa, expressão a seguir arma-

zena um menu com dois itens emmy_menu. O primeiros deles...

karamba.addMenuItem(widget, U

selectmenu , "konqueror", U

"konqueror.png")

...cria uma entrada para o navegadorkonqueror no selectmenu. O ícone kon-queror.png, que também tem que serarmazenado no mesmo diretório dotema, completa o item do menu. Osegundo addMenuItem() faz a mesmacoisa, adicionando uma entrada para onavegador Opera:

karamba.addMenuItem(widget, U

selectmenu , "opera", U

"opera.png")

Naturalmente, no momento ainda falta afuncionalidade. Para permitir que adi-cionemos funções aos itens do menu,precisamos de um meio para distinguiros itens individuais. Podemos armazenaras palavras konqueror ou opera no iden-tificador criado por addMenuItem() emmy_menu. O conteúdo da variável separece com isto:

(['konqueror', -22], ['opera',U-23])

Agora temos um menu. Naturalmenteele não será exibido imediatamente, ape-nas quando você der um duplo-cliquecom o botão esquerdo do mouse sobre otema do SuperKaramba, isto é, sempreque um sinal widgetClicked(widget, x, y,button) é gerados.

Nós não vamos avaliar as coordenadasx-y e o número do botão do mouse pres-sionado, mas se fizéssemos, poderíamostratar áreas diferentes dentro de tema deforma distinta, ou distinguir entre osbotões esquerdo, direito e central domouse. Poderíamos até mesmo mapearum menu ao botão direito do mouse,mas como um clique com este botão

Para permitir que os XMMS toque mp3com espaços nos nomes dos arquivos,coloque-os entre aspas. Como o Pythontambém usa aspas para separar strings,temos que isolar o caractere usando “\””,um procedimento razoavelmente com-plexo. Se xmms_filename realmenteincluir aspas, isolá-las com \ diz aoXMMS que elas devem ser consideradasliteralmente. Após armazenar a lista comos nomes dos arquivos em xmms_file-name, podemos usar:

karamba.execute("xmms"+ U

xmms_filename)

para dizer ao XMMS para abrir o arquivoMP3 que foi solto sobre nosso widget.

O menu, por favorAdicionar outro menu para complemen-tar o tradicional menu acionado com obotão direito do mouse é outra formainteressante de incrementar um tema.Pode ser um menu para lançamentorápido de aplicativos que é acessadoquando você dá um duplo-clique com obotão esquerdo do mouse, ou um cliquecom o botão do meio. Seria deselegantedefinir um número infinito de áreas cli-

46 Agosto 2004 www.linuxmagazine.com.br

SuperKarambaTUTORIAL

Variável global: O paradigma de progra-mação orientada a objetos tende a encapsu-lar funções e variáveis em objetos. Porexemplo, definir em uma variável a cor de umbotão facilita a tarefa de criar botões devárias cores, já que a variável é armazenadano objeto “botão”. Em contraste, variáveis

globais são visíveis em todo o programa.Então, se você atribuir a cor verde à variável,todos os botões que você criar serão verdes.

Multithreaded: Normalmente programasnão são capazes de executar mais de umatarefa por vez. Por exemplo, enquanto o pro-

grama espera pela abertura de um arquivo ,não pode executar mais nenhumas outratarefa.Threads permitem que um programaexecute mmúltiplas tarefas simultanea-mente. Em vez de sentar-se e esperar até oarquivo abrir, um programa aproveitaria estetempo em uma outra thread.

GLOSSÁRIO

01 import karamba02 import string0304 def initWidget(widget):05 karamba.acceptDrops(widget)0607 def itemDropped(widget, dropText):08 xmms_filename=""09 for filename in string.split(string.rstrip(str(dropText)),"\n"):1011 temp=string.split(filename,"file:", 1)12 xmms_filename=xmms_filename + " \"" + U

string.rstrip(temp[1]) + "\""14 karamba.execute("xmms" + xmms_filename)1516 print "Minha extensão Python foi carregada!"

Listagem 1 : Tema com suporte a drag & drop

sobre um tema abre o menu do SuperKaramba, isto não faz sentido na prática.

Note que cliques do mouse sempreexecutam a ação definida no arquivo.theme. Em nosso caso, um clique norelógio abre as preferências do relógio enosso menu (Figura 1).

Para mostrar o menu na tela, pre-cisamos do identificador, que é arma-zenado na variável selectmenu. Podemosusar global selectmenu para recuperaresta informação do espaço global dedados. A função karamba.popupMenu(widget, selectmenu, x, y) permite quecoloquemos o menu nas mesmas coorde-

nadas (relativas ao tema) onde ocorreu oclique do mouse. Se estas coordenadasnão forem conhecidas, o menu surge nocanto superior esquerdo (coordenadas0,0) do tema.

Quando o usuário seleciona um itemdo menu, o SuperKaramba reage a estesinal chamando a função menuItem-Clicked(widget, menu, id). Esta função

usa id para fornecer um identificadorpara o item do menu, e menu para nomedo item propriamente dito. Como o sis-tema determina os identificadores deforma arbitrária, não há uma maneira defácil de adivinhá-los, mas podemos noslivrar rapidamente do problema se osarmazenarmos nas variáveis globaismy_menu, para os itens do menu, eselectmenu, para o menu propriamentedito. Como nós temos apenas um menu,não precisamos nos preocupar com estadiferença. Ou seja, a única coisa de queprecisamos é da variável main_ menu,armazenada no espaço global de dados.

O laço for index in my_menu: (linha20) nos permite iterar através de todos oselementos da variável my_menu emapear as listas nela contidas à variávelindex, uma por uma. Durante cada iter-ação, precisamos verificar se o identifi-cador do item do menu que foi fornecidopelo sinal confere com o número arma-zenado no segundo item de index:

If index[1]==id;

Após encontrarmos o par em my_menuque corresponde ao item clicado, temosque verificar qual dos navegadores elerepresenta. Se for o Konqueror...

if index[0] == 'konqueror':

…o chamamos com karamba.execute(“konqueror”); caso contrário usamos:

elif index[0]=='opera':

para ver se o Opera foi o selecionado.

47Agosto 2004www.linuxmagazine.com.br

TUTORIALSuperKaramba

Figura 1: Menus criados com Python.

01 import karamba0203 selectmenu=004 my_menu=[[],[]]0506 def initWidget(widget):07 global selectmenu08 global my_menu09 selectmenu=karamba.createMenu(widget)10 my_menu=[11 "konqueror", karamba.addMenuItem(widget, selectmenu, "konqueror", U

"konqueror.png")],12 ["opera", karamba.addMenuItem(widget, selectmenu, "opera", U

"opera.png")]1314 def widgetClicked(widget, x, y, button):15 global selectmenu16 karamba.popupMenu(widget, selectmenu, x, y)1718 def menuItemClicked(widget, menu, id):19 global my_menu20 for index in my_menu:21 if index[1] == id:22 if index[0] == 'konqueror':23 karamba.execute("konqueror")24 elif index[0] == 'opera':25 karamba.execute("opera")2627 print "Minha extensão Python foi carregada!"

Listagem 2: Interagindo com menus

Se você quer apenas usar o SuperKaramba,sem se aventurar pelo mundo da progra-mação, temas não faltam. Desde itens úteis,como o conjunto de utilitários TDE (TheDesktop Enhancements) que engloba cal-endário, indicador deespaço em disco, monitorde logs, bloco de notas,estatísticas sobre amáquina, lista de usuários“logados”e estado da suaconexão à rede, até inutili-dades absolutas, como oStation V, que mostra aestação espacial do filme“2001: Uma Odisséia no

Espaço”girando no seu desktop. O ponto departida para encontrar novos temas é o jáconhecido KDE-Look.org [11], lotado deícones, papéis de parede, temas e outrositens para o seu desktop KDE. Já os desen-

volvedores doSuperKaramba estão tra-balhando noSuperKaramba ThemeArchive [12], que pretendeser o repositório definitivode temas para o pro-grama. Apesar de aindaestar em construção econtar com poucos temas,o site merece uma visita.

Temas pra Karamba

Python forneça um grande número defunções adicionais, as quais são docu-mentadas (veja o item [5] no box INFOao final do artigo), existem algunspoucos problemas com a API. O maiordeles é que ela não pode lidar com sen-sores dinâmicos (veja [1]). Se tambémquiséssemos adicionar ao nosso tema acapacidade de trocar entre múltiplos sen-sores, conseguiríamos clicar para atu-alizar o texto, porém seríamos incapazesde mudá-los automaticamente.

Há outro problema. Python só podeacessar os elementos criados por elemesmo. Caso você pretenda utilizar umelemento de texto para interagir comuma função, você precisa criá-lo com afunção createText() do Python. Textosdefinidos no arquivo .theme não podemser manipulados com a API Python. ■

Se quisermos juntar o conteúdo dasListagens 1 e 2 em um único arquivo,podemos eliminar algumas linhas. Porexemplo, precisamos apenas de umaúnica instância do comando importkaramba e um único comando print nofinal. Também precisaremos juntar oconteúdo dos blocos def initWidget(wid-get): (linha 4 na listagem 1, linha 6 nalistagem 2). em uma única função. Seuma destas funções estiver faltando apósvocê abrir o tema, basta apagar oarquivo .pyc, que é criado automatica-mente no seu diretório de temas.

Nos limites do reino dascobrasEmbora seja incrivelmente simplesrealizar tarefas complexas como drag &drop no SuperKaramba, e embora a API

48 Agosto 2004 www.linuxmagazine.com.br

SuperKarambaTUTORIAL

Hagen Höpfner é for-mado em Ciências daComputação, e mem-bro da equipe cientí-fica da UniversidadeOtto-von-Guerickeem Magdeburg, naAlemanha. Em seu tempo livre elegosta de fuçar na sua coleção de com-putadores com Linux, mas tambémdirige sua energia creativa para a com-posição de letras e melodias. Hagentambém toca guitarra em uma bandachamada “Gute Frage!?”

SOBR

EO

AUTO

R

Se você já conhece outra linguagem de pro-gramação, talvez não fique muito entusias-mado ao descobrir que deverá aprender umanova linguagem só para fazer o SuperKaramba feliz. Mas para os iniciantes emprogramação, Python tem algumas vanta-gens, sendo uma linguagem universal. Umdos principais fatores é que Python combinaos três principais paradigmas de progra-mação atuais em um só. Python pode ser uti-lizado como uma linguagem orientada aobjeto, como C++ ou Java, ou como uma lin-guagem orientada a procedimentos, comoPascal ou C. Ao mesmo tempo, é uma lin-guagem de script como PHP ou Perl, e seusprogramas sequer precisam ser compiladospelo usuário.Também suporta múltipla he-rança, coneta-se a bancos de dados e podeusar vários protocolos de comunicação.

Assim como Java, o código-fonte de um pro-grama em Python é convertido em bytecodepelo compilador. Este código também é exe-cutado por uma máquina virtual, masPython é bem mais rápido que Java.

Se vocé está migrando de Python para outralinguagem de programação, há uma coisasobre a qual você precisa saber: como fun-ciona a definição de blocos de código. Blocossão utilizados para definir trechos de código

que serão executados se uma condição porpreenchida. C utiliza chaves ({ }) para isto, enos Shell Scripts para o Bash um bloco inici-ado com o comando if_then termina com ocomando fi. Pascal utiliza as palavras chaveBegin e End. Python não utiliza nenhum dosmétodos citados acima: Ao invés de umamarcação específica, você simplesmenteindenta o código.

Assim, duas linhas sucessivas com o mesmonível de indentação formam um bloco decódigo. Se uma segunda linha começa maisà esquerda que a primeira, ela não pertenceao bloco. Um sinal de dois pontos ao final deuma linha indica um novo nível, como podeser visto nas listagens de código desteartigo. Após uma linha com a palavra-chavedef, linhas consecutivas com o mesmo nívelde indentação são consideradas como parteda definição da função.

A exigência de indentação garante quecódigo em Python será sempre bem estrutu-rado e fácil de ler, o que nem sempre acon-tece em outras linguagens. Mas isto podedistrair os iniciantes e levá-los a cometererros de indentação, pois uma função comnível errado fica simplesmente fora do con-texto do bloco onde reside. Fique atento aocriar suas próprias extensões!

O que é Python?

[1] Introdução ao SuperKaramba: HagenHöpfner,“Karamba on the Desktop”,Linux Magazine, Edição 41

[2] SuperKaramba:http://netdragon.sourceforge.net/

[3] Primeiros passos com Python:http://www.python.org/doc/Intros.html

[4] Exemplo de tema:http://wwwiti.cs.uni-magdeburg.de/~hoepfner/download.html

[5] Documentação da API Python doSuperKaramba:http://netdragon.sourceforge.net/api.html

[6] Template em Python para o SuperKaramba:http://netdragon.sourceforge.net/template.py

[7] Funções de manipulação de strings emPython: http://www.python.org/doc/2.3.3/lib/module-string.html

[8] Loops e condições em Python:http://www.python.org/doc/2.3.3/ref/compound.html

[9] Biblioteca de referência sobre Python:http://www.python.org/doc/2.3.3/lib/lib.html

[10] Página oficial do SuperKaramba:http://nedtdragon.sf.net

[11] KDE Look: http://www.kde-look.org/

[12] SuperKaramba Theme Archive:http://www.superkaramba.com/

[13] Python: http://www.python.org/

[14] GDesklets: gdesklets.gnomedesktop.org/

INFORMAÇÕES

Figura 2: A TuxBar é um dos temas mais populares

oteca Gtkmm (GTK--) [2] foi usada nodesenvolvimento da interface gráfica

da versão Linux.A parceria da MySQL como aSAP poderia levá-lo a pensar queo MYSQL Administrator ébaseado no SAPDB DatabaseManager, mas Mike Zinnernos garantiu que se trata deum “software completamentenovo”. Quando pedimos quecomparasse o MySQL Admin-

istrator com o Enterprise Ma-nager do MS-SQL, ele explicou

que “no momento o MA disponi-biliza apenas algumas das funções

que o Enterprise Manager possui.Precisaremos esperar pelo término do

desenvolvimento das interfaces gráficaspara o MySQL ao longo deste ano parater um conjunto completo de recursos.”

Monitorando a CPUO recurso de monitoração da CPU imple-mentados no MA merece destaque. Emtempo real, gráficos dinâmicos exibemvalores críticos que podem incluir uso dememória ou acesso ao disco rígido, e onúmero de conexões no servidor debanco de dados (veja Figura 1). Esterecurso permite ao administrador ver ereconhecer gargalos de forma indepen-dente do tipo de tabela usada (MyISAMou InnoDB). O MA pode disponibilizarao administrador estatísticas de um con-junto de variáveis, tais como bytes_sent ebytes_received, que indicam o volume detráfego de rede.

Administradores de banco de dadosexperientes podem definir quais va-riáveis desejam exibir para analisar umservidor de forma mais adequada às suasnecessidades. Usando uma fórmula sim-ples eles podem, por exemplo, criar umgráfico que exiba o número de bytestransmitidos por segundo através darede. Para criar este gráfico, basta sele-cionar na lista de variáveis, usando omouse, Bytes_sent, clicar com o botãodireito no campo valor e digitar a fór-mula onde aparece ˆBytes_sent.

AMySQL AB, fabricante do bancode dados MySQL, está desenvol-vendo um conjunto de ferramen-

tas gráficas para tornar mais fácil a vidado administrador MySQL que encontradificuldade no uso de comandos via ter-minal. O conjunto completo de ferra-mentas, que deve estar disponível dentrode um ano, facilitará tarefas como insta-lação, configuração, e monitoramento declusters MySQL para replicação e balan-ceamento de carga. Assim como o pró-prio MySQL, suas ferramentas gráficasserão disponibilizadas sob a licença GPL.

A MySQL anunciou sua linha de pro-dutos gráficos em janeiro deste ano,quando demonstrou o MySQL Adminis-trator [1] em Nova York, na Linux WorldExpo. A Linux Magazine teve acesso aonovo software, e conversou com o princi-pal desenvolvedor, Mike Zinner, sobre asferramentas para administração que aMySQL AB tem produzido.

MySQL Administrator (MA) é um con-sole gráfico para administração de ban-cos de dados MySQL versão 4 ousuperior. O MA é capaz de abrir umaconexão não criptografada, ou crip-tografada com SSL, com servidoresMySQL. Quando a Linux Magazine teveacesso ao software, os desenvolvedores

A MySQL AB disponibilizou uma ver-

são preliminar de uma interface grá-

fica para administração de bancos

de dados, que permite a configu-

ração e monitoramento remoto

de servidores MySQL. Mais fer-

ramentas estão sendo desen-

volvidas, para modelagem de

dados e criação de clusters

POR SANDRO ZIC

50 Agosto 2004 www.linuxmagazine.com.br

MySQL AdministratorTUTORIAL

Nova Interface para Administração de Servidores de Banco de Dados

Domando o MySQL

não haviam adicionado suporte à cone-xões via SSH. O novo conjunto de pro-gramas também inclui recursos paramonitoramento de usuários, estado dosistema, backup e recuperação de dados,e visualização de “logs”. Versões prelim-inares (beta) para Windows e Linux já seencontram disponíveis para download, ea versão para Mac OS X deverá estarpronta até o final do ano.

Sem o peso do JavaNeste artigo, testamos a versão paraLinux num sistema Suse 9.0 com KDE3.1.4, e uma versão para Windows emuma máquina com o Windows XP Pro-fessional. Como nossa versão de teste foiuma distribuição pré-alpha extraída dire-tamente dos desenvolvedores, nós espe-rávamos encontrar alguns problemas. Naverdade, o software demonstrou ser ex-cepcionalmente estável em ambas asplataformas, e a instalação foi realizadasem maiores surpresas ou dificuldades.

O software inicializou de forma muitorápida em ambos os sistemas. Contras-tando com alguns utilitários gráficosbaseados em Java, que inicializam deva-gar, o MA utiliza bibliotecas em C. Ainterface para ambiente Windows foidesenvolvida em Delphi VCL, e a bibli-

O caractere ^ simboliza o intervalo detempo no MA que, por padrão, é “porsegundo”. Esta notação é reconhecidapelo MA que passa a exibir, de formadinâmica, os valores assumidos por estavariável em um gráfico. Outras fórmulasmais complexas podem ser geradas damesma forma. Por exemplo, se você pre-cisar de um gráfico dos cache hits,mostrados como um porcentual dassolicitações totais ao cache, atualizadono intervalo de um segundo:

(^[Qcache_hits]/(^[Qcache_Uhits]+^[QCache_inserts]+^[UQCache_not_cached]))*100

Esta forma de implementação abre umanova perspectiva de monitoração para osprofissionais experientes em adminis-tração de bancos de dados.

Gerenciamento de UsuáriosO MA integra o gerenciamento deusuários de forma muito mais conve-niente do que qualquer outro programade sua categoria. Clique em User Admi-nistration para mostrar uma lista com-pleta de usuários no lado esquerdo dajanela (veja a Figura 2). Você pode, como mouse, selecionar um usuário e visu-alizar o nome dos servidores aos quaisele possui acesso. O administrador pode,da mesma forma, selecionar um servidore registrar novos usuários, incluindo se-nhas, dados para contato, uma descriçãoda função do usuário ou até mesmo adi-cionar uma foto.

O MySQL possibilita o controle deacesso por servidor, banco de dados,tabela ou coluna. Páginas especiais noMySQL Administrator permitem aosadministradores gerenciar cada umdestes grupos de controle. As funçõesestão disponíveis em páginas de rápidoacesso. Cada página tem, à sua direita,uma lista de privilégios. O administradorque estiver operando o MA poderáatribuir privilégios aos usuários de formasimples, basta usar o velho truque do“arrastar e soltar” arrastando os privilé-gios até o usuário que deve recebê-los. Ouso deste recurso permite ao admin-istrador restringir o acesso de usuáriosaos servidores de banco de dados. Oadministrador pode, por exemplo, definirlimites tais como o número máximo deconexões por hora.

Recursos ÚteisAlém da praticidade na administração detarefas, o MA traz recursos para geren-ciamento de rotinas de backup. Paracriar um backup, o administrador pri-meiramente cria uma referência, nave-gando na interface e selecionando dentreos objetos do banco de dados, aquilo quedeve armazenado no arquivo de backup.Esta implementação permite que, desdeum banco de dados completo, ou mesmouma única tabela, até uma simples co-luna, possam ser selecionados e o back-up executado. Um outro recurso, quepermitirá aos administradores definir ta-refas e pré-programar sua execução, en-contra-se em fase de desenvolvimento.

A atenção aos detalhes faz do MA umaferramenta muito útil no dia-a-dia. Porexemplo, o recurso que permite separarentradas de erros, ou o log de consultaslentas em uma janela separadas. Issopermite ao administrador filtrar rapida-mente os registros críticos, acelerando aanálise do log. Basta um simples cliqueem um evento registrado e o MA exibirárapidamente o referido contexto noarquivo de log.

Explicações sobre as várias opçõesencontradas no arquivo de global deconfiguração do servidor (my.cnf) po-dem ser encontradas no MA. Junto comopção que habilita e desabilita o modode debug há um aviso de que o banco dedados trabalhará de forma mais lentaneste modo, pois todas as atividadesserão registradas. No programa tambémexistem várias dicas úteis para usuáriosinexperientes ou principiantes.

Na versão que testamos, o compo-nente para monitoração de bancos dedados replicados não estava implemen-tado. Contudo, fomos informados de queele fornece apenas uma visão geral docluster; um aplicativo separado, chama-do de Replication Manager, estará dispo-nível para o gerenciamento de clustersno futuro. Misterioso, Mike Zinner nãoquis detalhar o tipo de administraçãoque será suportado pelo ReplicationManager. Entretanto, Mike revelou quegostaria de construir um cenário de repli-cação que fosse simples e adicionou,“nós demonstraremos algo realmentebom em abril, durante a conferência dosusuários do MySQL”.

Planejando mais FerramentasWorkbench é o codinome de outro pro-jeto em andamento. A primeira versãoestável deverá ser similar ao DB Designer4 [4]. Os administradores poderão,através do Workbench, criar e modificarestruturas do banco de dados em umainterface amigável, que exibirá, porexemplo, os relacionamentos (ForeignKeys). Usuários do MySQL esperam comcuriosidade para saber se o Workbench”disponibilizará uma ferramenta dedebug para stored procedures, como aque deve ser implementada na versão5.0 do MySQL.

Mike Zinner nos disse que “Work-bench e Query Analyser suportarão ogerenciamento de stored procedures. OMA fornecerá apenas uma simples visãogeral, assim como o módulo de repli-cação, permitindo ao administrador abrir

51Agosto 2004www.linuxmagazine.com.br

TUTORIALMySQL Administrator

Figura 1: Monitoramento do comportamento de um sistema. Esta tela exibe uma visão geral do estadoda memória em um servidor.

Administrator, especialmente em funçãode suas características de usabilidade emonitoração de sistema, mesmo emcondições críticas. Boas novas para osadministradores que preferem a velhainterface de linha de comando: vocêpode acessar um shell de dentro do pro-grama e navegar entre vários consoles.

O MA é uma proposta interessante porapresentar novos horizontes à adminis-tração de bancos de dados gratuitos, semse esquecer dos administradores ini-ciantes. O grande conjunto de parâme-tros possibilita a configuração de umservidor MySQL nos mínimos detalhes, e

a ferramenta para gerenciamento deusuários economiza tempo e trabalho dedigitação. Os iniciantes podem acessar aseção Best Practices [6] onde encontrarãoconselhos sobre ajustes para melhordesempenho e administração eficientede seus bancos de dados. Já os admin-istradores experientes provavelmenteserão beneficiados com ferramentasfuturas como o Replication Manager. ■

o Workbench ou o Query Analyzer paratrabalhar em uma stored procedureespecífica.” O Query Analyser suportaexecução de consultas e manipulaçãodos resultados, além da análise de con-sultas individuais e stored proceduresbaseada em declarações “EXPLAIN”.Mais detalhes sobre este recurso foramapresentados na “MySQL Conference”.

O “MySQL Administrator” marca o iní-cio de uma nova família de produtos quediminuirá o esforço necessário para aboa administração de bancos de dados.Esta família de produtos está dividida emduas linhas: as ferramentas administrati-vas, compostas pelo MA, ainda em cons-trução, e ferramentas para desenvol-vimento como o Workbench, o QueryAnalyser e o Replication Manager.

Conjunto CompletoA MySQL AB possui como objetivo aprodução de versões estáveis destesaplicativos até o final de 2004. O ciclo dedesenvolvimento incluirá versões Alpha,Beta e Gamma que caminharão progres-sivamente rumo a uma versão estável,em linha com o desenvolvimento doBanco de Dados MySQL. A longo prazo,a empresa pretende substituir o “MySQLControl Center [5]”. Mesmo os mais fer-vorosos defensores do shell provavel-mente não aguentarão esperar para terem suas mãos uma versão do MySQL

52 Agosto 2004 www.linuxmagazine.com.br

MySQL AdministratorTUTORIAL

[1] MySQL Administrator: http://www.mysql.com/products/administrator/

[2] Gtkmm: http://www.gtkmm.org

[3] SAPDB Database Manager:http://www.sapdb.org/7.4/sap_db_dbm.htm

[4] DB Designer 4:http://fabforce.net/dbdesigner4/

[5] MySQL Control Center: http://www.mysql.com/products/mysqlcc/

[6] MySQL Administrator - “Best Practices”:http://www.mysql.com/articles/mysql-administrator-best-practices.html

Figura 2: Tela de gerenciamento de usuários. O administrador pode designar quais usuários terão acessoao servidor. Esta tela foi capturada de uma versão do MA para Linux.

Figura 3: Visão geral de um cluster MySQL. Nós podem ser adicionados e removidos facilmente com ouso do mouse.

Sandro Zic brinca comcomputadores desdea infância, quandoescreveu seus primei-ros programas emBASIC. Ele se dedicaprofissionalmente aodesenvolvimento de software desde1998, e possui conhecimentos emLinux, Perl, PHP, Servlets Java, JSP, XMLe sistemas de bancos de dados comoMySQL, PostgreSQL e Oracle. Atual-mente é CEO da ZZ/OSS.

SOBR

EO

AUTO

R

INFORMAÇÕES

Em 1993, um ano após o lança-mento da versão 1.0 do Linux, umestudante universitário chamado

Patrick Volkerding começou a utilizaruma das primeiras versões do sistemaorganizado em forma de distribuição, oSLS, para um trabalho. Percebendo quevárias coisas poderiam ser melhoradas,Patrick realizou diversas modificaçõesno sistema. Ao terminá-las, mostrou-asao seu orientador, que o incentivou adisponibilizar o sistema na internet. Ele

o fez, e em dois dias o número de down-loads foi tão grande que derrubou oservidor ftp. Nascia o Slackware Linux.

Os pacotes .tgzNo Slackware trabalha-se sempre tendoem mente a filosofia KISS: ”Keep It Sim-ple, Stupid!” (mantenha-o simples, estú-pido!). O sistema de gerenciamento depacotes também é assim. Os pacotes são,em sua essência, a estrutura completaque será instalada: a árvore de dire-tórios, contendo os binários, documen-tação e arquivos de configuração. Érealmente um arquivo concatenado (tar)e compactado (gzip).

Experimente pegar algum pacote parao Slackware e expandi-lo com tar zxvf.Se isto for feito no diretório raiz, metadedo trabalho de instalação está feito.Porém não basta só isto. Junto à estru-tura do pacote está o diretório install/,

que contém os arquivos slack-desc eo do-install.sh. O do-install.sh é uti-

lizado quando há a necessidadede alguma configuração extra:

adicionar um usuário, con-figurar uma permissão de

acesso especial em al-gum arquivo, criarlinks, etc. Já o slack-desc contém a des-crição do pacote.

Dependências entre pacotesAntes de realmente começarmos a por asmãos no teclado, é importante fazeralgumas considerações. Não, os pacotesdo Slackware não checam dependências.Para alguns esta é uma desvantagem,para outros uma vantagem. Cada umencara de uma maneira, e os usuáriossão tão diferentes quanto são diferentesas múltiplas distribuições Linux.

Em defesa da falta de checagem dedependências, o Slackware tem a carac-terística de deixar todas as decisões do

sistema por conta do administrador. Porexemplo, a autenticação do sistema podeser feita via LDAP, PAM ou outro sistemade autenticação qualquer, e muitas dis-tribuições colocam um ou mais destescomo um requisito para outras partes dosistema. Isto, no entanto, não é essen-cial: a autora deste artigo, por exemplo,não utiliza nenhum dos sistemas de au-tenticação citados. Então, quem podedizer o que realmente é dependência ounão é o usuário da distribuição.

Aqui há, entretanto, algumas alternati-vas. Primeiro, se você acredita que nãopode viver sem que o sistema calcule asdependências para você, deve procuraruma ferramenta chamada swaret [3],disponível no diretório extra do Slack-ware, ou alternativas como o slapt-get[4] e SlackUpdate [5].

Porém, se você quer manter tudo sobseu controle, a solução é bastante sim-ples: se determinado programa nãoestiver funcionando e você desconfiarque falta alguma dependência para ele,utilize o ldd. Digite ldd programa, e seaparecer alguma linha indicando um“not found”, pesquise o arquivo Mani-fest, no CD do Slackware, para saber seele está em algum pacote. Se não, pro-cure no Google e instale o software quefornece aquela biblioteca. Assim, o pro-blema das dependências será resolvido.

Uma afirmação freqüente é que o Slackware não dispõe de um sistema de gerenciamento de pacotes. Ele existe, e neste

artigo vamos aprender a utilizá-lo corretamente e a desenvolver nossos próprios pacotes. POR SULAMITA GARCIA

Gerenciamento de pacotes no Slackware

Embrulha pra viagem!

53Agosto 2004www.linuxmagazine.com.br

TUTORIALGerenciamento de Pacotes

SLS: abreviação de “Soft Landing System”ou“Softlanding Linux System”. Foi a primeiratentativa – ou segunda, juntamente com aMCC (Manchester Computing Center distri-bution) – de organizar um sistema GNU/Li-nux no formato que conhecemos hoje comodistribuição. Ambas foram criadas em 1992. OSlackware (1993) nasceu do esforço em me-lhorar a SLS, mas foi muito além, sendo amais antiga distribuição ainda disponível,uma vez que tanto SLS quanto MCC deixa-ram de existir.

GLOSSÁRIO

em todos eles. É claro queexiste uma saída mais ele-gante do que sair recompi-lando o código em todas asmáquinas: você pode con-figurar e compilar o soft-ware como quiser em umamáquina qualquer, fazerum pacote e instalá-lo emtodas as outras. Há duasformas de se fazer isto: comcheckinstall ou makepkg

No diretório extra/ daárvore do Slackware existeo programa checkinstall. Eleé uma ferramenta que podecriar pacotes nos formatostgz, deb ou rpm. Funcionada seguinte maneira: comos fontes de um programaque você deseja instalar, e-xecute os passos usuaispara a instalação, ou seja,./configure --opções && ma-ke. A forma certa de fazerisso é indicar no arquivo./configure os diretórioscorretos para binários (--bindir=/usr/bin), páginasde manual (man pages: --mandir=/usr/man), confi-guração (--confdir=/etc/ e-xemplo), diretório de bi-bliotecas (--libdir=/usr/ lib- muito importante), etc.Rode ./configure -help paraver uma lista com todas asopções disponíveis.

Após configurar tudo cor-retamente, inicie o processode compilação digitandomake. Depois de tudo pron-to, substitua o comandomake install por checkin-stall. O programa vai lhe

fazer algumas perguntas e criar umpacote no formato tgz. O nome doarquivo será composto pelo nome doprograma, a versão, a arquitetura e orelease, separados por hífen.

Já disse que um pacote do Slackware éformado pelos arquivos necessários aosoftware, um script de pós- instalação eum arquivo de informações sobre opacote, o slack-desc. O checkinstall cria,ao invés do slack-desc, um arquivo cha-mado description. É preciso corrigir istose quisermos um pacote “oficial”.

O princípio de tudo:pkgtoolVocê já se encontrou com ele,mas nem notou: o pkgtool é aferramenta utilizada durante ainstalação do Slackware. Sevocê executá-la, ela irá lhepedir para escolher o que querfazer: instalar ou remover paco-tes, ou verificar os já instala-dos. Por exemplo, se você exe-cutá-la dentro do diretórioslackware/k/ do CD-ROM doSlackware, que contém ospacotes com fontes do kernel,ele lhe mostrará as opções indi-cadas na Figura 2.

Desta forma você pode nave-gar pelos pacotes instalados,selecionar outros para instalar,ou mostrar informações sobrecada pacote e decidir se querinstalá-lo ou não.

Instalando ouatualizando pacotesO pkgtool tem vários “irmão-zinhos”. O principal deles é oinstallpkg, que instala um paco-te: ele o descompacta, executao script do-install.sh e cria umarquivo no diretório /var/log/packages/ com o nome do pa-cote, contendo sua descrição ea lista dos arquivos instalados.Desta forma, você tem um reg-istro de todos os pacotes de seusistema e pode procurar fa-cilmente o nome de um pacoteem particular, a qual pacotepertence certo arquivo, etc.

Uma outra ferramenta muitoútil é o upgradepkg. Em qual-quer mirror do Slackware vocêencontrará o diretório patches/packages/, onde estão as correções(patches) dos pacotes da distribuição.Logo após uma instalação, é semprerecomendável dar uma olhada nestediretório e verificar quais atualizaçõessão aplicáveis ao seu sistema.

Com estas atualizações em mãos, uti-lize o comando upgradepkg para atu-alizar os pacotes. Também é recomen-dável se inscrever na lista de discussãoslackware-security [5] para ser informadovia e-mail sempre que um pacote for atu-alizado por questões de segurança.

54 Agosto 2004 www.linuxmagazine.com.br

Gerenciamento de PacotesTUTORIAL

Figura 1: A estrutura de um pacote para o Slackware.

Figura 2: O utilitário pkgtool.

Figura 3: O registro de um pacote em /var/log/packages.

Removendo pacotesMuita gente acha que no Slackware nãohá outra maneira de remover um pacotea não ser “na unha”. Isto é mais ummito: os pacotes instalados podem serfacilmente removidos utilizando-se o co-mando removepkg. Simples e indolor.

Criando pacotesAgora vem a parte mais interessante dacoisa: fazer seus próprios pacotes. Di-gamos que você tenha uma dúzia deservidores, e queira instalar um software

Assim temos controle totalsobre todos os pacotes instala-dos. É uma excelente idéiacriar um pacote sempre quefor preciso instalar um soft-ware, já que assim você terá a-cesso fácil às informaçõessobre todos os arquivos queforam colocados em seu sis-tema. Com o comando grep"arquivo" /var/log/packages/*você descobre a qual pacotepertence arquivo. Tudo issosem perder de vista a filosofiade simplicidade que governa oSlackware.

As instruções de empacota-mento mostradas neste artigoservem para a maioria dossoftwares, mas sabemos quetoda regra tem sua exceção:alguns programas, como oqmail ou o courrier-imap,usam métodos não padroniza-dos de instalação. Como este

é um assunto no mínimo tão extensoquanto este artigo, vamos deixá-lo parauma próxima edição. Até lá, treine os co-mandos aqui mostrados e veja como ogerenciamento de pacotes no Slackwarepode ser simples e muito eficiente. ■

Sulamita Garcia inte-ressou-se por compu-tadores ao trabalharcomo auxiliar numescritório onde não adeixavam chegar per-to de um. É formadaem Ciências da Com-putação pela UFSC, onde conheceu oLinux e não largou mais. Participa doprojeto LinuxChix e mantém o site deAlta Disponibilidade na UnderLinux,possuindo também certificação LPIC I.Trabalha atualmente na CycladesBrasil como Software Designer.

SOBR

EA

AUTO

RA

O arquivo do-install.sh,que é um shell script e tam-bém não é específico doSlackware, foi preparadopara trabalhar com o slack-desc. Para criar um pacote noformato oficial devemosmodificá-lo. Não realizar taisalterações não implica nomal funcionamento do paco-te, apenas irá deixá-lo no for-mato “incorreto”.

Dissemos anteriormenteque um pacote é um arquivoconcatenado e compactadono formato tar e gzip. Pode-mos extrair seu conteúdocom o comando tar zxvf ouusar uma outra ferramentada turma do pkgtool, oexplodepkg. No diretórioinstall/, que foi criadodurante a descompactação,devemos remover o arquivodescription e criar nele umarquivo chamado slack-desc. Veja maissobre sua estrutura no Quadro 1.

E para reempacotar o programa? Ocheckinstall é um bom utilitário para acriação de pacotes, mas a ferramentacerta para isso é o makepkg. Este,porém, espera a estrutura criada pelocheckinstall, neste caso o(s) diretório(s)de instalação e o diretório install/. Comoesta estrutura já foi descompactada peloexplodepkg, podemos utilizar o makepkgpara finalizar a geração do pacote.

Pronto. Agora temos um pacote quenão existe na árvore oficial do Slackwarepronto para ser instalado. Na verdade elejá foi até instalado pelo checkinstall, queé um pouco intrometido. Porém pode-mos removê-lo facilmente com o util-itário removepkg e instalar o novo pacotecom o installpkg. Depois disto, verifiqueo arquivo /var/log/packages/pacote, evocê verá que a lista de todos osarquivos instalados e a descrição do seunovo pacote estão lá.

55Agosto 2004www.linuxmagazine.com.br

TUTORIALGerenciamento de Pacotes

Figura 4: Criando um pacote com o checkinstall.

Figura 5: O utilitário makepkg em ação.

Um arquivo slack-desc é composto por informações sobre o pacote (nome, versão, a arquitetura e orelease, separados por hífen), terminadas por “:”, seguidas da descrição do pacote. Na descriçãovocê pode colocar um pequeno resumo da função do pacote, data de criação e um endereço de con-tato com o autor, para que dúvidas ou problemas possam ser relatados. Exemplo:

QUADRO 1: O ARQUIVO SLACK-DESC

[1] Página oficial do Slackware:http://www.slackware.com/

[2] Swaret: http://www.swaret.org/

[3] slapt-get:http://software.jaos.org/

[4] SlackUpdate:http://128.173.184.249/slackupdate/

[5] Listas de discussão oficiais:http://www.slackware.com/lists/

[6] Checkinstall:http://asic-linux.com.mx/~izto/checkinstall/

INFORMAÇÕES

ado; se não, o usuário ganha acesso auma caixa de edição onde ele pode criaruma nova página com o título especifi-cado (veja a Figura 1).

Uma sintaxe de fácil compreensãofacilita o trabalho de formatação. Digitarum asterisco no começo de uma linha

cria uma lista, texto cercado por sinaisde igualdade transforma-se num título.

No momento existem mais de 100 fer-ramentas [1] wiki disponíveis. A Media-Wiki [2] é um exemplo popular. Elafornece o suporte tecnológico para aenciclopédia livre, Wikipedia, o modelode conduta para muitos outros wikis(veja “Jornada ao Mundo dos Wikis”).No seu primeiro ano de vida, aWikipedia usou o wiki Usemod, escritoem Perl. Mas a rotina provou ser muitoexigente para o Usemod, que ameaçouentrar em colapso sob a carga de mi-lhares de artigos e visitantes.

Isso levou os wikipedianos a desen-volver a ferramenta MediaWiki em PHP,usando um back-end em MySQL. Habili-dades em PHP são úteis se você precisacriar ou modificar um wiki, mas mesmose você não “fala” PHP a MediaWikiainda permite a você criar um wiki fun-cional e fácil de usar.

Estável ou ExperimentalO MediaWiki está disponível em dois“sabores”. A versão estável pode serbaixada na página oficial [2] do projeto.

Wiki significa rápido em hava-iano e a tecnologia wiki,baseada na web, estabeleceu-

se de forma extremamente rápida. WardCunningham teve a idéia em 1995quando estava procurando um métodopara colecionar exemplos de tarefascomuns de programação entre um grupode desenvolvedores. A idéia simples erapermitir modificações de cada página dowiki no próprio navegador. Colchetessão tudo o que você precisa para trans-formar um trecho de um texto em umlink. Se a página já existe, o link é cri-

A enciclopédia livre Wikipedia usa o

sistema MediaWiki para coletar uma

enorme base de dados sobre conheci-

mentos gerais. Se você quiser criar

seu próprio wiki, este software escrito

em PHP é uma boa escolha, que

fornece rica funcionalidade e muito

poder. POR ERIK MÖLLER

Instalando e mantendo o MediaWiki

Autoria Coletiva

56 Agosto 2004 www.linuxmagazine.com.br

MediaWikiSYSADMIN

O Mediawiki não está restrito às enciclopé-dias. Além da Wikipedia, sua comunidadetambém lançou o Wiktionary, http://www.wiktionary.org, em dezembro de 2002. Estedicionário fornece a definição em inglês devárias palavras e suas traduções em váriosoutros idiomas, enviadas por usuários detodo o mundo.

Citações e livros escolares

O Wikiquote, http://www.wikiquote.org, éuma coleção categorizada de citações; Já oWikisource, http://www.wikisource.org, adi-ciona material de fontes originais para suple-mentar a Wikipedia, disponibilizado sobdomínio público ou uma licença livre. O pro-jeto Wikibooks, em http://www.wikibooks.org,não é relacionado à Wikipedia em setratando de conteúdo, mas fornece materialdidático livre sobre uma variedade de tópi-

cos. Este projeto pode se transformar em umarquivo central para roteiros de palestraspara o ensino universitário.

Enciclopédia da Desinformação

A Wikipedia tem uma lista [10] de outrosMediawikis. Entre os exemplos dignos denota está a enciclopédia da desinformação,Disinfopedia, em http://www.disinfopedia.org. O co-autor do Mediawiki, EvanProdomou, mantém um guia de viagenschamado Wikitravel em http://www.wikitravel.org, e a base de conhecimento edocumentação Open Source do autor desteartigo, chamada OpenFacts, está disponívelem http://openfacts.berlios.de. Já os fãs deStar Trek vão se deliciar com o Memory Alpha(http://www.memory-alpha.org), lotado deinformações sobre o universo no qual asséries e filmes são baseados.

Jornada ao mundo dos Wikis

A versão em desenvolvimento tambémdeve funcionar, mas contém recursosexperimentais. Você pode baixá-la direta-mente usando o CVS:

cvs -d:pserver:[email protected]:/cvsroot/Uwikipedia logincvs -z3 -d:pserver:[email protected]:/cvsroot/Uwikipedia co phase3

O diretório phase3 contém o software,que você pode atualizar a qualquermomento com o comando cvs update. OMediaWiki requer o Apache 1.3.27,MySQL 4.0.13 e PHP 4.3.2, incluindo ointerpretador de comandos, e é com-patível com o PHP 5.

Se você quiser que o software redi-mensione as imagens automaticamente,pode optar pelo toolkit ImageMagick, ouusar a biblioteca gd, encontrada em ver-sões atuais do PHP. O ImageMagick tema vantagem de suportar muito mais for-matos de imagem que a gd.

O script install.php, encontrado nodiretório raiz da árvore de código fonte,inicia a instalação. Antes disso, você vaiprecisar ajustar alguns detalhes da con-figuração. O administrador deve copiaros exemplos de configuração, LocalSet-tings.sample e AdminSettings.sample,para LocalSettings.php e AdminSet-

O script de instalação do MediaWikicria três usuários no MySQL e lhes dá osprivilégios de acesso à base de dadosnecessários. O sistema usa o usuárioespecificado em $wgDBuser para ope-rações normais na base de dados,equanto o usuário $wgDBSQL tem per-missão somente para leitura. Esta contaé usada por uma página especial quepermite aos sysops executar consultasSQL para, por exemplo, localizar e dar asboas-vindas aos usuários recentementeregistrados. O administrador do MySQLtambém deve adicionar a conta$wgDBadminuser e sua senha aoarquivo AdminSettings .php. Esta contatem permissão de escrita e é usada porscripts em tarefas relacionadas à insta-lação e manutenção do sistema.

Para instalar o wiki, certifique-se deestar logado como root e execute ocomando php install.php. Em algumasdistribuições Linux, o interpretador decomandos pode se chamar php4 em vezde php. Entre outras coisas, o script lhepede a senha de root do MySQL e cria abase de dados, tabelas e usuários doMySQL. Por último, ele se oferece paracriar duas contas de usuário no wiki,uma chamada sysop (o operador do sis-tema) e outra chamada developer (dese-volvedor). Isto é recomendado. Semestas contas, você terá de criar tais usu-ários e atribuir a eles os privilégios deacesso manualmente, mais tarde.

Para configurar seu servidor web, adi-cione .phtml como extensão válida paraarquivos PHP ao arquivo de configu-ração do Apache, httpd.conf:

57www.linuxmagazine.com.br Agosto 2004

SYSADMINMediaWiki

igura 1: A janela de edição do Mediawiki tem uma barra de ferramentas em Javascript para ajudar os ini-ciantes na formatação de seus artigos. Colchetes duplos ([[]]) indicam um link para uma outra página.

Figura 2: Um artigo típico da Wikipedia mostra que os wikis não precisam ser feios. Índices são geradosautomaticamente, a partir dos títulos de cada seção.

tings.php. A Tabela 1 mostra as variáveisdo arquivo LocalSettings.php que devemser modificadas.

Escolha de IdiomaA Wikipedia suporta mais de 50 idiomas,e é um dos wikis mais amplamentetraduzidos. Isso permite que você crieum wiki em Árabe, Chinês, Japonês,Hebreu, Hindi, Russo ou Vietnamita,inclusive com suporte a Unicode. Paraisto, tudo o que o operador do wiki pre-cisa fazer é configurar as variáveis$wgInputEncoding e $wgOutputEncodingpara UTF-8.

Instalação ManualSe você não tiver acesso ao servidorcomo root, ou se o script de instalaçãofalhar, você pode instalar o MediaWikimanualmente. O primeiro passo é criar abase de dados. Você deve estar ciente deque conflitos de nome com outrastabelas podem ocorrer caso você useuma base de dados já existente. OMediaWiki não usa um prefixo.

Importe as tabelas de tables.sql eindex.sql no diretório de manutenção:

mysql -u root -p nomedabasededaUdos < nomedoarquivo.sql

Você irá precisar modificar um conjuntomínimo de parâmetros no arquivoLocalSettings.php; deixe o usuário SQL

AddType application/x-httpd-phpU.php .phtml

No diretório upload, criado pela insta-lação (onde o MediaWiki guarda osarquivos enviados), a execução descripts em PHP e exibição de páginasHTML deve ser proibida:

<Directory /caminho/para/Udiretório/upload>AllowOverride NoneAddType text/plain .html U

.htm .shtmlphp_admin_flag engine off</Directory>

Você terá que habilitar algumas variáveisglobais para o diretório com os scripts.Adicionar php_value register_globals 1 àdeclaração Directory na configuração doApache resolve o problema.

Como alternativa, você pode modificaro arquivo php.ini, tipicamente encon-trado em /etc ou /etc/php4.

FortificandoO script de instalação copia todos osarquivos PHP para o diretório do servi-dor web. Quanto mais scripts externa-mente acessíveis você tiver lá, maior orisco de que um atacante possa ganharacesso a funções internas. Isso é particu-larmente verdadeiro para register_glo-bals, já que parâmetros em URLs permi-tem que você configure variáveis inter-nas dos scripts.

Somente os arquivos realmente essen-ciais devem ficar no diretório do servidorweb, ou seja, aqueles terminados em.phtml, imagens e folhas de estilo (.css).O melhor a fazer é mover qualquerarquivo terminado em .php para umdiretório separado, fora da raiz de docu-mentos, logo após a instalação. Apósmover os arquivos, substitua os linkspara ./LocalSettings.php nos arquivos.phtml por links para LocalSettings.php eadicione o caminho para esse arquivo àdiretiva include_path no arquivo php.ini.

Note que na atual versão instável, quejá pode ter se tornado estável quandovocê estiver lendo este artigo, osarquivos .phtml são considerados obso-letos – Neste caso, copie index.php eredirect.php para o diretório do servidorweb, e copie todos os outros arquivos.php para um diretório seguro.

58 Agosto 2004 www.linuxmagazine.com.br

MediaWikiSYSADMIN

Variável Ambiente Local

$IP Diretório local no servidor para onde você copiou o wiki, por exemplo /var/www/wiki.

$wgServer Endereço do servidor antes da primeira barra na URL, por exemplo http://www.meuwiki.com

$wgScriptPath Subdiretório com os arquivos .php, por exemplo, wiki. Deixe vazio (“”) se os arquivos estiverem no diretório principal do servidor web.

$wgEmergencyContact Endereço de email do administrador, a ser exibido em caso de problemas.

$wgDBserver Nome da base de dados do MySQL

$wgDBuser e $wgDBpassword Usuário do MySQL para uso normal da base de dados

$wgDBsqluser e $wgDBsqlpassword Usuário do MySQL para execução de comandos SQL através da interface web. Só possui permissão para leitura.

$wgLanguageCode Código de dois dígitos para o idioma a ser usado, por exemplo en para Inglês, ptpara Português.

Tabela 1: Configuração Básica

Figura 3: A visão comparativa (diff view) destaca as diferenças entre duas versões de uma página,mostrando alterações e exclusões. Operadores só precisam apontar e clicar para restaurar versões ante-riores.

de fora e ignore o arquivo AdminSet-tings.php. Claro, você precisa de umusuário para a base de dados principal.Copie quaisquer arquivos .php e .phtmlem includes e languages, e os diretóriosstylesheets e imagens, para o diretórioprincipal do servidor web.

Agora você pode abrir o arquivowiki.phtml em seu navegador para aces-sar a página principal de seu recém-instalado MediaWiki. Experimente osvários recursos (veja o quadro Noçõesbásicas de MediaWiki). Se o servidorweb não reconhecer a extensão .phtml,renomeie o arquivo para index.php.Nesse caso, você também vai precisareditar as variáveis $wgScript e $wgRedi-rectScript. Um exemplo pode ser encon-trado em DefaultSettings .php.

Privilégios de usuárioA maioria dos wikis permite que suaspáginas sejam editadas por usuáriosanônimos. Isto gera dúvidas quanto acomo o administrador vai lidar com con-teúdo indesejável ou mesmo vandal-ismo. O MediaWiki tem alguns mecanis-mos de defesa: você pode restringir aleitura ou edição de conteúdo a gruposespecíficos. As variáveis $wgWhiteListE-dit e $wgWhiteListRead no arquivoLocalSettings.php o ajudam a fazer isso.O array $wgWhiteListAccount define osgrupos que possuem permissão deleitura ou escrita:

$wgWhiteListAccount=array(U--user" => 0. --sysop" => 1. U

--developer" => 1)

Este ajuste restringe as modificações aosoperadores de sistema e desenvolve-dores. A linha seguinte adiciona umnovo tipo de usuário, chamado editor:

$wgWhiteListAccount=array(U--editor" => 1. --user" => 0. U

--sysop" => 1. --developer" =>U1)

Depois de criar o tipo de usuário, o ope-rador pode lhe dar privilégios de leituraou escrita ao ajustar o valor do campouser_rights na base de dados do usuáriopara editor.

Até o momento, o MediaWiki não temuma ferramenta genérica para gerencia-mento de privilégios. Isto significa que énecessário formular uma consulta SQLpara fazer de um usuário um sysop,developer ou editor. Por exemplo:

USE Nomedabasededados;UPDATE SET user_rights='sysop' U

WHERE user_name='nomedousuário':

A versão em desenvolvimento do MediaWiki tem um tipo extra de usuáriochamado bureaucrat (burocrata). Buro-cratas usam uma página especial paraindicar outros usuários como sysops.Para poder fazer isso, o usuário precisater privilégios de burocrata e sysop.

Um histórico de mudanças permiteque você monitore os acontecimentosrecentes em seu wiki. O MediaWiki pos-sui o recurso diff, que destaca as dife-renças entre duas versões de um

documento (veja a Figura 3). O históricode mudanças guarda as alterações emuma página desde sua versão original, etambém permite que você recupere ver-sões antigas da página e as republique senecessário. Além disso, usuários tem àsua disposição a função User Contribu-tions, que permite que todo o conteúdocriado por um usuário específico sejaexibido. Operadores podem desfazer asalterações listadas, permitindo a cor-reção de atos de vandalismo em segun-dos, sem interrupção do serviço.

Se uma disputa sobre o conteúdo deuma página surgir, um sysop pode pro-tegê-la temporariamente. Administra-dores também podem banir encren-queiros recorrentes através do bloqueiode seus endereços IP. Infelizmente, oendereço IP de usuários conectados viadial-up muda frequentemente, e eles cos-tumam agir de forma anônima.

Por este motivo, por padrão um blo-queio por endereço IP só dura 24 horas(opção $wgIPBlockExpiration). O vandal-ismo é uma questão supervalorizada,questões de cunho social são maisimportantes. Que tipo de páginas e com-portamento o wiki irá permitir? Ope-radores devem definitivamente pensarsobre estas políticas.

Os operadores do wiki devem definircom cuidado as opções padrão, encon-tradas no array $wgDefaultUserOptionsEn no arquivo Language.php, ou suavariante localizada. Opções como quick-bar (0 = sem barra de navegação, 1 =barra à esquerda, 2 = à direita) sãoimportantes. editiondbclick fará com queuma janela de edição seja aberta apósum duplo-clique na página. showtoc geraautomaticamente um índice para pági-nas com mais de três seções, e showtool-bar habilita a caixa de ferramentas emJavascript no topo da janela de edição(veja a Figura 1).

A opção editsection mostra um linkchamado Edit (editar) ao lado do títulode cada seção da página. Isso permite aedição direta de seções específicas, e éparticularmente útil em páginas muitolongas, já que elimina a necessidade denavegar até a janela de edição. Por outrolado, links deste tipo podem arruinar seulayout, cabe a você decidir o que é maisimportante. Uma alternativa é habilitar aopção editsectiononrightclick, que fazcom que um clique com o botão direitodo mouse no título de uma seção tenha omesmo efeito. Contudo, em nossostestes isto fez com o que o navegadorKonqueror caísse ocasionalmente.

59www.linuxmagazine.com.br Agosto 2004

SYSADMINMediaWiki

Figura 4: Vendo as mudanças recentes no wiki. O link Recent changes leva diretamente à uma visãocomparativa com a versão atual.

array $wgNamespaceNamesPt no arqui-vo LanguagePt.php, por exemplo, elestambém serão removidos da interfacecom o usuário.

Um recurso do Usemod que o Media-Wiki manteve mesmo após a migraçãofoi a sub-página. Por exemplo, um artigochamado Linux pode ter uma sub-páginachamada Linux/Dicas do Kernel. Apágina Dicas do Kernel ganha automati-camente um link levando de volta àpágina Linux. Sub-páginas podem serhabilitadas individualmente para cadacontexto através da variável $wgName-spacesWithSubpages.

O contexto MediaWiki, que é habili-tado através da variável $wgUseData-baseMessages, permite que os usuáriostraduzam todos os elementos de texto dosoftware do wiki. Os nomes das va-riáveis de texto estão armazenados noarquivo Language.php.

Atalhos para blocos de textoO conteúdo de quaisquer páginas criadasneste contexto pode ser inserido emqualquer lugar dentro do wiki. Por exem-plo, para criar um texto de boas-vindaspadrão, crie uma página chamadaMediaWiki:greeting. A tag {{msg:greet-ing}} vai inserir o conteúdo desta men-sagem em outras páginas. Quaisqueralterações na página MediaWiki são ime-

diatamente aplicadas a quaisquer outraspáginas que usem {{msg}} para acessá-la. O comando {{subst:greeting}} adi-ciona o texto especificado à sua posição,mas sem o recurso de atualização auto-mática da mensagem.

Note que páginas no contexto Media-Wiki não podem ter caracteres não-padrão ou espaços em seus títulos.Como cada texto do programa é recupe-rado da base de dados, você só deve usareste recurso em conjunto com a opçãomemcached, descrita mais adiante.

Operando um WikiManter um MediaWiki por um longoperíodo de tempo é na verdade menosestressante que acertar a instalação. Emum mundo perfeito, um operador dewiki só precisaria delegar os privilégiosde sysop e developer. Os utilitáriosmysqldump ou phpMyAdmin são reco-mendados para o backup da base dedados. Ao importar grandes conjuntos dedados, como os artigos da Wikipedia [5],rode logo a seguir o script mainte-nance/rebuildall.php, no diretório deinstalação, para evitar que consultascomo What Links Here falhem.

O MediaWiki tem várias opções deajuste fino – há exemplos no arquivoDefaultSettings.php. Assegure-se de co-piar quaisquer modificações que tenha

ContextoA Wikipedia se deparou rapidamentecom a questão da separação das infor-mações sobre o wiki, suas políticas, oudiscussões sobre artigos da enciclopédia.Por exemplo, há um artigo sobre FAQs, eo FAQ oficial da Wikipedia. Para separaradequadamente os dois, o MediaWikiintroduziu os contextos, que são defini-dos no arquivo Language.php ou suatradução no idioma local. Por padrão, háum contexto principal, um para dis-cussões múltiplas, outro para imagens,um para páginas de usuários, um espe-cial (special) e o especialíssimo contextoMediaWiki. Artigos fora do contextoprincipal sempre terão um prefixo. [[Dis-cussion:Mainpage]] aponta para a páginade discussão que pertence à página prin-cipal. [[User:Troll]] leva à página pessoaldo usuário Troll.

Se você não pretende manter um wikigigantesco, pode evitar o problema dometa-contexto. Por padrão, ele assume ovalor da variável $wgSitename (porexemplo, Wikipedia) no arquivo Default-Settings.php. Como exemplo, o FAQ daWikipedia, parte do contexto principal,seria armazenado em [[Wikipedia:FAQ]].Isto resolve o conflito ao qual nos referi-mos anteriormente, mas dificulta ascoisas em sites pequenos. Se os contex-tos quatro e cinco forem removidos do

60 Agosto 2004 www.linuxmagazine.com.br

MediaWikiSYSADMIN

O principal elemento de navegação noMediaWiki é a barra na lateral esquerda datela (veja Figura 1). Recent changes é um doslinks mais importantes para os visitantesregulares do wiki. Ela mostra as páginas nasquais os colaboradores estão trabalhando nomomento (veja Figura 4).

Usuários registrados podem clicar no linkWatch this page para adicionar uma página àsua lista de observação. Esta lista mostra asmudanças feitas no decorrer da última se-mana às páginas nela presentes, o que per-mite que os colaboradores monitorem asalterações às páginas às quais adicionaramconteúdo. Move page permite que vocêrenomeie uma página. O título anterior per-manece válido, e usuários que estejamseguindo links para a página serão redire-cionados ao novo link.

O link Discussion aponta para a discussãosobre a página atual. Uma página chamadaLinux teria uma discussão chamada Discus-sion:Linux, por exemplo. Um link chamadoPost a comment está disponível na barra lat-

eral deste tipo de página. Basta seguir o linkpara abrir uma janela de edição vazia. Digiteseu comentário e, quando terminar, cliqueem Save page para adicioná-lo à página.

Uma página e seu histórico

Para adicionar uma página, simplesmentecrie um link em uma página já existente, porexemplo, [[Minha nova página]], e clique notexto em vermelho. O link Page history o levaa uma página que mostra as versões anteri-ores da página atual (veja a Figura 4), e tam-bém pode ser usado para restaurá-las. Parafazer isso, selecione uma versão (clique nadata), edite a página exibida e salve-a. O linkCurrent revision também é útil, pois mostraas diferenças entre uma versão qualquer dapágina e a atual.

Upload permite que você envie um arquivoao servidor.Transferências são marcadas nolivro de registro, e você pode embutir umarquivo em uma página com o comando[[Image:arquivo.jpg]], para imagens, ou[[Media:arquivo.zip]] para outros arquivos. OMediaWiki exibe as imagens em conjunto

com o texto, outros tipos de arquivo recebemum link para download.Reconhecendo relaçõesUma das razões para a mudança para umasolução centrada em base de dados é que aequipe Wikipedia precisava de capacidadesavançadas de busca. Por exemplo, o Media-Wiki usa páginas especiais para mostrarpáginas novas ou orfãs, ou seja, páginas quenão são referenciadas por nenhum link.Funções extras listam artigos em ordemalfabética, ou por tamanho.A página especial Most wanted articles dáuma visão geral das palavras chave maisusadas em buscas, mas que não retornaramuma página. O recurso What links heremostra as páginas com links para a páginaatual. Related changes mostra a lista demudanças nos artigos para os quais umapágina aponta, permitindo que você moni-tore tópicos específicos.Se quiser saber mais, o manual oficial doMediaWiki [4] fornece detalhes sobre o uso eadministração do sistema.

Noções básicas de MediaWiki

feito para LocalSettings.php,para evitar que elas sejamsobrescritas durante uma atua-lização do software.

O MediaWiki tem a opção$wgMiserMode para wikis mai-ores. Ativá-la irá desabilitaroperações que consomem maistempo, como a geração da listados artigos mais longos. Habili-tar a opção $wgUseFileCache éconsiderado bom-senso. Issoservirá páginas HTML estáticasaos usuários anônimos, o queresulta em um considerávelganho de velocidade.

Se você está disposto adedicar uma quantidade con-siderável de tempo e esforçoaos ajustes de seu wiki, podequerer experimentar as opçõesmemcached e zlib. Memcachedreduz o acesso à base de dadosao manter cópias de dados deusuários e informações sobrelinks. Zlib comprime versões antigas daspáginas. Isto assume que você tenhacompilado o PHP com as opções––enable-sockets e ––with-zlib. Digite<?phpinfo()?> em uma página PHP deteste para descobrir.

MemcachedO daemon deve rodar em segundo planocom as opções -d -l 127.0.0.1 -p 11000 -m64 ativadas. Isso aloca 64 MB de RAM

como cache para os aplicativos locais. OMemcached não tem um recurso de au-tenticação, e usuários locais tem acessoirrestrito. Evite rodar o memcached emum sistema com múltiplos usuárioslocais. Sem um firewall, ou o parâmetro-l, usuários externos podem acessar oservidor e capturar senhas.

Agora você pode habilitar as seguintesopções: $wgCompressRevisions, $wgUse-MemCached, $wgSessionsInMemached e

$wgLinkCacheMemcached. Aopção $wgCompressRevisionscomprime versões antigas daspáginas com gzip, o que ajuda aeconomizar bastante espaço emdisco no servidor.

A seguir: WikitexDê um pulo no site Wikitextrial[7] para dar uma espiada nainterface Wikitex escrita porPeter Danenberg. Embora aindanão faça parte do código oficial,no futuro ela permitirá que oMediaWiki use múltiplos back-ends. Por exemplo, o GNU Lily-pond [8], que traduz umasintaxe simples em layouts parapartituras cuidadosamente for-matadas. Também será possívelusar várias macros Latex paragerar fórmulas para matemáticae química, ou imagens de tabu-leiros de xadrez para ilustrarestratégias de jogo (veja a Figu-

ra 5). Novos usuários podem, a princí-pio, achar o conjunto de novos recursosconfuso, mas a comunidade MediaWikiestá sempre disposta a ajudar. Se vocêmantém um MediaWiki, assine a lista dediscussão mediawiki-l [9], ou venhabater um papo no canal #mediawiki noservidor irc.freenode.net. ■

SYSADMINMediaWiki

Figura 6: A página de histórico de alterações possibilita acompanhar o desenvolvimento de um artigo.

[1] Lista mestre de sistemas wiki:http://c2.com/cgi/wiki?WikiEngines

[2] MediaWiki: http://www.mediawiki.org

[3] wiki Usemod: http://www.usemod.com

[4] Manual do MediaWiki:http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide

[5] Dumps da base de dados SQL da Wikipedia:http://download.wikipedia.org

[6] Memcached:http://www.danga.com/memcached

[7] Teste do Wikitex:http://www.wikisophia.org

[8] Lilypond: http://lilypond.org/web

[9] Lista de discussão do projeto MediaWiki:http://mail.wikipedia.org/mailman/listinfo/mediawiki-l

[10]Projetos que usam o MediaWiki:http://en.wikipedia.org/wiki/Wikipedia:Sites_using_MediaWiki

[11] Memory Alpha,Wiki sobre Star Trek:http://www.memory-alpha.org

INFORMAÇÕES

Figura 5: A interface Wikitex permite ao MediaWiki mostrar partituras,formulas químicas e matemáticas e até mesmo partidas de xadrez.

61www.linuxmagazine.com.br Agosto 2004

para comunicação entre processos (IPC– inter-process communication). Cadavez que você digita o comando kill paraencerrar um processo desnecessário,você está na verdade enviando um sinala este processo (veja Figura 1). A Figura2 mostra uma lista dos sinais definidospara kill. Esta lista, também contida nocabeçalho do arquivo /usr/include/bits/sgnum.h vale para todos os programas.

Se você tentar encerrar um processosem fornecer qualquer parâmetro adi-cional, o comando emitirá o sinal 15(TERM, terminar). Entretanto, algunsprocessos simplesmente ignoram estesinal, ou já podem ter se encerrado.Neste caso, o sinal TERM não é usado.

Para obter o resultado desejado, vocêprecisa digitar kill -9, dessa formaemitindo um sinal KILL. A menos quevocê tenha escolhido um zombie(“zumbi”, veja o quadro), ou umprocesso que está aguardando por umaoperação de I/O, e que portanto resideno espaço do kernel, o processo é obri-gado a se encerrar.

Encerrando ProgramasAlguns outros sinais são muito impor-tantes – ainda que não pareça tão óbvioà primeira vista. A maioria dos leitores jápressionou [Ctrl]+[Z] para interromperum programa, como um editor de textos.O shell reage mostrando o seguinte:

[2] + Stopped vi U

myfile

Você pode reiniciar o edi-tor digitando o comando fg(foreground, primeiro pla-no). O comando jobs lhediz o estado de todos osprocessos controlados atu-almente pelo shell:

[1] - Running emacs &[2] + Stopped vi Umyfile

[Ctrl]+[Z] envia o sinal19, STOP. O comando fgcontinua o processo inter-rompido, emitindo o sinal18, CONT (continua). Osinal 18 também é usadono comando bg, que enviaum processo para back-ground (segundo plano),do mesmo jeito que adi-cionar um & à frente de

Um processo é iniciado, completaseu serviço, coloca tudo emordem e termina. Se o trabalho é

muito complexo, o proces-so pode levar um certotempo – semanas, ou atémesmo meses, para com-pletá-lo. Tome por exem-plo um servidor Web, quegeralmente residirá na me-mória até que uma versãoatualizada do sistema sejalançada; o mesmo tambémse aplica a muitos outros“daemons”. Isto não querdizer que o ambiente paraeste tipo de software serásempre o mesmo. Apósmodificar um arquivo deconfiguração, o adminis-trador precisa fazer que odaemon note que modifi-cações foram efetuadas, oque envolve tipicamentealguma forma de comuni-cação entre processos.

SinaisSinais são uma das técni-cas mais bem conhecidas

62 Agosto 2004 www.linuxmagazine.com.br

Comunicação entre ProcessosSYSADMIN

Figura 1: O usuário mas executa os comandos ps e grep para procurar pelos proces-sos do Opera, e então executa o comando kill PID, para dizer a esses processos elesque devem terminar.

Figura 2: O Linux reconhece 64 sinais diferentes, os quais possuem um nome e umnúmero. O freqüentemente usado kill -9, também pode ser expresso como: kill -SIGKILL ou kill -KILL.

Ponha ordem em seu sistema usando a...

Linguagem de SinaisUm sistema Unix executa até 30 processos simultâneos. Eles freqüentemente

precisam se comunicar, e os sinais fornecem o melhor método conhecido para

isso. POR MARC ANDRÉ SELIG

um comando. Se você quiser parar tem-porariamente um processo em back-ground (porque ele está consumindomuitos recursos, por exemplo), e con-tinuá-lo mais tarde, pode usar os coman-dos kill -19 e kill -18.

O exemplo acima demonstra umanotação simplificada para os números deprocessos, oferecida pelo bash como umatalho. Normalmente cada processo noLinux tem um PID (Process ID - identifi-cador de processo), entre 1 e 32767,onde 1 é reservado para o init, oprimeiro de todos os processos. Os

primeiros 100 PIDs são usados pelosprocessos do próprio kernel. Os demaisidentificadores são usados pelos progra-mas executados pelo usuário.

Digitar repetidamente kill -18 21967,sem errar, é cansativo. O Bash ofereceduas possibilidades de simplificação. Aprimeira é que ele sabe os PIDs dosprocessos atuais e anteriores. Eles sãomarcados com sinais de mais e menos,respectivamente, na lista de processos.Se você utilizar o comando fg, paramanipular um processo, mas não especi-ficar um PID, o comando é aplicado ao

processo atual. A segunda coisa que oBash faz é fornecer atalhos para osnomes de processos, [1] e [2], nestecaso. Utilize o símbolo de porcentagemantes do número para acessar estes atal-hos. No exemplo anterior, o comando fg%1 envia o Emacs para primeiro plano.

Além de [Ctrl]+[Z] (suspender),alguns shells também executam umasuspensão “atrasada” de um processo,[Ctrl]+[Y]. Enquanto o comando parasuspender imediatamente um processoenvia um sinal STOP, o [Ctrl]+[Y]espera até que o processo termine de ler

SYSADMINComunicação entre Processos

Figura 3a: O SSH aguarda pacientemente que os processos-filho terminemantes de fechar a conexão. Digitar ~ força o fechamento.

Figura 3b: Processos demorados em background precisam ser iniciados com ocomando nohup, se quiser que eles sobrevivam ao comando ~.

O que realmente aconteceu é que oSSH não travou, simplesmente notouuma tarefa em segundo plano. O SSHestava esperando que este processoterminasse para então encerrar aconexão. Quando a conexão é interromp-ida, um sinal HUP é enviado aoprocesso, encerrando-o.

A Figura 3b, mostra o jeito certo defazer isto. O comando nohup protege umprocesso em segundo plano de um sinalHUP. O SSH nota isto e continua aesperar, mas desta vez a conexão podeser encerrada sem afetar o processo emsegundo plano. O utilitário dbdumpcontinuará em execução, e apresentaráseus resultados na próxima vez que ousuário mas se conectar ao sistema. Estasintaxe do dbdump é mais elegante:

nohup sudo -u mysql dbdump U

</dev/null &

Isto significa que o processo não estáconectado ao terminal e o SSH terminaráapós o usuário se desconectar do sis-tema, sem que ele tenha que digitar ~.para encerrar a conexão.

Modificando ConfiguraçõesUm uso muito comum do sinal HUP épara avisar a um daemon de que foramfeitas modificações em seu arquivo deconfiguração.

O daemon syslog [2], é um exemplotípico. Normalmente ele registra apenasalertas e mensagens de erro, para pouparespaço no disco rígido e dores-de-cabeçado administrador. Mas após instalar umnovo pacote de software, é necessáriomais do que isso.

Se o software não funciona comoesperado, o administrador pode querer oregistro de mensagens adicionais e infor-mações de debug para ajudar na soluçãodo problema. Para isso, é necessário adi-cionar uma linha ao arquivo de configu-ração do syslog, /etc/syslog.conf, paradizer ao daemon que estas informaçõesdevem ser registradas:

*.* -/var/log/everything

Você precisa enviar um sinal HUP paraque o syslog reconheça a mudança. ps -ef| grep syslog mostra o PID, e o comandokill -1 PID, se encarrega de encerrar odaemon. Se você não tem tempo para

localizar o PID, algumas distribuiçõesLinux incluem o comando killall, que lhepermite enviar um sinal qualquer atodos os processos com o mesmo nomeque você informar:

killall -1 syslogd

Este comando aceita uma série deparâmetros que podem ser consultadoscom o comando man killall

Sinais definidos pelo usuárioAlguns outros sinais, como 10 (USR1), e12 (USR2), estão disponíveis para tarefasdefinidas pelo usuário. Por exemplo: se oarquivo de configuração do Apache formodificado, você pode forçar o daemona reler o arquivo enviando um sinalHUP. Entretanto, isto significa que quais-quer processos filhos do Apache serãoabandonados. Se, ao invés disso, vocêenviar um sinal USR1 ao processo princi-pal do Apache, ele irá aguardar até quetodos os trabalhos tenham terminadoantes de interromper e reiniciar osprocessos-filhos.

O uso de sinais é amplamente difun-dido e parte essencial do cotidiano detodo administrador de sistemas. Masrestrições com o número de sinais limi-tado e o fato de que, por segurança, ape-nas o super-usuário pode enviar sinaisaos processos que não lhe pertençamjustificam a existência de mecanismosalternativos, que serão examinados emum futuro artigo na Linux Magazine. ■

dados do terminal. Isto permite que umprocesso seja manipulado imediata-mente após aceitar uma entrada.

DesconexãoUm outro sinal remonta à época dos ter-minais seriais. O sinal número 1 échamado de HUP ou hangup (desco-nexão). Se você utiliza um modem paraacessar um sistema Unix e a conexão éinterrompida, o seu shell recebe um sinalHUP e pode se recompor. Por exemplo,um editor pode criar um backup e entãoencerrar sua execução.

Conexões via modem são raras atual-mente, mas o sinal HUP mantém suautilidade. Encerrar uma conexão SSH éum dos usos, e também uma “pega-dinha” muito comum.

Imagine o cenário da Figura 3a. Ousuário mas acessa via SSH uma outramáquina para executar algumas tarefasde gerenciamento remoto e inicia umprocesso demorado. Como ele não queresperar pelos resultados, adiciona o car-actere & ao final da linha de comandopara enviar automaticamente o processopara background (segundo plano) antesde encerrar a sessão. Infelizmente, issoparece não funcionar, e o ssh aparentaestar “travado”. Para o usuário, parecenão haver alternativa a não ser pres-sionar ~, o caractere de escape do SSH,para encerrar a conexão.

64 Agosto 2004 www.linuxmagazine.com.br

Comunicação entre ProcessosSYSADMIN

Um processo que gera um outro é conhe-cido como um processo pai, e o relaciona-mento entre os dois é referido comopai/filho. O processo que chama é o pai, e ochamado é o filho. Se o processo filho ter-mina antes do seu pai, o pai envia um sinalCLD ou CHLD (child). É esperado que oprocesso pai confirme a conclusão dos seusfilhos. Se o pai falha neste procedimento, ofilho é identificado na tabela de processoscomo um zombie (zumbi) [1]. Afinal, como okernel vai saber se e quando o pai vai veri-ficar o estado de saída do filho? A entrada doprocesso na tabela tem que ser mantida,para cobrir esta possibilidade.

Até lá, a maioria dos recursos de sistema játerão sido liberados. O processo filho origi-nal não existe mais, e o comando kill -9 nãoterá efeito sobre ele. O processo “zumbi”sódesaparece quando o processo pai terminaou quando procura saber o estado de saídado processo filho.

Zombies

Marc André Seligtrabalha como cien-tista assistente naUniversidade de Trier,na Alemanha, ecomo médico no hos-pital Schramberg.Quando encontraalgum tempo livre, seu interesseatual é a criação de sistemas de basede dados baseados na Web em váriasplataformas UNIX.

SOBR

E O

AUT

OR

[1] Artigo na Wikipedia sobre processos zumbi: http://en.wikipedia.org/wiki/Zombie_process

[2] Marc André Selig,“The System Logger”,Linux Magazine, Edição 40, Março de2004, página 64.

INFORMAÇÕES

65www.linuxmagazine.com.br Agosto 2004

SYSADMINColuna do Charly

Eu não sou uma pessoa fútil, afinal,eu não trabalho no mercado damoda. Entretanto, de tempos em

tempos eu me olho no espelho e decidodar um trato no meu visual.

Algo estranho, porém similar, acontececomigo quando eu olho uma lista dediretórios através de um navegador (vejaFigura 1). Para minha “Coleção de Inver-no” deste ano eu decidi utilizar o PHPDirectory Index [1]. Confira a Figura 2:arrumadinho, não? O pacote funcionacom o Apache 1.3 e 2.0 [2], e requersomente o mod_php4 (instruções deinstalação e configuração detalhadas po-dem ser encontradas em [3]). A chave éo parâmetro DirectoryIndex no arquivode configuração Apache, o httpd.conf:

DirectoryIndex index.php U

index.html index.htm

Quando o usuário navega em um dire-tório que contém um desse arquivos, onavegador abre o arquivo automatica-mente. Se o diretório não possui umarquivo índice, o Apache apresenta umalistagem do conteúdo do diretório comomostrado na Figura 1.

cp /usr/local/indexer/*.php U

/srv/www/htdocs/

para copiar os arquivos para o diretórioapropriado. Agora eu posso modificar oparâmetro DirectoryIndex no httpd.conf:

DirectoryIndex index.php indexU.html index.htm /indexer.php

Não se esqueça de colocar a barra, pois oarquivo está no diretório raiz do servidorweb. O indexer vai funcionar logo após areinicialização do Apache. Para sabermais sobre alterações na aparência do A-pache, leia o arquivo inc_indexer.php. ■

[1] PHP Directory Indexer:http://indexer.adamastor.org/?cat=menu

[2] Apache: http://www.apache.org/

[3] Instalação do mod_php4 no Apache:http://www.php.net/manual/pt_BR/install.apache.php

INFORMAÇÕES

Diário do SysAdmin: PHP Directory Index

Rostinho Bonito

Charly Kühnast gerenciaSistemas Unix em umdata-center em Moers,próximo ao famoso rioReno, na Alemanha. Seutrabalho inclui verifi-cação de segurança edisponibilidade dos fire-walls e também é o responsável pelaDMZ (demilitarized zone).

SOBR

E O

AUT

OR

O PHP Directory Indexer não é difícilde instalar. Ao desempacotar o arquivo,são criados 2 diretórios, docs e icons, edois arquivos chamados inc_indexer.phpe indexer.php. O diretório docs traz prati-camente tudo o que você pode esperar,incluindo um guia de instalação em In-glês e Português (de Portugal, diga-se depassagem). Já o diretório icons tem umnovo conjunto de ícones que eu entãocopiei para o diretório icons do Apache,com o comando abaixo:

cp -r /usr/local/indexer/Uicons/* /srv/www/icons/

Obviamente o Apache necessitará depermissão de leitura para esses arquivos– para resolver isto, meu servidor utilizaa conta nobody.

Modificando oDocumentRootO próximo passo é copiar os dois ar-quivos PHP para o diretório PHP, oparâmetro DocumentRoot no httpd.conf oinformará qual é. No meu caso a linha éDocumentRoot "/srv/www/htdocs". En-tão executei o comando :

Não faz mal nenhum prestar atenção nas aparências. Olhando através da pers-

pectiva de um administrador, embelezar as maçantes listagens de diretório

apresentadas por um servidor web Apache é simplesmente uma questão de

estilo. POR CHARLY KÜHNAST

Figura 1: O formato padrão da listagem dediretórios do Apache é muito pobre.

Figure 2: A utilização do “PHP Directory Indexer”dá ao seu site um toque de elegância.

complexo. Seções críticas precisam serprotegidas contra o acesso paralelo paraassegurar a integridade dos dados, evi-tando desta forma erros de difícil cor-reção. Se você já teve que analisar umarquivo core com 200 threads ativas,sabe muito bem do que estou falando.

Há uma alternativa que evita estesinconvenientes – a multitarefa coopera-tiva com o POE [2], desenvolvido princi-palmente por Rocco Caputo. O ambienteé implementado como uma máquina deestados que executa exatamente umprocesso em uma única thread, porémhá um “kernel” no espaço de usuário,que permite a realização de múltiplastarefas quase que simultaneamente.

AcompanhandoProgramadores Perl que querem consul-tar o preço de ações costumam usar omódulo Yahoo::FinanceQuote, encon-trado na CPAN:

use Finance::YahooQuote;my @quote = U

getonequote($symbol);

Infelizmente, o módulo trabalha deforma síncrona, o que torna difícil obter

o efeito de “scroll” suave que queremosna interface. A função getonequote (sím-bolo) envia um pedido HTTP ao servidorYahoo, espera por uma resposta e entãoretorna os resultados.

Nós queremos manter o display fun-cionando enquanto o programa esperapor uma resposta – e, de acordo com alei de Murphy, podemos ter certeza abso-luta de que outra janela será arrastadasobre ele neste exato momento. Nestecaso, o programa terá que redesenhar aárea que foi oculta. Tal processo é co-nhecido como refreshing.

Infelizmente, devido à demora naresposta à solicitação HTTP, o aplicativonão recebe a ordem para redesenhar suajanela, e conseqüentemente deixa umhorroroso “buraco” cinza no desktop –certamente uma visão nada agradável.

A alternativa assíncronaSeria mais elegante transmitir o pedido àweb e retornar para redesenhar a janela,sem ter que esperar pelos resultados.Quando a resposta do servidor Yahoo!chegar, ela deveria causar algum tipo dealerta. Isto significa uma rápida atualiza-ção da janela com os valores, e o retornoao loop principal do programa.

Os aplicativos com uma interfacegráfica são geralmente baseadosem eventos. O programa tem um

loop principal, utilizado para esperar poreventos como os cliques de um mouse eentrada de dados através do teclado. Éimportante que o programa processe es-tes eventos sem nenhum atraso e retornerapidamente ao loop principal. Istoimpede que o usuário note a indisponi-bilidade temporária da interface.

No artigo deste mês estaremos ana-lisando um programa, um stock ticker,que consulta e exibe o valor de umadeterminada ação na Bolsa de Valores.Periodicamente, este programa conecta-se à página de finanças do Yahoo!, atua-lizando os valores previamente seleci-onados (veja Figura 1). Dependendo daconexão de rede esta operação pode,incluindo a resolução de nome peloservidor DNS, levar alguns segundos atése completar. Seria interessante que ainterface do aplicativo se mantivessefuncionando durante este período.

Os desenvolvedores já podem usar téc-nicas como o multiprocessamento oumultithreading para alcançar este obje-tivo. Entretanto, ambas técnicas fazemcom que o programa fique muito mais

66 Agosto 2004 www.linuxmagazine.com.br

Perl Object EnvironmentPROGRAMAÇÃO

O Perl Object Environment (POE) ou

Ambiente Orientado a Objetos Perl,

propicia uma plataforma para que os

scripts possam realizar múltiplas

tarefas de forma cooperativa sem

precisar de ajuda do sistema opera-

cional. O aplicativo deste mês per-

mite que uma interface GTK realize

consultas demoradas via web, sem

soluços. POR MICHAEL SCHILLI

Lidando com interfaces Gtk e consultas à Web em Perl

Trabalho de Equipe

Isto é exatamente o que o POE faz.Fornece um kernel onde cada aplicativosessões, e máquinas de estado se movementre estados, trocando mensagens. Aatividade de entrada e saída de dados éassíncrona. Ao invés de abrirum arquivo ou uma conexãoe esperar pelos dados, vocêpode simplesmente dizer aokernel: “Ei! Eu quero leralgumas informações. Vocêpode me avisar quando elasestiverem disponíveis?”

Dados em AltaVelocidadeEmbora as operações de lei-tura e escrita não sejam total-mente assíncronas (de umaforma resumida, o POE sim-plesmente usa as funçõessyswrite () ou sysread (), exe-cutando as chamadas do sistema nomodo conhecido como non-blocking),qualquer informação é processada emvelocidade máxima.

O aspecto cooperativo do POE sebaseia no fato de que as sessões com-petem entre si, mas de forma nãoegoísta. Se uma tarefa não ocupa total-mente a CPU, a sessão tem que devolvero controle ao kernel. Uma única partenão cooperativa em um programa podeter impacto no sistema inteiro.

A multitarefa em uma única threadfacilita o desenvolvimento do programa– você não precisa se preocupar comtravas, não há surpresas com race condi-tions, e mesmo que um erro ocorra, éfácil localizá-lo. POE coopera com o loopprincipal de vários ambientes gráficos ereconhece automaticamente Perl/TK egtkperl integrando-os perfeitamente

Isto permite ao kernel designar fatiasde tempo aos eventos da interface, damesma forma que uma sessão explicita-mente definida. Esta é a resposta paranosso problema com o refresh.

Alertando o KernelO programa na Listagem 2 usa amáquina de estado POE:: Session comomostrado na Figura 2. A fase de inicia-lização, _start, gera a interface GTK eregistra o apelido ticker para nos permitiridentificar a seção facilmente mais tarde.A seguir o controle é devolvido ao ker-nel. A máquina de estados entra no

estado wake_up a cada 60 segundos (pormeio de um alerta) ou quando alguémclica no botão Update na interface. Istolança outra máquina de estados tipoPOE::Component:: Client::HTTP, e imedi-

atamente devolve o controledo programa ao kernel.

O “PoCoCli::HTTP” é umcomponente do frameworkPOE, uma máquina de estadosque define sua própria seção(chamada useragent na Lista-gem 2, linha 73), aceita pedi-dos à web no estado request eentão retorna ao frameworkPOE até receber uma respostacompleta via HTTP. Nesteponto, useragent pede ao ker-nel que avise a sessão que achamou, ticker, para entrar emum estado chamado yhoo_response, que foi previamente

passado à useragent.O kernel diz à seção ticker para fazer

exatamente isso, e a seção aceita a res-posta HTTP, que já estava à espera, eatualiza a janela antes de devolver o con-trole ao kernel, sem nenhum atraso. Nalinha 69, o componente POE::Compo-nent::Client::HTTP é executado pela fun-ção spawn(), a qual especifica que otexto gtkticker/0.01 deve aparecer nastring user agent e que pedidos devemexpirar após 60 segundos.

Manual do YahooAs linhas 10 a 12 na Listagem 2 definemo endereço do serviço de cotação de va-lores de ações do Yahoo! (Yahoo!Finance). A interface deste serviçorecebe dois parâmetros:

• Um parâmetro de formato (=f) com osnomes dos campos solicitados: s (sym-bol), l1 (valor da ação) e c1 (mudançano valor, em percentagem, desde oúltimo dia de operação da bolsa)

• Um parâmetro símbolo (symbol) quecontém uma lista, separada por vírgu-las, dos símbolos das empresas emcujas ações estamos interessados, porexemplo YHOO, MSFT, TWX.O servidor responde com:

"YHOO",45.38,+0.35"MSFT",27.56,+0.19"TWX",18.21,+0.75

Nosso aplicativo GTKTicker aceita aresposta linha a linha, separa os valoresnas vírgulas e envia a informação para ainterface gráfica.

Configuração no diretório$HOMEAs linhas 13 e 14 da Listagem 2 especifi-cam que o arquivo .gtkicker no diretóriopessoal do usuário é o arquivo de símbo-los a ser usado pelo ticker. As linhas 30 a37 interpretam este arquivo linha a linha(veja o loop while na linha 32), des-cartando toda linha iniciada por #, con-siderada como comentário (linha 33). Oloop for implícito no final da linha 35:

... for /(\S+)/g;

executa a expressão à direita em todas aspalavras da linha, e coloca o símbolo daempresa na variável $_. Isto permite queuma única linha tenha múltiplos símbo-los, separados por espaços. A funçãopush (linha 34 da Listagem 2) coloca ossímbolos no array @SYMBOLS.

67Agosto 2004www.linuxmagazine.com.br

PROGRAMAÇÃOPerl Object Environment

Figura 1: Nosso aplica-tivo GTK para con-sulta de valores deações contata perio-dicamente os servi-dores do Yahoo!.

yhoo_response

Stock Widgetsrefreshed

_start

Kernelwake_up?

event sent toYahoo

Returns immediately

Yahoo replyavailable ‘Update’ or alert (after

60 seconds)

GTK interface initialized Returns immediately

Figura 2: A máquina de estados do GTKTicker. Após o estado de inicialização, _start, o controle é devol-vido ao kernel. A cada 60 segundos a máquina entra no estado wake_up, e chama uma outra máquinade estados responsável por realizar a solicitação HTTP e devolver o controle ao kernel

$poe_kernel->post("ticker", U

"wake_up");

através da variável $poe_kernel expor-tada pelo POE. A linha 55 inicia o loopprincipal do kernel,

$poe_kernel->run();

o qual permanece em execução até queseja desativado. É isto!

A construção dos objetos POE::Sessionmostrada anteriormente tem um efeitocolateral. Ela executou a rotina start()definida na linha 58, que é mapeada ao

estado _start. Este, por sua vez, registrao apelido da sessão como ticker e entãopula para my_gtk_init(). Esta função,que começa na linha 98, constrói a inter-face gráfica em GTK.

Interfaces gráficas com GTKO módulo Gtk encontrado na CPAN foiescrito por Marc Lehmann. Na verdadeeste módulo foi substituído pelo Gtk2,mas esta nova versão ainda tem algunspequenos problemas com o POE. Masnão se preocupe, pois o “obsoleto”módulo baseado no Gtk1 ainda fun-ciona, e muito bem.

Apesar de estar usando o frameworkPOE, o GTKTicker emprega funções sín-cronas comuns de entrada/saída para lero arquivo de configuração, já que oarquivo é curto e o kernel POE não estáem execução neste momento.

Que começe a dança!A linha 39 da Listagem 2 define amáquina de estados do ticker. A funçãoinline_states mapeia funções aos esta-dos. O kernel irá executar estas funçõesquando a máquina entrar no estado cor-respondente. A linha 53 declara o estadowake_up da sessão ticker ao kernel:

68 Agosto 2004 www.linuxmagazine.com.br

Perl Object EnvironmentPROGRAMAÇÃO

001 #!/usr/bin/perl002 #############################003 # gtkticker004 # Mike Schilli, 2004005 # ([email protected])006 #############################007 use warnings;008 use strict;009010 my $YHOO_URL =011 "http://quote.yahoo.com/d?".012 "f=sl1c1&s=";013 my $RCFILE =014 "$ENV{HOME}/.gtkticker";015 my @LABELS = ();016 my $UPD_INTERVAL = 60;017 my @SYMBOLS;018019 use Gtk;020 use POE qw(021 Component::Client::HTTP);022 use HTTP::Request;023 use Log::Log4perl qw(:easy);024 use Data::Dumper;025026 Log::Log4perl->easy_init(027 $DEBUG);028029 # Read config file030 open FILE, "<$RCFILE" or031 die "Cannot open $RCFILE";032 while(<FILE>) {033 next if /^\s*#/;034 push @SYMBOLS, $_035 for /(\S+)/g;036 }037 close FILE;038039 POE::Session->create(040 inline_states => {041 _start => \&start,

042 _stop => sub {043 INFO "Shutdown" },044 yhoo_response =>045 \&resp_handler,046 wake_up =>047 \&wake_up_handler,048 }049 );050051 my $STATUS;052053 $poe_kernel->post(054 "ticker", "wake_up");055 $poe_kernel->run();056057 #############################058 sub start {059 #############################060061 DEBUG "Starting up";062063 $poe_kernel->alias_set(064 'ticker');065 my_gtk_init();066067 $STATUS->set("Startup");068069 POE::Component::Client::HTTP070 ->spawn(071 Agent =>072 'gtkticker/0.01',073 Alias => 'useragent',074 Timeout => 60,075 );076 }077078 #############################079 sub upd_quotes {080 #############################081082 my $request =

083 HTTP::Request->new(084 GET => $YHOO_URL .085 join ",", @SYMBOLS);086087 $STATUS->set(088 "Fetching quotes");089090 $poe_kernel->post(091 'useragent',092 'request',093 'yhoo_response',094 $request);095 }096097 #############################098 sub my_gtk_init {099 #############################100101 my $w = Gtk::Window->new();102 $w->set_default_size(103 150,200);104105 # Create Menu106 my $accel =107 Gtk::AccelGroup->new();108 $accel->attach($w);109 my $factory =110 Gtk::ItemFactory->new(111 'Gtk::MenuBar',112 "<main>", $accel);113114 $factory->create_items(115 { path => '/_File',116 type => '<Branch>',117 },118 { path =>119 '/_File/_Quit',120 accelerator =>121 '<control>Q',122 callback =>123 [sub { Gtk->exit(0) }],

Listagem 2: Gtkticker Listagem 2: Gtkticker

Um objeto da classe Gtk::Window re-presenta a janela principal do aplicativoque está sendo construído. No topodesta janela é possível encontrar ummenu principal, que nos dá acesso a ou-tros menus. Em especial, há neste menuuma opção denominada Quit. Estaopção, que tem a finalidade de encerraro programa, utiliza uma rotina co-nhecida como Gtk->exit(0). Há tambémo objeto Gtk::AccelGroup, que permiteque o usuário pressione as teclas[Ctrl]+[Q] para finalizar o programa.Além disso, o objeto adiciona atalhos deteclado para os itens nos menus.

Construindo MenusO menu é criado pela classe Gtk::Item-Factory, que a princípio é usada paracriar a barra de menus Gtk::MenuBar.Cada entrada no menu, e seus sumenuscorrespondentes, é criada pelo métodocreate_items(). O parâmetro path especi-fica a posição de um item no menu, porexemplo, /_File/_Quit define que o itemQuit estará abaixo de File na barra demenu. Os sublinhados presentes antesde File e Quit têm a função de ressaltar aprimeira letra destes dois nomes, per-mitindo que o usuário possa acessaritens do menu através de atalhos, como

[Alt]+[F] ou [Alt]+[Q]. O parâmetrocallback especifica qual função o Gtk iráchamar sempre que o usuário selecionarum item ou pressionar as teclas de ata-lho correspondentes.

Gerenciador de layoutHá dois métodos diferentes para ordenaros widgets: Gtk::VBox e Gtk::Table. OGtk::VBox é uma caixa responsável poralinhar verticalmente os itens nele conti-dos. A função pack_start() posiciona oselementos de cima para baixo enquantoa função pack_end() os coloca de baixopara cima. Veja o exemplo a seguir:

69Agosto 2004www.linuxmagazine.com.br

PROGRAMAÇÃOPerl Object Environment

124 });125126 my $vb = Gtk::VBox->new(127 0,0);128 my $upd = Gtk::Button->new(129 'Update');130131 $vb->pack_start(132 $factory->get_widget(133 '<main>'), 0, 0, 0);134135 # Button at bottom136 $vb->pack_end($upd,137 0, 0, 0);138139 # Status line on top140 # of buttons141 $STATUS= Gtk::Label->new();142 $STATUS->set_alignment(143 0.5, 0.5);144 $vb->pack_end($STATUS,145 0, 0, 0);146 my $table =147 Gtk::Table->new(148 scalar @SYMBOLS, 3);149150 $vb->pack_start($table,151 1, 1, 0);152153 for my $row (0..154 @SYMBOLS-1) {155 for my $col (0..2) {156 my $label =157 Gtk::Label->new();158 $label->set_alignment(159 0.0, 0.5);160 push @{$LABELS[$row]},161 $label;162163 $table->attach_defaults(164 $label, $col, $col+1,

165 $row, $row+1);166 }167 }168169 $w->add($vb);170171 # Destroying window172 $w->signal_connect(173 'destroy', sub {174 Gtk->exit(0)});175176 # Pressing update button177 $upd->signal_connect(178 'clicked', sub {179 DEBUG "Sending wakeup";180 $poe_kernel->post(181 'ticker', 'wake_up')}182 );183 $w->show_all();184 }185186 #############################187 sub resp_handler {188 #############################189 my ($req, $resp) =190 map { $_->[0] }191 @_[ARG0, ARG1];192193 if($resp->is_error()) {194 ERROR $resp->message();195 $STATUS->set(196 $resp->message());197 return 1;198 }199200 DEBUG "Response: ",201 $resp->content();202203 my $count = 0;204205 for(split /\n/,

206 $resp->content()) {207208 my($symbol, $price,209 $change) =210 split /,/, $_;211212 chop $change;213 $change = "" if214 $change =~ /^0/;215216 $symbol =~ s/"//g;217 $LABELS[$count][0]->218 set($symbol);219 $LABELS[$count][1]->220 set($price);221 $LABELS[$count][2]->222 set($change);223 $count++;224 }225226 $STATUS->set("");227228 1;229 }230231 #############################232 sub wake_up_handler {233 #############################234 DEBUG("waking up");235236 # Initiate update237 upd_quotes();238239 # Re-enable timer240 $poe_kernel->delay(241 'wake_up', $UPD_INTERVAL);242 }

Listagem 2: Gtkticker

A janela principal também tem umaação determinada – os usuários podemclicar no botão com o “X” na parte supe-rior direita da janela para finalizar a apli-cação. O código seria:

$w->signal_connect('destroy',sub {Gtk->exit(0)});

A sub-rotina finaliza o programa. Apósdefinir os widgets, a função show()(linha 183) os exibe na janela principal.

O kernel contra-atacaNo estado yhoo_response, o kernel saltapara função na linha 187, resp_handler.Por definição, quando isto acontece oPOE::Component::Client::HTTP armaze-na pacotes com a solicitação e a respostaem ARG0 e ARG1. O POE usa este modoligeiramente estranho de passar parâ-metros após a introdução de novas fun-ções que representam constantes numé-ricas, tais como KERNEL, HEAP, ARG0,ARG1. Os responsáveis pelo POE espe-ram que os programadores as usem paraindexar o array de parâmetros das fun-ções, como @_. Por exemplo, $_[KER-NEL] sempre retornará o objeto kernel, oque ajuda a manter o índice para o qualKERNEL aponta transparente.

Os pacotes de solicitação e respostamencionado acima são apenas referên-cias a dois arrays, cujos elementos inici-ais contém objetos HTTP::Request ouHTTP::Response. O comando map nalinha 190 os extrai para $req e $resp.

Se ocorre um erro de HTTP, a linha195 gera uma mensagem apropriada nowidget de status e a função retorna. Senão, o array bidimensional global dewidgets label é atualizado. Os widgetsexibem o símbolo da empresa, o valoratual de cada ação e a variação comouma percentagem. No caso da variaçãoser zero, ela é simplesmente ignorada.

Acorde!Um evento wake_up no kernel chama afunção wake_up_handler() definida apartir da linha 232 (veja a Listagem 2).Ela chama a função upd_quotes(), imple-mentada a partir da linha 79. Esta funçãodefine um objeto HTTP::Request e usaum evento para enviá-lo ao componentePOE::Component::Client::HTTP. O estadoalvo da sessão ticker é então designadocomo yhoo_response.

Após completar estes passos prepa-ratórios, wake_up_handler() usa afunção delay() do kernel para enviar umalerta. Isso faz com que um eventowake_up ocorra na sessão ticker quandoo número de segundos definido em$UPD_INTERNAL (60 segundos nestecaso) tiver passado. A partir daí, o tickerirá automaticamente atualizar os valoresa cada 60 segundos, sem que sejanecessário pressionar o botão Update.

É fascinante ver o quão suave é a atu-alização da tela. Mesmo mexendo nosmenus enquanto o aplicativo executauma atualização automática através deuma conexão de rede lenta, a interfacepermanece intacta.

Problemas na instalaçãoÉ melhor usar o CPAN para instalar oPOE e os módulos necessários, comoPOE::Component::Client::HTTP. Se omódulo POE::Component::Client:DNS forinstalado, as consultas ao servidor DNSserão realizadas de forma assíncrona.Caso contrário, a função gethostby-name() pode causar um pequeno atraso.A instalação do Gtk a partir do CPANcausou alguns probleminhas em meusistema. Mas basta executar:

touch ./Gtk/build/Uperl-gtk-ref.podperl Makefile.PL U

--without-guessing

seguido de make install no diretório deinstalação para resolvê-los. ■

$vb->pack_start($menu_bar, U

$expand, $fill, $padding);

Este exemplo posiciona uma barra demenus no topo da VBox. Na linha 132, oGTKTicker usa a função $factory->get_widget(‘<main>‘) para acessar oobjeto da barra pelo seu nome. Oparâmetro $expand, usado na funçãopack_start(), especifica se a área ocu-pada pelo widget deverá crescer caso omouse seja usado para redimensionar ajanela. Nesse caso, fill especifica se oswidgets também deve crescer, o que per-mitirá que botões e controles aumentemde tamanho de forma estrondosa. Final-mente, $padding determina o menornúmero de pixels que deverá existir paraseparar verticalmente o widget de seusvizinhos. Nosso GTKTicker exibe men-sagens de status no widget Gtk:: Labellogo acima do botão Update. A funçãoset_alignmet() usa a seguinte sintaxe

$STATUS->set_alignment U

(0.5, 0.5);

para alinhar o texto horizontal e vertical-mente. Caso queira experimentar, utilizena horizontal o valor 0.0 para alinhar otexto à esquerda, e o valor 1.0 para ali-nhar o texto à direita.

Ao contrário do Gtk::VBox, o Gtk::Table fornece aos programadores umaferramenta para convenientemente dis-por widgets em uma tabela. A funçãoattach_defaults() recebe cinco parâme-tros: o widget que será alinhado e duascoordenadas de linha e coluna, entre asquais o widget será colocado. Veja oexemplo abaixo:

$table->attach_defaults($label, 0, 1, 1, 2);

$label será colocado entre a primeiralinha (“entre 0 e 1”) e a segunda coluna(“entre 1 e 2”) da tabela chamada $table

Ação!Você pode designar ações para os wid-gets do tipo Gtk::Button, e o Gtk execu-tará a ação quando um usuário pres-sionar o botão. A função signal_con-nect(), na linha 177 da Listagem 2,especifica que Gtk deve enviar o eventowake_up ao kernel quando o usuárioclicar no botão Update.

70 Agosto 2004 www.linuxmagazine.com.br

Perl Object EnvironmentPROGRAMAÇÃO

[1] Código deste artigo: http://www.linux-magazine.com/Magazine/Downloads/42/Perl/

[2] POE: http://poe.perl.org

[3] Jeffrey Goff,“A Beginner’s Introduction toPOE”, 2001: http://www.perl.com/pub/a/2001/01/poe.html

[4] Matt Sergeant,“Programming POE”, talkat TPC 2002: http://axkit.org/docs/presentations/tpc2002

[5] Gtkperl: http://gtkperl.org

[6] Tutorial de Gtkperl:http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/

[7] Eric Harlow,“Developing Linux Applica-tions with GTK+ and GDK”: NewRiders,1999,ISBN 0735700214

INFORMAÇÕES

JuK, o Rei do iê-iê-iê..............................................................75Conheça o novo media player do KDE 3.2 e descubraporque sua maneira eficiente de gerenciar playlists temconquistado a preferência de muitos usuários.

O Sorriso do Lagarto ............................................................76Extensões são um dos pontos fortes dos softwares doprojeto Mozilla e permitem que eles se adaptem aogosto e à necessidade de qualquer usuário, adicionan-do novos recursos ou alterando certas funções.

Nós Estamos Quase Lá........................................................78Todo mundo gosta de novas versões de software, certo?Neste artigo analisamos os problemas que podemaparecer durante a migração para o novo KDE 3.2(.0).

Tome Nota!...............................................................................80A invasão dos papeizinhos amarelos começou em1980, ano em que os onipresentes adesivos Post-itcomeçaram a conquistar empresas e escritórios. Agora,o Xpad traz as notinhas para o seu desktop.

Papo de Botequim ................................................................82Você não agüenta mais aquele seu amigo usuário deLinux dizendo que o sistema é demais e que o Shell éuma ferramenta fantástica? Entenda o porquê desteentusiasmo a partir desta edição...

Bem-vind0 à LinuxUser!Esta é uma seção especial dedicada a destacar programas úteis e interessantes

para ajudá-lo no seu trabalho diário com o Linux no desktop. Aqui você encon-

trará informações sobre como utilizar programas comuns de forma mais

eficiente, obterá um valioso embasamento técnico e conhecerá as últi-

mas novidades em software para seu sistema operacional favorito.

CD’s estão por fora – vida longapara a música digital! É verdadeque uma coleção de músicas pre-

cisa de manutenção e o pacote kdemulti-media do KDE 3.2 traz uma novaferramenta que faz exatamente isso, oJuK [1] audio player. É fácil entender porque ele administra tão bem sua lista demúsicas. Seu autor, Scott Wheeler [2],originalmente o projetou para gerenciarfaixas (tracks) e metadados (título,artista, álbum, etc), e o chamou de Qtag-ger. A função de “tocar” as músicas foiadicionada depois. O JuK suporta os for-matos MP3, Ogg Vorbis e o Free LosslessAudio Codec, FLAC [3].

Monte sua listaQuando você inicia o programa, é apre-sentada somente uma lista vazia(Playlist) do lado esquerdo. Essa listachamada Collection list contém todas asmúsicas (tracks) conhecidas pelo JuK.Você pode adicionar suas própriasplaylists mais tarde (veja Figura 1). Sevocê não precisar deste recurso, podeocultar essa área simplesmente arras-tando o divisor o máximo possível para aesquerda com o mouse.

Os controles de reprodução, funda-mentais, estão localizados na barra deferramentas e podem ser posicionadosna lateral ou no rodapé da janela, sedesejado. A barra de status na parte debaixo da janela apresenta informaçõessobre a playlist ou sobre a faixa atual.Clicar no botão com a seta toca a faixaatualmente selecionada na playlist. Sevocê clicar no indicador que mostra otempo decorrido, o JuK passa a exibir otempo restante para o final da música.Clique novamente para voltar o modonormal de visualização.

A interface lembra bastante o iTunes,da Apple. Clique com o botão direito domouse sobre uma coluna para especi-ficar quais items devem (ou não) sermostrados na playlist.

GerenciamentoPara adicionar faixas, você pode sele-cioná-las individualmente clicando emFile / Open ou informar ao JuK para adi-cionar todo o conteúdo de uma pasta(File / Open folder), sempre que vocêabrir o programa. Cada vez que você ini-ciar o JuK, o programa mostrará umalista completa com as músicas existentesnesse diretório e nos subdiretórios, etambém as últimas adições à coleção.

Se você possui uma extensa coleção demúsicas, o JuK pode demorar algunssegundos para carregar todas as infor-mações, tais como os metadados paratodas as faixas, na primeira vez em quevocê a acessar. Felizmente, isto nãoimpede que você continue usando oprgrama enquanto isso. Graças à um“cache” inteligente, estas informaçõessão armazenadas e reaproveitadas naspróximas vezes, o que tomará bemmenos tempo.

Se o JuK encontrar um aquivo .m3u(possivelmente criado pelo XMMS), seuconteúdo será apresentado como uma

playlist. O menu “drop-down” traz asprincipais funções: New permite criaruma playlist nova ou especificar um listaexistente em uma dada pasta. Você podemanipular o conteúdo das listas usandoa técnica de arrastar e soltar.

Se quiser habilitar a visualização com-pacta, clique com o botão direto domouse e selecione View Modes/Compact.Ou selecione Tree view para organizarsuas listas por álbum, artista ou mesmogênero. Cada playlist, com exceção daCollection List, pode ser salva no formatom3u. Clique com o botão direito domouse sobre ela e selecione Save as.

Divirta-seO painel ao lado direto da janela do JuKesconde alguns truques: Por exemplo, ocampo Search permite que você refine aseleção de faixas de uma dada playlist.Você pode salvar os resultados da buscacomo uma playlist dinâmica. Qualquerfaixa que satisfaça os termos é automati-camente adicionada à lista.

Para selecionar a próxima faixa a sertocada, sem interromper a que estátocando, basta clicar com o botão diretodo mouse sobre a faixa e selecionar Playnext. Se você pressionar a tecla [Shift] efizer uma seleção múltipla, é possívelcriar uma lista estática com as faixasselecionadas.

Se você fechar a janela principal, oícone do JuK aparece na área de notifi-cação do KDE e uma janela pop-up seabre para informar qual será a próximamúsica da lista. Para mostrar novamentea janela principal, basta clicar simples-mente com o botão direito do mousesobre o ícone do programa. ■

75www.linuxmagazine.com.br Agosto 2004

LINUX USERFerramentas do KDE

1] JuK: http://developer.kde.org/~wheeler/juk.html

[2] Scott Wheeler: KDE Scripting with DCOP.Linux Magazine, Número 36, Novembro2003, p46

[3] FLAC: http://flac.sourceforge.net/

INFORMAÇÕES

A maioria dos media players têm uma grande desvantagem, eles não possuem

uma ferramenta eficiente para administrar as playlists. No caso do JuK esse é

exatamente um dos seus pontos mais fortes. Vamos dar uma olhada neste

componente do novo KDE 3.2. POR DANIEL MOLKENTIN

Toque e organize sua coleção de músicas

JuK, o Rei do iê-iê-iê

Figura 1: Playlists à esquerda, faixas à direita.

Alguma vez você já deu uma pas-sadinha em uma página na Inter-net como a themes.mozdev.org

para trocar o tema padrão do seu Mozillapor algo mais simples ou colorido? Poissaiba que existe um equivalente para asextensões: a Extension Room [1], umlugar com uma enorme galeria de exten-sões (“add-ons”) para os vários soft-wares do projeto Mozilla, tanto para opróprio, como até para a dupla Firefox eThunderbird. Algumas extensões sãoverdadeiros clássicos e acabaram por serincorporadas ao código oficial dos pro-gramas, como a navegação com abas. Aseguir, mostramos algumas extensõesque podem ser muito úteis no dia-a-dia.

CheckyA extensão Checky [2] é uma interfacebastante útil para quem cria conteúdopara a Internet, usada para validação eanálise de código. Com ela é possívelvalidar arquivos HTML, XHTML, CSS,XML, SGML, RDF e RSS, junto à W3CWAI, Section 508 ou P3P. Pode-se aindavalidar conteúdo específico para algunsprogramas, como o Lynx, e muito mais.

São mais de 40 serviços acessíveis comum toque de tecla – já que atalhos deteclado permitem validar qualquer docu-mento em diversos serviços ao mesmotempo. Dentre os serviços disponíveis,destacam-se os oferecidos pelo W3C(“World Wide Web Consortium”, quedefine normas e padrões para a Inter-net), e a dupla Delorie e Colorfilter, queanalisa o esquema de cores usado emseu documento e diz se pessoas comproblemas visuais conseguirão enxergá-los, e até mesmo gera folhas de estilopróprias para certos tipos de daltonismo.

Extensões para o MozillaLINUX USER

TabbrowserA extensão Tabbrowser [3] aumentaainda mais os recursos do sistema denavegação com abas do Mozilla. Com elavocê pode reorganizar as abas existentessimplesmente arrastando-as para aposição desejada. Você também podealterar a posição da barra de abas,movendo-a para outras partes da janelade navegação, reabrir abas que haviamsido fechadas, configurar o posiciona-mento de abas que serão abertas e atémesmo selecionar as abas usando obotão de rolagem do seu mouse.

Quer mais? Com a Tabbrowser é pos-sível impedir a abertura dos links deuma aba, alterar a legenda delas, definirum intervalo no qual as abas devemrecarregar a página exibida, alterar a corde uma aba, exibir o código fonte de umdocumento em uma nova aba ao invésde uma nova janela e, obviamente, sal-var o estado das abas, para não ter derefazer toda a configuração mais tarde.

Tantos recursos têm um preço: podeser que o seu navegador fique um poucoinstável, mas os benefícios compensam.Existem várias outras extensões comrecursos similares ao Tabbrowser, e atémesmo uma para os que odeiam as abas,chamada Tab Killer.

DownloadWithSe você, como muitas outras pes-soas, têm ódio mortal dogerenciador de downloadsdo Mozilla (ou Firefox),essa extensão é asalvação da lavou-ra. Ela permiteque um progra-ma externo qual-quer seja configu-rado para funcionar como ge-renciador de downloads padrão.E não importa qual seja: desde o divinowget, passando pelo Kget e prozilla e atémesmo o Download Accelerator Plus(DAP) ou o GetRight.

Vale mencionar que essa extensão foioriginalmente criada por um brasileiro,chamado Gustavo Bittencourt, e queatualmente seu desenvolvimento tam-bém conta com a participação de várioscolaboradores estrangeiros.

Caso você se interesse em criar suaspróprias extensões, visite a página doXUL Brasil [5], grupo interessado nodesenvolvimento de interfaces em XUL(XML User Interface Language), a mes-ma linguagem usada pelo Mozilla e suasextensões. Divirta-se! ■

Extensões são pedacinhos de software que se “encaixam” em um programa,

adicionando novos recursos ou alterando certas funções. Elas são um dos pon-

tos fortes dos softwares do projeto Mozilla, e permitem que eles se adaptem

ao gosto e à necessidade de qualquer usuário. POR CAIO BEGOTTI

76 Agosto 2004 www.linuxmagazine.com.br

Figura 1: Janela de configuração do DownloadWith.

Caio Begotti <[email protected]> é fasci-nado pelas tecnologiasque fazem parte do KDE eparticipa, entre outros, dosprojetos Open Source WebDesign (http://www.oswd.org/) e Mozilla Brasil (http://www.mozilla.org.br/~cbegotti/).SO

BRE

OAU

TOR

[1] Extension Room:http://extensionroom.mozdev.org/

[2] Checky: http://checky.mozdev.org/

[3] TabBrowser:http://tabbrowser.mozdev.org/

[4] DownloadWith:http://downloadwith.mozdev.org/

[5] XUL Brasil: http://xul.im.ufba.br/

INFORMAÇÕES

Amplie os horizontes do seu navegador

O Sorriso do Lagarto

Michael Sult,www.sxc.hu

Os exemplos que citamos aqui são ape-nas uma seleção arbitrária, e o sistemade relato de bugs do KDE (http://bugs.kde.org/) fornece ampla oportunidadepara uma pesquisa mais detalhada. Cabeaos leitores decidirem por si mesmos seos novos recursos do KDE3.2 valem oesforço para superar os obstáculos. –apesar de tudo, pessoas diferentes pos-suem necessidades diferentes, e paramuitos não seria a primeira vez queteriam que tolerar alguns bugs.

Nosso laboratório usou o SuSe Linux9.0 – usuários de outras distribuiçõespodem ser mais afortunados e livrarem-se de alguns dos problemas que tivemos.Usamos o KDE 3.2 nas versões Beta3.1.94, 3.1.95, e a versão 3.2 encontrada

no servidor FTP da SuSe [1]. Todas asversões apresentaram os sintomas des-critos neste artigo.

Problemas com CorreioEletrônico (e-mail)A primeira coisa que muitos usuáriosolham é o funcionamento do leitor de e-mail, e a nova versão do KMail causaboa impressão. Infelizmente, essa boaimpressão inicial logo é desfeita por umbug que faz com que as mensagens quepassam por filtros caiam em um buraconegro. E isto não aconteceu só com asmensagens filtradas: de tempos em tem-pos as mensagens baixadas não apare-cem na caixa de entrada ou em umsubdiretório designado como mailbox. Omesmo problema ocorreu quando nósusamos um filtro POP.

O projeto KDE disponibilizou uma cor-reção [3] para o problema em 5 defevereiro, entretanto o patch ainda nãose encontrava nos pacotes oficiais doKDE para o SuSe 9.0 [1], nem nospacotes mais atualizados do KDE/SuSe9.0 de 3 de fevereiro [2].

OKDE3.2 é melhor que seu prede-cessor. Esta afirmação tem sidoverdadeira a cada nova versão

do KDE. Entre várias outras novidadestemos o KWallet, um gerenciador de sen-has e credenciais, o conjunto de aplica-tivos para organização de informaçõespessoais (PIM) Kontact, o jukebox JuK(veja artigo na p.75), o Kopete para men-sagens instantâneas e o Kig para geo-metria, só para citar alguns. Todos estesilustres programas foram incorporadosaos pacotes do núcleo do desktop (core packages). Os programas já exis-tentes contam um grande conjunto de novas características, correções de prob-lemas e melhorias de usabilidade.

Entretanto, nem sempre os usuáriosestão procurando por novidades. Huma-nos são criaturas de hábitos, e é geralmente mais importante para os usu-ários que seus programas favoritos tra-balhem como sempre fizeram. Esta é amotivação deste artigo, procurar entre aselva de programas existentes lá fora asarmadilhas nas quais um usuário desa-visado pode cair após uma atualização.

78 Agosto 2004 www.linuxmagazine.com.br

Problemas no KDE 3.2LINUX USER

Fique longe dos softwares com

número de versão com um zero

depois do ponto decimal! Os grandes

projetos Open Source não são uma

exceção à esta regra – isto se você

prefere seu software sem bugs, em

vez dos últimos recursos. Mas quais

são, exatamente, os problemas nos

quais os usuários migrando para o

KDE3.2(.0) devem ficar de olho?

POR WERNER HARRICHHAUSEN

Usabilidade do KDE3.2 (no Suse9.0)

Nós Estamos Quase Lá!

Werner Harrichhausen,usa Linux hámais de seis anos. Ele tem seu próprionegócio baseado em Linux chamadoBin-OSProjekte, e atualmenteaprende C/C++ em um curso à dis-tância. É um grande fã do “TheSweet”e gosta de ficar na compa-nhia da esposa e de seus três gatos.

O A

UTO

R

Centro de InformaçõesO KMail não é mais um aplicativo iso-lado, ele agora é parte do Kontact Infor-mation Center, que inclui também oKNode, um leitor de news, o KOrganizer,gerenciador de tarefas e calendário, oKDE Address Book, livro de endereços,notas post-it virtuais, cortesia do KNotes,e algumas outras ferramentas.

Infelizmente, o KOrganizer parece nãoestar feliz em ser um programa no meiode muitos, e tende a “sumir” com osdados de sua agenda de tempos em tem-pos. Você precisa recarregar o arquivo.ics para recuperá-los. E da próxima vezque você abrir o programa sob o Kontact,onde estão seus dados? Adeus outra vez.Este problema não ocorre quando vocêinicia o KOrganizer sozinho.

O KOrganizer também perde os rótuloscoloridos aplicados a seus compromissosou grupos de compromissos. Neste casoo bug ocorre com ou sem o Kontact.

Senha?!Alguns dos outros novos membros namultidão que é o KDE também apresen-tam problemas. O KWallet, por exemplo.Esta ferramenta oferece facilidade nogerenciamento de senhas para acesso àInternet. A princípio uma boa idéia,como evidenciado por funções seme-lhantes encontradas nos navegadoresOpera e Mozilla.

Quando você executa o programa, umpequeno ícone com a aparência de umacarteira é exibido no canto inferior dire-ito do painel. Você pode clicar no íconepara exibir uma janela vazia, e entãoselecionar File/New digital wallet…(Arquivo/Nova carteira digital) paraabrir a janela de configuração. Você deveentão digitar uma senha mestra, comomostrado na Figura 1.

Se você inicia o KNode, o KWalletpede que você digite sua senha nova-mente, mais a senha para o leitor denotícias. Ok, tenha calma. Mas na pró-xima vez que você iniciar o KNode oprograma pede que você digite as mes-mas senhas novamente, tanto para oKWallet como para o leitor de notícias.Você pode acabar tendo que repetir issoeternamente. Este problema tambémacontece ocasionalmente quando vocêtenta acessar sua caixa postal no KMail.A única solução que pudemos encontrarfoi parar de usar o KWallet.

Deixe-me entrar!Usamos os mesmos métodos para saberse o KWallet agiria da mesma forma como KBear [4], programa de FTP, e há umaboa razão para fazer o teste. Assim quevocê executar este pacote (que não fazparte dos pacotes básicos do KDE) noKDE 3.2 e acessar um servidor FTP, odesktop inteiro congela (nós testamos asversões 2.1-395 e 2.1-413).

Nossa tentativas reiniciar o servidor Xcom [Ctrl+Alt+Backspace] falharam. Aúnica esperança era ir a um console emmodo texto (no SuSe9.0, digite [Ctrl+F1]) para, como root, digitar init 3, e em

seguida init 5. O KDE3.2 recusou-se afuncionar até que o servidor X fosse der-rubado e reiniciado.

Felizmente, há uma forma de con-tornar o problema em algumas ocasiões.Antes de executar o KBear no KDE 3.2,apague a pasta criada por ele em /home/-username/.kde/apps/. A pasta será recri-ada na próxima vez que você executar oprograma. O ponto negativo é que estetruque não é totalmente confiável: elenão funcionou nas versões Beta, emboratenha funcionado com os pacotes jáprontos do KDE 3.2 para o SuSe 9.0.

Tudo funcionando?Nós experimentamos problemas simi-lares onde o servidor X congelou algu-mas vezes, entretanto estes travamentosaparentemente ocorriam de forma ale-atória, e não pudemos determinar acausa exata. O fato de que diversos pro-gramas caíram ocasionalmente, emborasem efeitos tão devastadores, nos deixaboquiabertos e perguntado porque aequipe do projeto KDE não aguardou aconclusão de mais testes antes dedeclarar a versão 3.2 como estável. Seriaporque a data oficial de lançamento jáhavia sido ultrapassada e eles nãoousaram adiá-la por mais tempo? Ouuma eventual falta de comunicação, porparte dos beta-testers, dos bugs encon-trados fez com que o projeto acreditasseestar maduro o suficiente para ser dis-tribuído em larga escala?

Mesmo assim, nossa opinião é de queo KDE3.2 é realmente um gigantesco sal-to à frente. Infelizmente, qualquer umque precise do Linux trabalhando com aprecisão de um relógio suiço deve man-ter-se afastado do KDE 3.2.0. Nesse caso,você deve considerar o upgrade para aversão 3.2.3, já disponível. ■

79www.linuxmagazine.com.br Agosto 2004

LINUX USERProblemas no KDE 3.2

[1] Pacotes do Suse Linux KDE 3.2:ftp://ftp.suse.com/pub/suse/i386/ supple-mentary/KDE/update_for_9.0

[2] Download oficial do KDE:ftp://ftp.kde.org/pub/kde/stable/3.2/

[3] Patch do KMail:ftp://ftp.kde.org/pub/kde/stable/3.2/src/kdepim-3.2.0-HOT_FIX_FOR_KMAIL.patch

[4] KBear:http://kbear.sourceforge.net/

[5] Projeto KDE:http://www.kde.org

INFORMAÇÕESPIM Suíte: Uma coleção integrada de progra-mas para gerenciamento de seus dados pes-soais, como mensagens do email, livro deendereços e lista de tarefas Uma (teorica-mente) grande vantagem sobre os programasque trabalham de forma individual é a possi-bilidade do compartilhamento de dadosentre os programas, o que agiliza a buscapelas informações.Pacotes do Núcleo (Core Packages): O ambi-ente desktop KDE é organizado por áreas deaplicação e distribuído através de múltiplospacotes, dos quais somente o kdelibs e o kde-

base são obrigatórios. Qualquer outro pro-grama (o “kdeedu”, pacote de ferramentaseducacionais ou o “kdegraphics”de ferramen-tas gráficas, por exemplo) é opcional. Algu-mas distribuições tendem a dividir os pacotesdo núcleo em vários pacotes menores parafacilitar a manipulação.Patch: Um pedaço de software que corrigebugs, ou adiciona novos recursos, a um pro-grama. No caso do Software Livre/OpenSource, geralmente o patch precisa serinserido no código-fonte do programa, queem seguida deve ser recompilado.

GLOSSÁRIO

Figura 1: O recurso que elimina a necessidade dememorizar milhares de senhas pode gerar falsasesperanças.

Xpad não atrapalha nem tira sua visãoda tela do computador, e não causaindisposição com os defensores dascausas ambientais.

Instalando o XpadUsuários do Mandrake podem simples-mente instalar o pacote rpm do Xpad. Jáusuários de outras distribuições podemtentar a sorte com o próprio pacote doMandrake, que foi instalado sem proble-mas no Red Hat Linux 9.0 ou, falhandoisto, você sempre pode instalar o pro-grama a partir do código fonte.

Se você pretende compilar o código-fonte, necessitará das bibliotecas e dospacotes de desenvolvimento do GTK+ 2,XFree86 e libgdk-pixbuf. Os pacotes dedesenvolvimento são geralmente identi-ficados por sufixos como -devel ou -dev.Depois de instalar todos os pacotesextras necessários, digite o comando aseguir no terminal para descompactar ocódigo fonte:

tar -xjf xpad-1.13.tar.bz2

Entre no diretório xpad-1.13 que foicriado durante a descompactação. Feitoisso, digite ./configure e make para con-figurar e compilar o programa. Assegure-se de estar como root e digite makeinstall para instalar o programa em umdiretório abaixo da árvore /usr/local.

Post-its para seu DesktopO Xpad roda em quase todos os gerenci-adores de janelas. Para usá-lo naprimeira vez digite xpad & em um termi-nal, e ele logo mostra um guia rápido(veja a Figura 1) que explica os passosbásicos. Ao fechar esse guia, o Xpad criaimediatamente um lembrete quadradode 200 pixels de lado em seu desktop.

A nota virtual é uma janela que vocêpode mover como qualquer outra.Quando você acessa uma janela doXpad, surge uma barra de ferramentasna parte de baixo da nota. Mantendo obotão esquerdo do mouse pressionadovocê pode mover a janela para qualquerlugar em seu desktop. Arraste o cantoinferior direito desta barra para aumen-tar ou diminuir o tamanho das notas(veja a Figura 2).

Se outra janela esconder a barra de fer-ramentas você pode manter a tecla Con-trol [Ctrl] pressionada e clicar sobre anota para movê-la para outra posição.Para redimensionar a janela, segurenovamente o [Ctrl], mas desta vez pres-sione o botão direito do mouse. A tecla[Alt] pode ser usada ao invés do [Ctrl].

Use a janela do Xpad como qualqueroutro editor de texto, escrevendo asnotas com seu teclado. As anotações nãosaem do espaço definido por você. Sevocê precisar escrever mais texto do queo tamanho da janela, o programa exibeuma barra de rolagem, entretanto, istosignifica perder a vantagem da leituraimediata do conteúdo da nota.

Adicionar outras notas é provavel-mente, a melhor solução. Para isso,clique no ícone no lado esquerdo da

Compromissos, tarefas, endereços,anotações e números de telefone –há todo tipo de uso para estas no-

tas práticas e “pegajosas”. Disponíveisem muitas cores e tamanhos diferentes,elas figuram em todos os lugares –alguns incomuns, como monitores,mesas, e até mesmo luminárias,esperando pacientemente por alguémque execute a tarefa nela anotada e entãoa despache para a lixeira.

Uma história de sucesso na vida real,as notas amarelas seriam uma adição útilao desktop de qualquer computador. Aomenos esta era a idéia de Michael Terryquando lançou o projeto Xpad (http://-xpad.sourceforge.net/), com o objetivode criar uma alternativa virtual ao Post-It. Ao contrário da versão em papel o

80 Agosto 2004 www.linuxmagazine.com.br

DesktópolisLINUX USER

A invasão dos papeizinhos amarelos começou em 1980, ano em que os

onipresentes adesivos Post-it começaram a conquistar empresas e escritórios.

Agora, o Xpad traz as notinhas para o seu desktop. POR ANDREA MÜLLER

Xpad

Tome Nota!

Só você pode decidir o visual do seu desktop.Em Desktópolis nós lhe convidamos a em-barcar regularmente em uma viagem pelosgerenciadores de janelas e ambientes desk-top, onde conheceremos utilidades, inutili-dades e “brinquedos bonitinhos”.

Desktópolis

Figura 1: Um guia rápido dá as boas-vindas aousuário de primeira viagem.

Figura 2: Quando o foco é colocado sobre a janelado Xpad, uma barra de ferramentas aparece.

barra de ferramentas, aquele com aaparência de uma folha de papel embranco. Se você estiver tendo dificul-dades para encontrar uma nota especí-fica, possivelmente outra janela estásobre ela, ocultando-a. Clique com obotão direito em qualquer janela doXpad, e selecione Notes/Show All (mos-tre todas as notas), para exibir todas elasem primeiro plano.

Você pode eliminar as notas clicandono ícone da lixeira na barra de ferramen-tas. Já botão à direita da barra de ferra-mentas, com o ícone de uma porta,encerra o Xpad.

Arquivos XpadComo uma alternativa viável ao similarem papel, o Xpad salva suas notasquando você sai do programa. Para issoo Xpad armazena o tamanho, a posição eo conteúdo de qualquer nota ativa, regis-trando todos estes dados no arquivo~/.xpad. Os arquivos com o prefixo infocontém dados sobre aaparência e tamanho detodas as suas notas.

Na próxima vez quevocê abrir o Xpad, elevai restaurar os dados desua última sessão. O pro-grama possui um meca-nismo muito útil para seproteger da perda de da-dos em casos de trava-mento ou queda dosistema: ele salva auto-maticamente suas notas enquanto vocêestá trabalhando, e não apenas quandovocê sai do programa.

Destacando NotasImportantesUma forma de destacar as notas maisimportantes é alterar sua aparência. OXpad possibilita uma configuração dife-rente para cada nota. Para abrir o menude configuração selecione Pad/Propertiesem qualquer janela do Xpad. Emprimeiro lugar, desabilite os ajustesglobais – global settings – para que oprograma não utilize a aparência padrãopara esta nota.

Quatro abas permitem que você definaa aparência das notas. Use o seletor decores para escolher a cor do texto (textcolor). A cor do fundo (background) éselecionada da mesma forma. A aba

fonte (font face) permite que vocêescolha o tipo e o tamanho das letras eem “Border” (bordas) você pode definira cor e a larguara da borda.

O campo “padding” especifica a dis-tância entre o texto e as bordas dajanela. O Xpad aplica imediatamente asalterações, permitindo ver em tempo realo resultado da mudança, o que garante amelhor legibilidade de suasnotas (veja a figura 3).

Mudando asconfiguraçõesNão são todos os que gostamda cor amarela tradicional, e afonte padrão poderia ser um poucomaior para os usuários com maior re-solução de vídeo. Ao invés de mudarcada lembrete individualmente, umatarefa trabalhosa, simplesmente altere opadrão para atender às suas exigências.Selecione Editar/Preferências (Edit/Pre-ferences) no menu para poder alterar as

opções de configuração nocentro de controle do Xpad.

As primeiras quatro abas dajanela: Cor do texto, cor defundo, bordas e fonte já nossão familiares. Utilizamos asmesmas para alterar a config-uração individual de cadalembrete, conforme mostra-mos anteriormente.

A aba de opções (Options)permite que você altere váriasconfigurações gerais. Marque

a opção Pads Start Sticky para exibirqualquer nova nota em todos os seusdesktops virtuais. Selecione Pad/Stickypara fazer isto com apenas uma nota.Desabilite Allow Scrollbars para evitar

que o programa adicione barras de rola-gem às notas. Isto permitirá que a janelado programa aumente se você precisaranotar mais texto do que o tamanhopadrão permite. Allow Window ManagerDecorations permite que o gerenciadorde janelas aplique suas próprias bordasàs janelas do Xpad.

Window Manager Close Action permiteque você especifique o quedeve ser feito quando vocêencerrar o Xpad. Ele pode,por exemplo, fechar e salvartodas as janelas automatica-mente (Close and save allpads), ou salvar e fechar

apenas a nota atual (Close and savepad), ou ainda, descartar a nota,jogando-a no lixo sem avisar (Destroypad (no confirmation)).

A aba Toolbar permite configurar aspreferências da barra de ferramentas.Você pode desativar a opção de auto-ocultação para mantê-la na tela todo otempo.Se você preferir trabalhar sem ela,pode desmarcar a opção Enable toolbar(ativar barra de ferramentas); as funçõesestão disponíveis no menu drop-down.

A seção Toolbar Buttons permite quevocê especifique quais botões deverãoser exibidos na barra de ferramentas(veja a Figura 4). Ao mover o ponteirodo mouse sobre qualquer um dos botões,uma descrição do mesmo é exibida. Obotão com o ícone de um pincel é ex-tremamente útil, pois permite que vocêexiba ou oculte o conteúdo de uma nota.

O botão com o ícone da chave defenda e martelo possibilita rápido acessoàs configurações. Você pode mover bo-tões para a seção Unused Buttons (bo-tões sem uso) ou levá-los de volta àseção Used Buttons (botões usados) dabarra de ferramentas. Use o mesmo pro-cesso para mudar a ordem dos botões ouremovê-los individualmente.

Ao clicar no botão com a seta verde osusuários do KDE terão uma surpresa:todas as notas são movidas para o painelde acesso rápido do seu desktop (veja aFigura 5). Para exibí-las novamente,basta clicar sobre o ícone no painel.

Em nossos testes o Gnome (2.2 e 2.4)apresentou problemas com esta função.As janelas do Xpad desapareceram comoesperado, mas ao clicar no ícone nadaacontece, e as notas simplesmente se re-cusam a reaparecer. ■

81www.linuxmagazine.com.br Agosto 2004

LINUX USERDesktópolis

Figura 5: Seleção dos botões que serão exibidosna barra de ferramentas.

Figura 6: Ícone doXpad na bandeja desistema do KDE.

Figura 3: Nota com fundolaranja, fonte azul e bordade 7 pixels.

O ambiente LinuxPara você entender o que é e como fun-ciona o Shell, primeiro vou te mostrarcomo funciona o ambiente em camadasdo Linux. Dê uma olhada no gráficomostrado na Figura 1.

Neste gráfico podemos ver que a ca-mada de hardware é a mais profunda e éformada pelos componentes físicos doseu computador. Em torno dela, vem acamada do kernel que é o cerne doLinux, seu núcleo, e é quem põe o hard-ware para funcionar, fazendo seu geren-ciamento e controle. Os programas ecomandos que envolvem o kernel, delese utilizam para realizar as tarefas paraque foram desenvolvidos. Fechando tudoisso vem o Shell, que leva este nome

porque, em inglês, Shell significa con-cha, carapaça, isto é, fica entre o u-

suário e o sistema operacional, deforma que tudo que interage como sistema operacional, tem quepassar pelo seu crivo.

O ambiente ShellBom já que para chegar aonúcleo do Linux, no seu ker-nel que é o que interessa a

todo aplicativo, é necessária afiltragem do Shell, vamos enten-

der como ele funciona de forma atirar o máximo proveito das inú-

meras facilidades que ele nos oferece.O Linux, por definição, é um sistema

multiusuário – não podemos nunca nosesquecer disto – e para permitir o acessode determinados usuários e barrar a en-trada de outros, existe um arquivo cha-mado /etc/passwd, que além de fornecerdados para esta função de “leão-de-chá-cara” do Linux, também provê informa-ções para o início de uma sessão (ou“login”, para os íntimos) daqueles quepassaram por esta primeira barreira. Oúltimo campo de seus registros informaao sistema qual é o Shell que a pessoavai receber ao iniciar sua sessão.

Lembra que eu te falei de Shell, fa-mília, irmão? Pois é, vamos começar aentender isto: o Shell é a conceituaçãode concha envolvendo o sistema opera-cional propriamente dito, é o nomegenérico para tratar os filhos desta idéiaque, ao longo dos muitos anos de exis-

Diálogo entreouvido em uma mesade um botequim, entre umusuário de Linux e um empur-

rador de mouse:• Quem é o Bash?• É o filho caçula da família Shell.• Pô cara! Estás a fim de me deixar

maluco? Eu tinha uma dúvida e vocême deixa com duas!

• Não, maluco você já é há muito tem-po: desde que decidiu usar aquele sis-tema operacional que você precisareiniciar dez vezes por dia e ainda porcima não tem domínio nenhum sobreo que esta acontecendo no seu com-putador. Mas deixa isso prá lá, poisvou te explicar o que é Shell e os com-ponentes de sua família e ao final danossa conversa você dirá: “Meu Deusdo Shell! Porque eu não optei peloLinux antes?”.

82 Agosto 2004 www.linuxmagazine.com.br

Papo de BotequimLINUX USER

Você não agüenta mais aquele seu

amigo usuário de Linux enchendo o

seu saco com aquela história de que o

sistema é fantástico e o Shell é uma

ferramenta maravilhosa? A partir

desta edição vai ficar mais fácil en-

tender o porquê deste entusiasmo...

POR JULIO CEZAR NEVES

Curso de Shell Script

Papo de Botequim

Bourne Shell (sh): Desenvolvido por StephenBourne do Bell Labs (da AT&T, onde tambémfoi desenvolvido o Unix), foi durante muitosanos o Shell padrão do sistema operacionalUnix. É também chamado de Standard Shellpor ter sido durante vários anos o único, e éaté hoje o mais utilizado. Foi portado parapraticamente todos os ambientes Unix e dis-tribuições Linux.Korn Shell (ksh): Desenvolvido por DavidKorn, também do Bell Labs, é um supercon-junto do sh, isto é, possui todas as facilidades

do sh e a elas agregou muitas outras. A com-patibilidade total com o sh vem trazendomuitos usuários e programadores de Shellpara este ambiente.Boune Again Shell (bash):Desenvolvido ini-cialmente por Brian Fox e Chet Ramey, este éo Shell do projeto GNU. O número de seusadeptos é o que mais cresce em todo omundo, seja por que ele é o Shell padrão doLinux, seja por sua grande diversidade decomandos, que incorpora inclusive diversoscomandos característicos do C Shell.

C Shell (csh): Desenvolvido por Bill Joy, daUniversidade de Berkley, é o Shell mais uti-lizado em ambientes BSD. Foi ele quem intro-duziu o histórico de comandos. Aestruturação de seus comandos é bem simi-lar à da linguagem C. Seu grande pecado foiignorar a compatibilidade com o sh, partindopor um caminho próprio.Além destes Shells existem outros, mas ireifalar somente sobre os três primeiros, tratan-do-os genericamente por Shell e assinalandoas especificidades de cada um.

Quadro 1: Uma rapidinha nos principais sabores de Shell

tência do sistema operacional Unix,foram aparecendo. Atualmente existemdiversos sabores de Shell (veja Quadro 1na página anterior).

Como funciona o ShellO Shell é o primeiro programa que vocêganha ao iniciar sua sessão (se quiser-mos assassinar a língua portuguesapodemos também dizer “ao se logar”) noLinux. É ele quem vai resolver um montede coisas de forma a não onerar o kernelcom tarefas repetitivas, poupando-o paratratar assuntos mais nobres. Como cadausuário possui o seu próprio Shell inter-pondo-se entre ele e o Linux, é o Shellquem interpreta os comandos digitados eexamina as suas sintaxes, passando-osesmiuçados para execução.• Êpa! Esse negócio de interpretar co-

mando não tem nada a ver com inter-pretador não, né?

• Tem sim: na verdade o Shell é um in-terpretador que traz consigo uma po-derosa linguagem com comandos dealto nível, que permite construção deloops, de tomadas de decisão e de ar-mazenamento de valores em variáveis,como vou te mostrar.

• Vou explicar as principais tarefas que oShell cumpre, na sua ordem de exe-cução. Preste atenção, porque estaordem é fundamental para o entendi-mento do resto do nosso bate papo.

Análise da linha de comandoNeste exame o Shell identifica os carac-teres especiais (reservados) que têm sig-nificado para a interpretação da linha elogo em seguida verifica se a linha pas-sada é um comando ou uma atribuiçãode valores, que são os ítens que voudescrever a seguir.

ComandoQuando um comando é digi-tado no “prompt” (ou linha decomando) do Linux, ele é divi-dido em partes, separadas porespaços em branco: a primeiraparte é o nome do programa,cuja existência será verificada;em seguida, nesta ordem, vêmas opções/parâmetros, redire-cionamentos e variáveis.

Quando o programa identifi-cado existe, o Shell verifica aspermissões dos arquivos en-

volvidos (inclusive o próprio programa),e retorna um erro caso o usuário quechamou o programa não esteja autor-izado a executar esta tarefa.

$ ls linuxlinux

Neste exemplo o Shell identificou o ls co-mo um programa e o linux como um pa-râmetro passado para o programa ls.

AtribuiçãoSe o Shell encontra dois campos separa-dos por um sinal de igual (=) sem espa-ços em branco entre eles, ele identificaesta seqüência como uma atribuição.

$ valor=1000

Neste caso, por não haver espaços embranco (que é um dos caracteres reserva-dos), o Shell identificou uma atribuição ecolocou 1000 na variável valor.

Resolução deRedirecionamentosApós identificar os componentes da li-nha que você digitou, o Shell parte paraa resolução de redirecionamentos.

O Shell tem incorporado ao seu elencode habilidades o que chamamos de

redirecionamento, que pode ser deentrada (stdin), de saída (stdout) ou doserros (stderr), conforme vou explicar aseguir. Mas antes precisamos falar de...

Substituição de VariáveisNeste ponto, o Shell verifica se as even-tuais variáveis (parâmetros começadospor $), encontradas no escopo docomando, estão definidas e as substituipor seus valores atuais.

Substituição de Meta-CaracteresSe algum meta-caracter (ou “coringa”,como *, ? ou []) for encontrado na linhade comando, ele será substituído porseus possíveis valores.

Supondo que o único item no seudiretório corrente cujo nome começacom a letra n seja um diretório chamadonomegrandeprachuchu, se você fizer:

$ cd n*

como até aqui quem está manipulando alinha de comando ainda é o Shell e oprograma cd ainda não foi executado, oShell expande o n* para nomegrandepra-chuchu (a única possibilidade válida) eexecuta o comando cd com sucesso.

Entrega da linha de comandopara o kernelCompletadas todas as tarefas anteriores,o Shell monta a linha de comando, jácom todas as substituições feitas echama o kernel para executá-la em umnovo Shell (Shell filho), que ganha umnúmero de processo (PID ou ProcessIDentification) e fica inativo, tirandouma soneca durante a execução do pro-grama. Uma vez encerrado este processo(e o Shell filho), o “Shell pai” recebenovamente o controle e exibe um“prompt”, mostrando que está prontopara executar outros comandos.

83www.linuxmagazine.com.br Agosto 2004

LINUX USERPapo de Botequim

Figura 1: Ambiente em camadas de um sistema Linux

ShellProgramas e Comandos

Núcleo ou KernelHardware

Quando digo que o último campo do arqui-vo /etc/passwd informa ao sistema qual é oShell que o usuário vai usar ao se “logar”, istodeve ser interpretado ao pé-da-letra. Se estecampo do seu registro contém o termo prog,ao acessar o sistema o usuário executará oprograma prog. Ao término da execução, asessão do usuário se encerra automatica-mente. Imagine quanto se pode incremen-tar a segurança com este simples artifício.

Com que Shell eu vou?

Jamais faça:

$ valor = 1000bash: valor: not foundNeste caso, o Bash achou a palavra valor iso-lada por espaços e julgou que você estivessemandando executar um programa chama-do valor, para o qual estaria passando doisparâmetros: = e 1000.

Cuidado na Atribuição

$ echo \*$ echo *

Viu a diferença?• Aspas (“): exatamente iguais ao após-

trofo, exceto que, se a cadeia entreaspas contiver um cifrão ($), umacrase (`), ou uma barra invertida (\),estes caracteres serão interpretadospelo Shell.Não precisa se estressar, eu não te deiexemplos do uso das aspas por quevocê ainda não conhece o cifrão ($)nem a crase (`). Daqui para frente -veremos com muita constância o usodestes caracteres especiais; o maisimportante é entender seu significado.

Caracteres deredirecionamentoA maioria dos comandos tem uma entra-da, uma saída e pode gerar erros. Estaentrada é chamada Entrada Padrão oustdin e seu dispositivo padrão é o tecladodo terminal. Analogamente, a saída docomando é chamada Saída Padrão oustdout e seu dispositivo padrão é a telado terminal. Para a tela também sãoenviadas normalmente as mensagens deerro oriundas dos comandos, chamadaneste caso de Saída de Erro Padrão oustderr. Veremos agora como alterar esteestado de coisas.

Vamos fazer um programa gago. Paraisto digite (tecle “Enter” ao final de cadalinha – comandos do usuário são ilus-trados em negrito):

$ catE-e-eu sou gago. Vai encarar?E-e-eu sou gago. Vai encarar?

O cat é um comando que lista o con-teúdo do arquivo especificado para aSaída Padrão (stdout). Caso a entradanão seja definida, ele espera os dados dastdin (a entrada padrão). Ora como eunão especifiquei a entrada, ele a está

esperando pelo teclado (Entrada Padrão)e como também não citei a saída, o queeu teclar irá para a tela (Saída Padrão),criando desta forma – como eu haviaproposto – um programa gago. Experi-mente!

Redirecionamentop da SaídaPadrãoPara especificarmos a saída de um pro-grama usamos o símbolo “>” ou o“>>”, seguido do nome do arquivo pa-ra o qual se deseja mandar a saída.

Vamos transformar o programa ante-rior em um “editor de textos”:

$ cat > Arq

O cat continua sem ter a entrada especi-ficada, portanto está aguardando que osdados sejam teclados, porém a sua saídaestá sendo desviada para o arquivo Arq.Assim sendo, tudo que esta sendo tecla-do esta indo para dentro de Arq, de for-ma que fizemos o editor de textos maiscurto e ruim do planeta.

Se eu fizer novamente:

$ cat > Arq

Os dados contidos em Arq serão perdi-dos, já que antes do redirecionamento oShell criará um Arq vazio. Para colocarmais informações no final do arquivo eudeveria ter feito:

$ cat >> Arq

Redirecionamento da Saídade Erro PadrãoAssim como por padrão o Shell recebe osdados do teclado e envia a saída para atela, os erros também vão para a tela sevocê não especificar para onde eles de-vem ser enviados. Para redirecionar oserros, use 2> SaidaDeErro. Note que en-tre o número 2 e o sinal de maior (>)não existe espaço em branco.

Vamos supor que durante a execuçãode um script você pode, ou não (depen-dendo do rumo tomado pela execuçãodo programa), ter criado um arquivochamado /tmp/seraqueexiste$$. Comonão quer ficar com sujeira no discorígido, ao final do script você coloca alinha a seguir:

rm /tmp/seraqueexiste$$

Decifrando a Pedra de RosetaPara tirar aquela sensação que você temquando vê um script Shell, que maisparece uma sopa de letrinhas ou um con-junto de hieróglifos, vou lhe mostrar osprincipais caracteres especiais para quevocê saia por aí como Champollion deci-frando a Pedra de Roseta.

Caracteres para remoção dosignificado.É isso mesmo, quando não desejamosque o Shell interprete um caractereespecífico, devemos “escondê-lo” dele.Isso pode ser feito de três maneiras difer-entes, cada uma com sua peculiaridade:• Apóstrofo (´): quando o Shell vê uma

cadeia de caracteres entre apóstrofos,ele retira os apóstrofos da cadeia e nãointerpreta seu conteúdo.

$ ls linuxm*linuxmagazine$ ls 'linuxm*'bash: linuxm* no such file U

or directory

No primeiro caso o Shell “expandiu” oasterisco e descobriu o arquivo linux-magazine para listar. No segundo, osapóstrofos inibiram a interpretação doShell e veio a resposta que não existe oarquivo linuxm*.

• Contrabarra ou Barra Invertida (\): i-dêntico aos apóstrofos exceto que abarra invertida inibe a interpretaçãosomente do caractere que a segue.Suponha que você, acidentalmente,tenha criado um arquivo chamado *(asterisco) – o que alguns sabores deUnix permitem – e deseja removê-lo.Se você fizesse:

$ rm *

Você estaria na maior encrenca, pois orm removeria todos os arquivos dodiretório corrente. A melhor forma defazer o serviço é:

$ rm \*

Desta forma, o Shell não interpreta oasterisco, evitando a sua expansão.Faça a seguinte experiência científica:

$ cd /etc$ echo '*'

84 Agosto 2004 www.linuxmagazine.com.br

Papo de BotequimLINUX USER

Como já havia dito, o Shell resolve a linha edepois manda o comando para a execução.Assim, se você redirecionar a saída de umarquivo para ele próprio, primeiramente oShell “esvazia”este arquivo e depois mandao comando para execução! Desta forma,para sua alegria, você acabou de perder oconteúdo de seu querido arquivo.

Redirecionamento Perigoso

Caso o arquivo não existisse seria envi-ado para a tela uma mensagem de erro.Para que isso não aconteça faça:

rm /tmp/seraqueexiste$$ 2> U

/dev/null

Para que você teste a Saída de Erro Pa-drão direto no prompt do seu Shell, voudar mais um exemplo. Faça:

$ ls naoexistebash: naoexiste no such file U

or directory$ ls naoexiste 2> arquivodeerros$$ cat arquivodeerrosbash: naoexiste no such file U

or directory

Neste exemplo, vimos que quando fize-mos um ls em naoexiste, ganhamos umamensagem de erro. Após redirecionar aSaída de Erro Padrão para arquivodeerrose executar o mesmo comando, recebe-mos somente o “prompt” na tela. Quan-do listamos o conteúdo do arquivo parao qual foi redirecionada a Saída de ErroPadrão, vimos que a mensagem de errotinha sido armazenada nele.

É interessante notar que estes carac-teres de redirecionamento são cumula-tivos, isto é, se no exemplo anteriorfizéssemos o seguinte:

$ ls naoexiste 2>> U

arquivodeerros

a mensagem de erro oriunda do ls seriaanexada ao final de arquivodeerros.

Redirecionamento daEntrada PadrãoPara fazermos o redirecionamento da En-trada Padrão usamos o < (menor que).“E pra que serve isso?”, você vai me per-guntar. Deixa eu dar um exemplo, quevocê vai entender rapidinho.

Suponha que você queira mandar ummail para o seu chefe. Para o chefe nós

caprichamos, né? Então ao invés de sairredigindo o mail direto no “prompt”, deforma a tornar impossível a correção deuma frase anterior onde, sem querer,você escreveu um “nós vai”, você editaum arquivo com o conteúdo da mensa-gem e após umas quinze verificaçõessem constatar nenhum erro, decideenviá-lo e para tal faz:

$ mail [email protected] < UU

arquivocommailparaochefe

e o chefe receberá uma mensagem com oconteúdo do arquivocommailparaochefe.

Outro tipo de redirecionamento “muitolouco” que o Shell permite é o chamado“here document”. Ele é representado por<< e serve para indicar ao Shell que oescopo de um comando começa na linhaseguinte e termina quando encontra umalinha cujo conteúdo seja unicamente o“label” que segue o sinal <<.

Veja o fragmento de script a seguir,com uma rotina de ftp:

ftp -ivn hostremoto << fimftpuser $Usuario $Senhabinaryget arquivoremotofimftp

neste pedacinho de programa temos ummonte de detalhes interessantes:• As opções usadas para o ftp (-ivn)

servem para ele listar tudo que estáacontecendo (opção -v de “verbose”),para não ficar perguntando se vocêtem certeza que deseja transmitir cadaarquivo (opção -i de “interactive”) efinalmente a opção -n serve para dizerao ftp para ele não solicitar o usuário esua senha, pois estes serão informadospela instrução específica (user);

• Quando eu usei o << fimftp, estavadizendo o seguinte para o interpreta-dor: “Olha aqui Shell, não se meta em

nada a partir deste ponto até encontraro ‘label’ fimftp. Você não entenderiadroga nenhuma, já que são instruçõesespecíficas do ftp”.

Se fosse só isso seria simples, maspelo próprio exemplo dá para ver queexistem duas variáveis ($Usuario e$Senha), que o Shell vai resolver antesdo redirecionamento. Mas a grandevantagem deste tipo de construção éque ela permite que comandos tam-bém sejam interpretados dentro doescopo do “here document”, o que,aliás, contraria o que acabei de dizer.Logo a seguir te explico como essenegócio funciona. Agora ainda não dá,estão faltando ferramentas.

• O comando user é do repertório deinstruções do ftp e serve para passar ousuário e a senha que haviam sidolidos em uma rotina anterior a estefragmento de código e colocados res-pectivamente nas duas variáveis:$Usuario e $Senha.

• O binary é outra instrução do ftp, queserve para indicar que a transferênciade arquivoremoto será feita em modobinário, isto é o conteúdo do arquivonão será inteerpretado para saber seestá em ASCII, EBCDIC, …

• O comando get arquivoremoto diz aocliente ftp para pegar este arquivo noservidor hostremoto e trazê-lo para anossa máquina local. Se quiséssemosenviar um arquivo, bastaria usar, porexemplo, o comando put arquivolocal.

Redirecionamento decomandosOs redirecionamentos de que falamos atéagora sempre se referiam a arquivos, istoé, mandavam para arquivo, recebiam dearquivo, simulavam arquivo local, … Oque veremos a partir de agora, redirecio-na a saída de um comando para a entra-da de outro. É utilíssimo e, apesar de nãoser macaco gordo, sempre quebra os

85www.linuxmagazine.com.br Agosto 2004

LINUX USERPapo de Botequim

Preste atenção! Não confunda >> com 2>. Oprimeiro anexa dados ao final de um arqui-vo, e o segundo redireciona a Saída de ErroPadrão (stderr) para um arquivo que estásendo designado. Isto é importante!

Dados ou Erros?

O $$ contém o PID, isto é,o número do seuprocesso.Como o Linux é multiusuário,ébom anexar sempre o $$ ao nome dos seusarquivos para não haver problema de propri-edade, isto é,caso você batizasse o seu ar-quivo simplesmente como seraqueexiste,aprimeira pessoa que o usasse (criando-oentão) seria o seu dono e a segunda ganhariaum erro quando tentasse gravar algo nele.

Direito de Posse

Um erro comum no uso de labels (como ofimftp do exemplo anterior) é causado pelapresença de espaços em branco antes ouapós o mesmo. Fique muito atento quanto aisso, por que este tipo de erro costuma daruma boa surra no programador, até que sejadetectado. Lembre-se: um label que se prezetem que ter uma linha inteira só para ele.

Etiquetas Erradas

$ echo "Existem who | wc -l UU

usuarios conectados"Existem who | wc -l usuarios U

conectados

Hi! Olha só, não funcionou! É mesmo,não funcionou e não foi por causa dasaspas que eu coloquei, mas sim por queeu teria que ter executado o who | wc -lantes do echo. Para resolver este proble-ma, tenho que priorizar a segunda partedo comando com o uso de crases:

$ echo "Existem `who | wc -l` UU

usuarios conectados"Existem 8 usuarios U

conectados

Para eliminar esse monte de brancosantes do 8 que o wc -l produziu, bastaretirar as aspas. Assim:

$ echo Existem `who | wc -l` UU

usuarios conectadosExistem 8 usuarios conectados

As aspas protegem da interpretação doShell tudo que está dentro dos seus lim-ites. Como para o Shell basta um espaçoem branco como separador, o monte deespaços será trocado por um único apósa retirada das aspas.

Outra coisa interessante é o uso doponto-e-vírgula. Quando estiver no Shell,você deve sempre dar um comando emcada linha. Para agrupar comandos emuma mesma linha, temos que separá-lospor ponto-e-vírgula. Então:

$ pwd ; cd /etc; pwd ;cd -;pwd/home/meudir/etc/home/meudir

Neste exemplo, listei o nome do diretóriocorrente com o comando pwd, mudeipara o diretório /etc, novamente listei onome do diretório e finalmente voltei pa-ra o diretório onde estava anteriormente(cd -), listando seu nome. Repare quecoloquei o ponto-e-vírgula de todas asformas possíveis, para mostrar que nãoimporta se existem espaços em brancoantes ou após este caracter.

Finalmente, vamos ver o caso dosparênteses. No exemplo a seguir, colo-camos diversos comandos separados porponto-e-vírgula entre parênteses:

$ (pwd ; cd /etc ; pwd)/home/meudir/etc$ pwd/home/meudir

“Quequeiiisso” minha gente? Eu estavano /home/meudir, mudei para o /etc,constatei que estava neste diretório como pwd seguinte e quando o agrupamentode comandos terminou, eu vi que conti-nuava no /etc/meudir!

Hi! Será que tem coisa do mágicoMandrake por aí? Nada disso. O interes-sante do uso de parênteses é que elesinvocam um novo Shell para executar oscomandos que estão em seu interior.Desta forma, fomos realmente para odiretório /etc, porém após a execução detodos os comandos, o novo Shell queestava no diretório /etc morreu e retor-namos ao Shell anterior que estava em/home/meudir.

Que tal usar nossos novos conceitos?

$ mail [email protected] << FIMOla suporte, hoje as `date UU“+%hh:mm”` ocorreu novamente UUaquele problema que eu havia UUreportado por telefone. De UUacordo com seu pedido segue a UUlistagem do diretorio:`ls -l`Abracos a todos.FIM

Finalmente agora podemos demonstrar oque conversamos anteriormente sobre“here document”. Os comandos entrecrases tem prioridade, portanto o Shellos executará antes do redirecionamentodo “here document”. Quando o suportereceber a mensagem, verá que oscomandos date e ls foram executadosantes do comando mail, recebendo entãoum instantâneo do ambiente nomomento de envio do email.- Garçom, passa a régua! ■

maiores galhos. Seu nome é “pipe” (queem inglês significa tubo, já que ele cana-liza a saída de um comando para aentrada de outro) e sua representação é a| (barra vertical).

$ ls | wc -l21

O comando ls passou a lista de arquivospara o comando wc, que quando estácom a opção -l conta a quantidade de li-nhas que recebeu. Desta forma, pode-mos afirmar categoricamente que nomeu diretório existiam 21 arquivos.

$ cat /etc/passwd | sort | lp

A linha de comandos acima manda alistagem do arquivo /etc/passwd para aentrada do comando sort. Este a classi-fica e envia para o lp que é o gerenciadorda fila de impressão.

Caracteres de ambienteQuando queremos priorizar uma expres-são, nós a colocamos entre parênteses,não é? Pois é, por causa da aritmética énormal pensarmos deste jeito. Mas emShell o que prioriza mesmo são as crases(`) e não os parênteses. Vou dar exemp-los para você entender melhor.

Eu quero saber quantos usuários estão“logados” no computador que eu admi-nistro. Eu posso fazer:

$ who | wc -l8

O comando who passa a lista de usuáriosconectados ao sistema para o comandowc -l, que conta quantas linhas recebeu emostra a resposta na tela. Muito bem,mas ao invés de ter um número oitosolto na tela, o que eu quero mesmo éque ele esteja no meio de uma frase. Ora,para mandar frases para a tela eu só pre-ciso usar o comando echo; então vamosver como é que fica:

86 Agosto 2004 www.linuxmagazine.com.br

Papo de BotequimLINUX USER

Julio Cezar Neves é Analista de Su-porte de Sistemas desde 1969 e tra-balha com Unix desde 1980, quandofez parte da equipe que desenvolveuo SOX, sistema operacional, similarao Unix, da Cobra Computadores. Éprofessor do curso de Mestrado emSoftware Livre das Faculdades Estáciode Sá, no Rio de Janeiro.SO

BRE

OAU

TOR

Em Unix existe um arquivo fantasma.Chama-se /dev/null.Tudo que é enviadopara este arquivo some. Assemelha-se a umBuraco Negro. No caso do exemplo, comonão me interessava guardar a possível men-sagem de erro oriunda do comando rm, redi-recionei-a para este arquivo.

Buraco Negro

Após Oslo no ano passado, nesteano foi a vez de Porto Alegre ter ahonra de servir de sede para a

principal conferência da comunidadeDebian. Deste modo, o 5º encontro(seguindo um antigo costume “hacker” acontagem começou do zero, com a Deb-Conf 0) manteve a tradição de ser real-izado uma vez na Europa e no anoseguinte em algum outro continente. Adecisão por Porto Alegre não foi poracaso: o 5º Fórum Internacional de Soft-ware Livre foi realizado na seqüência.

A Debconf durou oito dias este ano, aocontrário do ano passado, quando sólevou três dias. Muitos dos desenvolve-dores chegaram antes do início da con-ferência, para tomar parte do DebCamp,evento concebido como maratona deprogramação, com o objetivo de trazerresultados preliminares antes mesmo doinício da DebConf. Neste ano, ambos oseventos ocorreram em paralelo.

Com mais de 150 pessoas presentes,entre desenvolvedores oficiais e voluntá-rios, a DebConf 4 contou com mais visi-tantes que a conferência do ano passado.O patrocínio de grandes empresas comoHewlett-Packard, Cisco Systems e O’Reil-ly foi com certeza um dos fatores quetornou isto possível: sem ele muitos dosdesenvolvedores não teriam como arcarcom os custos de viagem.

Sarge e distribuiçõescustomizadasA programação do evento foi apertada:palestras e workshops ocorriam muitasvezes ao mesmo tempo. Atividades abor-dando Distribuições Debian Customiza-das (DDC) despertaram em particularbastante interesse. Petter Reinholdtsen,por exemplo, apresentou os projetosSkolelinux e Debian-Edu. Ambos os pro-jetos são customizações do Debian

GNU/Linux voltadas para a educação.Mas o tema que despertou maior inter-esse foi o trabalho na próxima versão dadistribuição, Debian GNU/Linux 3.1,codinome Sarge. Participantes que que-riam trabalhar nas novas rotinas deinstalação do sistema se “apossaram” deuma sala após alguns dias. E muito em-bora o coordenador do desenvolvimentode Sarge não estivesse presente na con-ferência, a oportunidade foi aproveitadapara discutir os planos para a nova ver-são do sistema e mesmo para versõesfuturas. Além de palestras e workshopshouve também oportunidade para deixaro computador de lado e fazer umaexcursão para Gramado.

Na terceira noite do encontro houveum “jantar formal” com o líder mundialdo projeto Debian, Martin Michlmayr. Odiscurso ocorrido antes do jantar foi a-

pelidado pelos desenvolvedores como“Palavras do Rei”. O último dia foi espe-cialmente caracterizado pelo evento: o“Dia Sem Fins Lucrativos” (Nonprofit-Day), voltado para os desenvolvedoresque se interessam especialmente peloprojeto “Debian Nonprofit”, uma abor-dagem que tem por objetivo otimizar adistribuição de acordo com as necessi-dades de instituições não comerciais.

A gente se vê na Finlândia?A DebConf se mostrou novamente umcomponente importante das atividadesda comunidade Debian, sendo ao mes-mo tempo celeiro de idéias e oficina deimplementação. O sucesso justifica a re-alização do evento anualmente. No anoque vem, pelo que parece, teremos um“repeteco” na Finlândia, que é para mui-tos a pátria do Linux. ■

87Agosto 2004

COMUNIDADEDebConf 4

www.linuxmagazine.com.br

De 26 de maio a 2 de junho ocorreu o encontro anual de desenvolvedores do

Debian. O lançamento de Sarge, a próxima versão do sistema, ocupou lugar de

destaque nas discussões e palestras. POR MARTIN LOSCHWITZ

DebConf 4 – 5º Encontro de Desenvolvedores do Debian

Sarge cai no Samba!

Figura 1: Este ano a DebConf no Brasil contou com mais de 150 participantes da comunidade Debian. Emoito dias de conferência os desenvolvedores tiveram a oportunidade de participar de palestras e work-shops, bem como de trabalhar na nova versão do sistema.

ro dia do evento, permitindo assim queseus participantes do mundo todo pu-dessem planejar sua participação nofórum. De acordo com o ponto de vistade Martin Konold, do projeto KDE, oFISL já é maior que o Linux-Kongress, naAlemanha, que atualmente é o maiorevento de Software Livre na Europa. E éclaro, as presenças de grandes nomesmundiais do Software Livre e tambémCreative Commons estiveram presentes,entre eles o cada vez mais brasileiroJohn Maddog Hall, o “X.org-Man” JimGettys e o idealizador da Creative Com-mons, Lawrence Lessig.

A expectativa do início do fórum eragrande e compreensível. Após o grandeevento de capacitação promovido pelogoverno em Brasília, onde oficialmente otempo de migração brasileira foi inici-ado, havia um medo inerente do pro-blema de continuidade deste programa.Mas esta mudança se mostrou real e sóli-da dentro do FISL, um ponto de uniãoentre a comunidade com uma meta co-mum. Considerando este um ano eleito-ral, ninguém se mostrou surpreso que

aspectos políticos fossem um dos tópicosmais discutidos durante as conversas epalestras. Conseqüentemente uma dasmaiores surpresas do evento se aven-turou no terreno político.

Qual é seu nome, Linux?Uma boa surpresa veio através de umpainel idealizado e coordenado pelo gaú-cho Leonardo Vaz, como resultado deum movimento crescente iniciado porele. O movimento em si tem a meta deparar as brigas internas da comunidadede Software Livre com o intuito de evitaruma assalto político ao mesmo, e paraunir as diversas “tribos”.

Você conhece bem todas elas: for-madas pelos grupos de usuários de dis-tribuições bem como comunidades dedesenvolvedores, unidos com o objetivode acabar com uma rivalidade estúpida,bem como imprensa especializada e pro-fessores universitários.

Este painel colocou diversos represen-tantes de todos estes movimentos nomesmo patamar, e no melhor espíritohacker, pediu à grande platéia (sentada

Tempos estranhos vivemos hoje:enquanto o hemisfério norte entraem batalhas hercúleas na fronteira

das patentes de software e se preocupamcom o rumo do futuro da tecnologia, pornossas bandas tupiniquins decidimosavisar que as regras estão mudando, eninguém pode mais nos parar agora. Oque começa a se realizar aqui é sonhodos primeiros idealizadores do movi-mento de Software Livre.

E os grandes sinais desta mudançaforam vistos no Fórum Internacional deSoftware Livre em Porto Alegre, em suaquinta edição (http://www.softwarelivre.org/forum2004).

Sob olhares impressionados, os diver-sos participantes estrangeiros do fórumassistiram a um evento composto demais de 4500 participantes registrados,provindos de 35 países e composto demais de 100 palestras e painéis duranteum período de 4 dias, de 2 a 5 de Junho.Colaborando com o grande momento, aDebConf 4, realizada na semana préviado evento, também em Porto Alegre, teveseu último dia se sobrepondo ao primei-

O mundo está mudando – e o Brasil tem orgulho de ser uma das forças motrizes que dirigem este processo. A lição de

otimismo a ser aprendida veio através do Fórum Internacional de Software Livre em Porto Alegre.

POR HELIO CHISSINI DE CASTRO

5º FISL – Fórum Internacional de Software Livre

O Brasil Mostra o Caminho…

88 Agosto 2004 www.linuxmagazine.com.br

5º FISLCOMUNIDADE

Figura 1: O dia começando no Fórum. Figura 2: E o palco ainda não estava completo…

inclusive no chão devido à falta deespaço) o fim de tais divergências. Umsentimento de que existe uma possibili-dade de união do movimento de soft-ware livre no Brasil.

A interminável história GNU/Linux,que usualmente é abordada de formareligiosa, foi um dos temas centrais. Opainel surpreendentemente mostrou aosparticipantes que talvez GNU/Linux nãoseja exatamente o meio correto de sedenominar o sistema operacional. Porquê? Porque se fôssemos admitir que osistema deveria ter seu nome adequadoàs suas licenças, teríamos algo comoGNUApacheBSDXFreeMIT…/Linux. Tra-ta-se de uma questão de consistência.Outro tema complexo abordado foi a pro-teção da comunidade contra a assi-milação política através de interesses.Apesar de a interação com organizaçõespolíticas ser uma realidade necessária, omedo vem da possibilidade de que sefale mais do que se faça, o que indireta-mente representaria um retrocesso emface da situação atual.

Mas o tema central foi como evitar adesunião atual da comunidade. A cons-tante e desnecessária rivalidade entregrupos, oriunda de ataques indiretos,causa divergências onde a união serianecessária. No painel, foi possível vermembros de várias destas comunidadesfalando em uma só voz. A mensagem éde competição colaborativa (e depoissair e beber uma cerveja juntos).

Não há lugar como o $HOMEE funcionou: No pavilhão dos Grupos deUsuários (GUS), um espaço democráticopara grupos de usuários de distribuiçõese projetos de desenvolvimento, o que sevia era um clima de festa e união. Mem-bros do projeto KDE eram interpeladospara tirar fotos na frente do banner doprojeto Gnome. E, imagine só, tudo issoacontecendo no melhor bom humor e es-pírito de comunidade.

Existia trânsito livre entre os estandes,não importando de qual projeto ou em-presa. Raramente se via um estande ocu-pado somente por seus integrantes ouvisitantes, sempre havia algum “alien”em volta. Até mesmo o pessoal do gover-no (carinhosamente chamados “.gov”,no idioma nativo de internet ) estavapasseando por lá, às vezes parando parabater um papo, sem constrangimento,

sem diferenças. A definição seria Geekencontra Político que encontra Hacker,todos na mesma roda de chimarrão.

Coisas que só um fórum internacionalpoderia fazer, como ver a “embaixadatemporária” da Alemanha no estande doKDE. Onde até mesmo os brasileiros quechegavam por lá sabiam Alemão (coisasdo Sul), se juntando aos alemães pre-sentes, tanto do projeto quanto algunsda DebConf que estacionaram por ali(nota do repórter: até o editor chefe daLinux Magazine Brasil que estacionoupor lá também tinha seus cacoetes deAlemão). Ou mais: fazer festa com umgrupo de usuários Linux da Argentinaem dia de jogo oficial de futebol entre osdois países, algo que todo brasileiro sabeser quase uma disputa religiosa.

Talvez um dos grandes fatores envolvi-dos nesta integração foi aquele jeitinhobrasileiro de arrumar tudo: a despeito deuma tentativa frustrada de algumas pes-soas da organização, nenhum dos estan-des seguiu um determinado padrão.Praticamente todos os grupos chegavame faziam a pergunta básica do receituário“geek”: “Onde está o ponto de rede?”.Assim que era obtida a resposta, cadagrupo se largava à vontade no estande,às vezes dividindo-o com outro grupo,retirando divisórias, enfim, uma grandefesta. Para não perder o costume, algunscabos de rede perdidos foram tomadoscomo “reféns” e o que se via era ummonte de pessoas felizes sentadas no

chão com os notebooks no colo. Não po-deria haver espírito mais família.

Entrevistas, entrevistas emais entrevistas…É desnecessário dizer que um eventodeste porte traz atenção da mídia. Porémdesta vez não apenas a mídia regular detecnologia, mas televisões e jornais na-cionais e internacionais, incluindo desta-ques como o pessoal do “Vitrine”, da TVCultura, que estavam extasiados com oque viam. Foram gravadas diversas en-trevistas e reportagens no seu estilodivertido e aberto, e, para surpresa deles,encontraram um grupo extremamente re-ceptivo, o que demonstrou claramenteque a lenda de um “micreiro” não sersociável não é necessariamente real.

E eles não eram a única equipe de TVpor ali: cerca de 10 ou mais equipesforam vistas, incluindo um curioso docu-mentário feito por uma equipe ameri-cana, encomendado por uma emissoraprivada especializada em tecnologia(algo não muito comum por aqui). Adi-cionalmente, tivemos o lançamento deduas revistas que têm como tema o Soft-ware Livre e o Linux (uma delas vocêtem o prazer de estar lendo agora), euma grande cobertura da mídia não es-pecializada, considerada um marco indi-cador de quão longe o movimento deSoftware Livre já chegou no Brasil. Ques-tionados alguns sobre o motivo de, nestemomento em especial, estar dando co-

89Agosto 2004www.linuxmagazine.com.br

COMUNIDADE5º FISL

Figura 3: A comunidade bagunçada e unida.

de sugestão para implantar a licença,não esperava que alguém que por tantosanos esteve ligado à indústria da música,a aceitaria tão bem: é de Gil a primeiramúsica licenciada pela ReCombo.

O criador da idéia, o jurista LawrenceLessig falou claramente que é impressio-nante ver uma licença criada para ser a-plicada primeiramente no tão chamado“primeiro mundo”, ser utilizada em pri-meiro lugar em um país emergente quenão tem medo de mudar.

Em uma impressionante analogia coma criação do Piano (“Piano Forté”), John“Maddog” Hall mostrou porque é umapessoa tão amada pela comunidade:como historiador e personalidade cati-vante ele conseguiu, num rápido dis-curso interrompido pela chegada doministro Gil, correlacionar o modelo delicenciamento da Creative Commonscom a estratégia usada pelo criador dopiano para popularizá-lo. Foi aplaudidode pé por cerca de 2000 pessoas durantequase três minutos.

E isso, mesmo após a interrupção cau-sada pela chegada do ministro, tambémrecebido com muitos aplausos. Vale lem-brar que esta é a primeira vez que umministro de estado vem a um fórum deSoftware Livre. Porém, para decepçãodos fãs (e repórteres) presentes, depoisde um longo e sonolento discurso, o mi-nistro praticamente não pôde parar paracumprir seus compromissos de entre-vistas e fotos. Mas antes de sua saída,dois importantes integrantes da mesapassaram as mensagens que definiram oque foi este fórum.

Em uma impressionante mudança par-cial de ponto de vista, um dos maisimportantes e respeitados analistas eco-nômicos do país, Luís Nassif, conhecidocrítico do modelo de exploração comer-cial do Software Livre, falou abertamentede novas possibilidades de funciona-mento deste modelo.

Questionado pela Linux Magazine so-bre o porquê da mudança de ponto devista, Nassif respondeu:

“Eu ainda não estou convencido sobrea viabilidade econômica do modelo atualde exportação de Software Livre, porémapós a equipe do Sérgio Amadeu (Dire-tor-Presidente do ITI, ver página 8) memostrar como o desenvolvimento doKernel e de outros projetos de SoftwareLivre é organizado e estruturado, pudeconceber a idéia de viabilidade.”

Quem poderia conceber que um inte-grante do governo poderia convencer umeconomista sobre as vantagens modelode mercado adotado pelo Software Livre?

Mas o mundo está mudando, e comseus arrebates costumeiros Marcelo Tasfechou o painel com a frase mais mar-cante de toda a conferência. Na posiçãode quem teve contato com a Internet e acomputação muito cedo devido à suaprofissão, ele disse:

“Olhem todo mundo. Eu estou aqui,em 2004, em um evento de informática,sentado com economistas, advogados emúsicos, em frente de uma platéia enor-me que parece que saiu de um show deRock’n’Roll, falando sobre liberdade dedireitos autorais e nosso ministro da cul-tura é Gilberto Gil !!!” ■

bertura a um evento deste porte commaior atenção aos detalhes (já houveramoutros similares), a resposta mostravaclaramente que não há mais apenasinteresses tecnológicos envolvidos, e simque está se tratando de um modelo eco-nômico e político de um país. E isso leva-nos ao tema central da maior (e maisesperada) palestra do evento.

Leia, escute, use, copie,reutilizeÉ claro, estamos falando da “CreativeCommons”. Em um movimento arrojadodo Ministério da Cultura, junto com Fin-lândia e Japão, o Brasil foi um dosprimeiros países a adaptar a licença daCreative Commons ao seu sistema legal.E foi mais além, um novo adendo àlicença foi criado e batizado aqui. AReCombo (nome de um grupo musicalnacional que trabalha especificamentecom montagens). Essa licença realiza osonho de muitos DJ’s mundo afora: elafinalmente cria uma base legal para areutilização de conteúdo. Até este mo-mento divisor de águas, tudo era feitoem uma espécie de acordo de cavalhei-ros, mas sempre existiu a incerteza legal.Sim: nós mudamos isso!

A Fundação Getúlio Vargas ajudou acapitanear o projeto e a dar-lhe o emba-samento legal. O mentor do projeto aqui,Ronaldo Lemos da Silva Júnior, se encar-regou ele mesmo de se aproximar doatual ministro da cultura, Gilberto Gil,levando-o a comprar a idéia. Durante apalestra, Ronaldo contou que, quando seaproximou do ministro na sua tentativa

90 Agosto 2004 www.linuxmagazine.com.br

5º FISLCOMUNIDADE

Figura 5: À espera de um ministro…Figura 4: Nerd também é Cultura… Uma das várias entrevistas.

Em dezembro de 2002, havia umcerto descontentamento da equipedo Centro Público Onze de Junho,

em Santo André, com o sistema de en-sino e os cursos oferecidos por ela a tra-balhadores municipais desempregados,em diversas áreas, em algumas escolasprofissionalizantes municipais. Por outrolado, havia também muita vontade defazer e oferecer coisas melhores e dife-rentes à população da cidade.

Uma das decisões tomadas naquelaépoca foi a especialização das escolasmunicipais em Centros Públicos, dividi-dos por área de atuação profissional.Nascia o Centro Público de FormaçãoProfissional de Tecnologia da Informaçãoem Software Livre [1], mantido com re-cursos municipais, dirigido e coordenadopor um convênio entre a Secretaria deEducação e Formação Profissional daPrefeitura Municipal de Santo André e aEscola Sindical São Paulo da CUT.

EngatinhandoA escola de informática não poderia serapenas um centro de treinamento, massim um lugar que, além de propiciar aaprendizagem da informática pelos alu-nos, levasse em consideração a experiên-cia de vida deles e apontasse caminhospara encontrar alternativas de empregoou renda. A equipe deveria se apoiar noensino de conceitos computacionais deforma ampla, para que os alunos nãopassassem pela experiência de esquecertudo o que aprenderam um mês depoisde terminar o curso por não possuircomputador em casa.

Outra decisão importante daquela épo-ca, e que viria a ser fundamental nofuturo, foi estudar e compreender umnovo sistema operacional, bem popularentão: o Linux. A equipe descobriu quena verdade o Linux não era a única coisaque deveria ser estudada, e um novomundo começou a surgir: o mundo doSoftware Livre e suas idéias, licenças edemais definições. Era um mundo bemdiferente do já conhecido e, ao mesmotempo, bem próximo do desejado.

Software Livre para umaEducação LivreA proposta educacional do centro sem-pre buscou priorizar a conquista da auto-nomia intelectual por parte do aluno,ensinando-o a aprender como aprender.Também sempre foi parte da prática edu-cacional discutir com os alunos não sóconteúdo técnico, mas também assuntosrelativos a Trabalho e Cidadania. Nessaperspectiva, entre outras coisas, são criti-cados os monopólios, o individualismo ea ganância desenfreada, motivadoras deuma arrasadora onda de desemprego ede desagregação social no país. A neces-sidade de solidariedade e ações quetranscendam o indivíduo também sem-pre foram conteúdos privilegiados.

A adoção de um sistema operacionallivre possibilitaria fomentar entre nossosalunos a discussão sobre o mundo datecnologia da informação, disponibili-zando um elemento prático a mais paradiscutir com os alunos o tipo de globali-zação construída nas últimas décadas, eque, no caso específico da informática,gerou a chamada “exclusão digital”.

Ao tomar contato com as idéias e aspossibilidades do mundo do SoftwareLivre, a equipe começou a vislumbrargrandes possibilidades educacionais, oque não ocorria com os softwares utiliza-dos até então, todos proprietários.

Outra vantagem percebida imediata-mente era o baixo custo, que possibili-tava oferecer mais cursos e itinerários

91Agosto 2004www.linuxmagazine.com.br

COMUNIDADEEducação Livre

O Software Livre é por excelência a plataforma ideal na educação assistida por

computador. O Centro Público de Formação Profissional de Tecnologia da Infor-

mação em Software Livre é um caso bem sucedido do seu uso.

POR CIBELE PÓVOA LUPIS, ERNANI MOREIRA E MARCO SINHORELI

Educação Livre em Santo André

Liberdade para Aprender

Bobbie Osborne, www.sxc.hu

nada melhor que o Software Livre, quepor excelência é construído para incenti-var esta característica em seus usuários.Para o usuário que aprende em Linux,operar uma máquina sob a plataformaMicrosoft é bastante plausível. Já oinverso não pode ser garantido.

A utilização do Software Livre na ad-ministração pública e em empresas égrande, e estará se intensificando a curtoe médio prazo, o que já justificava bas-tante a opção por seu ensino.

O que faltava era vencer as dificul-dades, sobretudo as de ordem técnica.Embora o centro contasse com profis-sionais que já conheciam e utilizavamLinux, eles não tinham ainda a experiên-cia adequada na utilização do sistema,de modo que, algumas vezes, a simplesinstalação de uma distribuição em umcomputador gerava frustrações e dúvidasa respeito da estratégia.

Na maioria das vezes, o insucesso naincursão pelo Linux se devia à letargiaintelectual à qual todos foram expostosao utilizar durante anos o sistema opera-cional proprietário dominante. Tudovinha de bandeja e quando não haviamais jeito para resolver um problema asolução era formatar o HD e reinstalarum backup do sistema. Um perito emSoftware Livre foi contratado para mos-trar o caminho para o sucesso, o que aju-dou muito no avanço da proposta.

Outro problema eram os comentáriosfeitos por muitas pessoas, de que o cen-tro público estaria dando “um tiro nopróprio pé”, e outro na cabeça dos alu-nos, pois seria muito difícil que eles fos-sem empregados, já que além de pobres,excluídos e com escolaridade defasada,seriam também profissionais formadospara utilizar um sistema operacional pra-ticamente desconhecido e quase sem usono mercado de trabalho.

Hoje percebe-se que argumentos comoesses são produto de uma falta de conhe-cimento tanto do Software Livre, que emnada deixa a desejar quando comparadoao software proprietário, como do pró-prio mercado de trabalho, onde as opor-tunidades para quem sabe operar umsistema Linux aumentam cada vez mais.Também mostram a existência de umaprofunda confusão no que diz respeitoao que é ensinar. Se a idéia fosse sim-plesmente adestrar os alunos a apertarbotões, estes argumentos até fariam sen-tido, mas como a intenção nunca foiessa, conforme já dissemos anterior-mente, o centro estava no caminho certo.

Por fim o maior de todos os desafiosfoi a própria equipe. O preconceito e omedo de mudanças faziam com quemuitas pessoas ficassem simplesmenteaterrorizadas com a idéia de que na me-tade restante daquele ano, os alunosteriam que ter aulas de Linux. Foi neces-sário pensar em estratégias de convenci-mento e mais cursos de formação paradar mais segurança ao profissionais, so-bretudo aos profissionais de ensino.

Ainda existe muita resistência no usodo GNU/Linux em vários locais e isso évivenciado no centro. As pessoas achamque o GNU/Linux é muito difícil, e quesomente “hackers” são capazes de ope-rá-lo. Mas com o uso, medos e receiosvão sendo dissipados e substituídos pelavontade de aprender mais, de se apri-morar e descobrir novos recursos.

Mudança contra a vontadeAssim, a instalação do GNU/Linux nasmáquinas foi planejada e iniciada. Umestudo revelou uma oportunidade muitointeressante e barata de reaproveitamen-to dos recursos já existentes: a utilizaçãode um projeto norte-americano, livre,com o qual computadores relativamenteantigos podem operar em rede sem anecessidade de disco rígido local. A exe-cução dos softwares ocorre, de formaremota, em um computador que dispõede hardware mais potente, e com auxíliode um programa chamado “Linux Termi-nal Server Project” (LTSP).

No mês de junho de 2003 algumasestações de trabalho baseadas nestasolução já estavam sendo testadas. Aprevisão era de que no segundo semestrede 2003 ela fosse testada em máquinasantigas, obtidas através de doações de

formativos na escola. A equipe decidiu,então, se preparar para incorporar o Soft-ware Livre ao seu sistema de ensino.

Os nomes dos cursos foram modifica-dos: ao invés de ter o nome do softwareque seria objeto de ensino, por exemplo“Word”, eles passaram a ser chamadospela tarefa realizada pelo programa, co-mo “Editor de Textos”, a fim de dissociaro curso de uma determinada plataforma.

É difícil mudarNo início do ano seguinte (2003) foi rea-lizado um planejamento para o ensinodo Software Livre. Todos os instrutoresreceberam um treinamento básico sobreLinux antes do início das aulas, foi cri-ada uma sala de estudo, vários manuaisforam disponibilizados, “Install-Fests”(instalações, trocas de experiências edebates) sobre GNU/Linux foram reali-zadas e foi aberto um processo de dis-cussão que culminaria com a inclusão doensino do GNU/Linux a todas as turmasa partir de agosto daquele ano, sem noentanto abandonar o ensino na pla-taforma Windows, mas com a perspec-tiva da migração total para SoftwareLivre a longo prazo.

Mas todo o esforço realizado, e toda aboa intenção no uso de Software Livre,era justificado diante da mudança queestava em curso? Será que o GNU/Linuxnão seria muito difícil de ser operado, eportanto de difícil aprendizagem? Seráque os alunos, ao aprenderem esta novaplataforma, não estariam despreparadospara o mercado de trabalho, uma vezque a maioria dos computadores em usonas empresas operam sob a plataformaMicrosoft Windows?

A resposta a estas perguntas deu à pro-posta de trabalho do centro plenas con-dições não só de oferecer uma educaçãode qualidade, mas também de oferecerum ensino com bastante requinte técnicoe de última geração. Além disso ela con-ta com uma plataforma que permite aexpansão do aprendizado de forma autô-noma, possibilitando ao aluno aprimorarseus conhecimentos em informática.

Outro fator a ser mencionado é que oambiente gráfico do GNU/Linux é bas-tante similar ao do Microsoft Windows.Como a intenção não era oferecer umaeducação baseada em “decoreba” deconceitos e comandos, e sim desenvolverhabilidades e a capacidade de aprender,

92 Agosto 2004 www.linuxmagazine.com.br

Educação LivreCOMUNIDADE

Figura 1: Fachada do Centro Público.

empresas, ou no próprio parque demáquinas da Prefeitura de Santo André,permitindo a avaliação do desempenhoreal deste projeto. Como faltavam algunsajustes, e não havia ainda muita clarezasobre como conseguir as doações, deci-diu-se continuar este estudo ao longo dosegundo semestre, com implantação naprática depois que testes comprovassemseu funcionamento adequado.

Com a solução definida e o cronogra-ma de testes planejado, possivelmente jáno início do ano de 2004 seria possívelcomeçar a trabalhar com o LTSP. Noentanto, o cronograma teve de ser modi-ficado em função de um assalto à escolaocorrido em 22 de julho de 2003, quandoforam roubadas 36 máquinas. A equipesuspendeu as aulas por uma semana, foiatrás de máquinas velhas em “lixões” deinformática, implantou o sistema LTSPàs pressas, montou a rede física e deuinício aos testes. Mesmo tropeçando emum sistema a priori instável, as aulastiveram início com 30 máquinas (trêslaboratórios). As 20 máquinas que resta-ram do roubo tiveram o GNU/Linux ins-talado em seus discos rígidos.

A menção aos “lixões” pode causarestranheza, afinal de contas, computa-dores antigos normalmente são capazesde rodar somente versões obsoletas doMicrosoft Windows. No entanto, é muitofácil convertê-los em estações de tra-balho LTSP com a remoção do discorígido, do leitor de CD-ROM e daunidade de disquete, e adicionando umaplaca de rede capaz de aceitar uma ROMde boot remoto. Com uma configuraçãocomo esta, um Pentium 90Mhz com16MB de RAM já pode ser consideradouma boa estação de trabalho.

Como está o Centro hoje?De agosto de 2003 até agora, o resultadotem sido fantástico. Houve também difi-culdades: as máquinas utilizadas comoservidores não foram projetadas para is-to, e mesmo os terminais, por serem bemantigos, vez por outra apresentavam pro-blemas. No entanto, a solução escolhidapermitiu o aumento no número de alu-nos atendidos, bem como a ampliaçãodas opções de cursos de informática.

O importante é poder oferecer cursoscom sólida base tecnológica e em sinto-nia com as necessidades do mercado detrabalho, principalmente para pessoasdesempregadas e/ou de baixa renda.Todo o processo de seleção de alunos éinformatizado (em Software Livre, éclaro) e os critérios de seleção priorizama escolha de pessoas que apresentammaior necessidade social (tal como me-nor renda familiar, por exemplo).

Atualmente estão sendo mantidas qua-tro linhas didáticas, todas baseadas ex-clusivamente em Software Livre:• Informática combinada à elevação do

nível de escolaridadeSão cursos para pessoas com defasa-gem na escolaridade, nos quais o

aluno, além de aprender a ser um u-suário de informática, também adquireo conhecimento escolar necessário àconclusão do ensino fundamental emédio. Este curso tem duração de umano, com aulas diárias.

• Informática para formação de usuáriosNestes cursos, os alunos aprendem ostradicionais programas de escritório.São usados principalmente o Open-Office.org e o Mozilla. Há também aapresentação de um panorama dasdiversas áreas da informática. O cursocompleto é composto por dois módu-los (básico e avançado), cada um comduração de um semestre, com aulasquatro vezes por semana.

• Formação de FormadoresComposto de um único módulo e des-tinado a professores de alfabetização eeducação de jovens e adultos que uti-lizam a informática para o ensino. Aduração neste caso é semestral, comduas aulas por semana.

• Cursos ProfissionalizantesDestinados ao ensino de alguma pro-fissão da área de informática, tambémcom duração semestral. Os cursos ofe-recidos são: Programação e Banco deDados (MySQL, HTML e GCC); WebDesign (The Gimp e HTML); Insta-lação, Configuração e Manutenção deMicros e Periféricos; Administração deRedes; Manipulação de Som, Imageme Vídeo (os dois últimos em fase deplanejamento). O curso de Instalação,Configuração e Manutenção de Microse Periféricos é o único que ensina tam-bém a plataforma Windows, uma vezque é necessário que um profissionalformado por este curso saiba darmanutenção também aos problemasdecorrentes desta plataforma.

Moral da históriaOs alunos, ao contrário do que muitagente poderia imaginar, aceitaram muitobem as mudanças. Gostaram das váriasopções de desktop, do acesso à Internet,dos vários cursos diferentes, com longaduração. E ficaram também encantadoscom um pingüim engraçadinho, que gos-ta de enfrentar desafios que parecem im-possíveis de ser vencidos. ■

93Agosto 2004www.linuxmagazine.com.br

COMUNIDADEEducação Livre

[1] http://www.publicolivre.org.br/

INFORMAÇÕES

A seguir fizemos um pequeno quadro com-parativo de custos* para duas configuraçõespossíveis, sendo a primeira, a configuraçãoutilizada até junho de 2003, e a segunda, uti-lizada depois, com o LTSP:

Conjunto de 10 máquinas, sem rede, com umsistema Microsoft:

Hardware1 R$ 2.000,00

Licenças do Windows e Office R$ 1.500,00Total para uma estação R$ 3.500,00Total para 10 estações R$ 35.000,00

Conjunto de 10 estações LTSP em rede:

Hardware2 R$ 415,00Hardware do Servidor3 R$ 3.800,00Software R$ 0,00Total para 10 estações R$ 7.950,00

Custo LTSP x Sistema Convencional

Figura 2: Aula de informática no Centro Público.

1 Processador AMD Duron 1.1 Ghz, HD de 20 GB, 128 MB de RAM, Monitor,Teclado, Mouse, etc.2 Processador Intel Pentium 100 MHZ, 8 MB de RAM, Monitor (usado),Teclado, Mouse, etc.3 Processador Intel Celeron de 1.7 GHZ, HD de 20 GB, 1.5 GB de RAM, Monitor,Teclado, Mouse, etc.*Custos de caráter apenas ilustrativo.

Para que um software seja livre, eleprecisa estar disponível em algumalicença livre. A Free Software Foundationtem a licença GPL (General PublicLicense) [1], que é a base para a maioriado Software Livre disponibilizado naInternet. A GPL garante que as liber-dades citadas acima serão mantidas.

Educação com Software LivreEste é um tema que acaba sendopolêmico para algumas pessoas ligadas aeducação. Nós incentivamos o uso deSoftware Livre na educação, alguns pro-fessores dizem que Software Livre não é“padrão de mercado”. Vamos discutir umpouco esta afirmação.

É muito comum alguma empresa desoftware proprietário doar licenças parauma escola. A diretoria acaba pensandoque isto é algo muito bom, pois estarãoeconomizando licenças para ensinar osalunos a utilizarem softwares que são“padrões de mercado”. Mas a diretoriaesquece que a empresa que fez a doaçãotem interesses comerciais no meio. Noprimeiro momento, os alunos serão“treinados” a utilizar seu software e nofuturo este aluno, que provavelmentenão vai conhecer outra alternativa, vaiser obrigado a adquirir este software,seja através da compra e pagamento dalicença ou pior: através da pirataria.

O modelo educacional das empresasproprietárias é “prender” o usuárioàquele software e obrigá-lo a sempre re-novar as licenças, adquirindo novas ver-sões que exigem novo hardware. Estasempresas não ensinam o usuário a pen-sar, mas ensinam a utilizar uma determi-nada ferramenta.

No Software Livre, preferimos fazer ocontrário. Não gostamos de ensinar ousuário somente a utilizar uma determi-nada ferramenta. Preferimos ensiná-lo apensar. Nós procuramos ensinar queuma planilha de cálculos é uma planilhade cálculos e desempenha papéis bemespecíficos para resolução de um deter-minado problema. Não nos limitamos auma única ferramenta, queremos que ousuário entenda o real objetivo de umaplanilha de cáculo.

Se eventualmente ele sentar-se em umoutro computador que não tem aquelaplanilha de cálculo com a qual ele apren-deu a trabalhar, mas possui um softwareque faz a mesma coisa, porém de formaum pouco diferente, o usuário poderáutilizar dos conceitos que foram ensina-dos sobre planilhas de cálculos e empouco tempo fazer o que ele precisa,mesmo que neste software diferente queele conheceu à cinco minutos.

Porém, se pegarmos um usuáriomexeu em um software proprietárioespecífico a vida toda e o colocarmos emuma máquina com Software Livre, esteusuário vai entrar em desespero, porqueele não foi ensinado a pensar, mas foiensinado a simplesmente resolver seusproblemas clicando no mouse.

Por este motivo, entendemos que aeducação deve ser feita com SoftwareLivre, mostrando para o usuário que elepode aplicar o conhecimento adquiridoem qualquer lugar.

Software Livre no BrasilOs brasileiros são muito conhecidos noexterior pelos seu trabalho com SoftwareLivre. Muitos desenvolvedores colabo-

Émuito comum as pessoas acharemque Software Livre é sinônimo desoftware gratuito. Esta afirmação

está errada. Quando falamos de SoftwareLivre, estamos nos referindo à liberdade.Liberdade para utilizar o software paraqualquer propósito, liberdade para redis-tribuí-lo (cobrando uma taxa ou não),liberdade para fazer modificações queatendam às necessidades individuais eliberdade para redistribuir estas modifi-cações. Isto é Software Livre.

Com certa frequência, as pessoas con-fundem Software Livre com “softwaregratuito”. Quando se cobra uma taxapelo software, não estamos vendendoum produto, estamos “trabalhando” como conhecimento. Programadores de Soft-ware Livre precisam sobreviver, preci-sam pagar suas contas, comida, diver-são, chopp, cinema, etc. Um desenvol-vedor de Software Livre é como ummédico, um engenheiro e um advogado:trabalham com o seu conhecimento.

O Software Livre não é apenas ummovimento técnico para programadores.É um movimento social. A maioria dosdesenvolvedores querem que seu co-nhecimento seja útil para qualquer pes-soa. É uma satisfação muito grande paraum desenvolvedor quando ele sabe queo médico, o engenheiro e o advogadoacima citados estão utilizando um soft-ware que ele desenvolveu. É tambémuma enorme satisfação quando alguémenvia um e-mail para o desenvolvedorinformando sobre um bug. Melhor aindaquando envia junto a correção do pro-blema, que chamamos de patch. Umdesenvolvedor gosta de seu trabalho,portanto o faz bem feito.

Vamos discutir nesta edição alguns aspectos filosóficos do Software Livre. Para começar, mostramos que Software Livre

não é necessariamente gratuito, por que a educação tem que ser feita com Software Livre, e um projeto nacional muito

conhecido no exterior. POR CHRISTIANO ANDERSON

Planeta GNU

Software Livrenão é Grátis!

94 Agosto 2004 www.linuxmagazine.com.br

Planeta GNUCOMUNIDADE

ram com a comunidade internacional e oBrasil está ganhando muito respeito.Temos colaboradores no compiladorGCC [2], no kernel do Linux [3], no pro-jeto GNU [4], e muitos outros que cola-boram de forma direta ou indireta.

Não é necessário conhecimento téc-nico para quem quer colaborar. Há tra-balho adequado para todos os níveis deconhecimento, como, por exemplo, es-crever documentação, testar softwareprocurando e reportando bugs, criaçãode páginas, trabalho com layouts e assimpor diante. A cada dia que passa, osbrasileiros participam cada vez mais dacomunidade internacional.

O primeiro passo para quem quercolaborar de alguma forma é identificaralgum projeto de interesse. Isto pode serfeito através do Diretório GNU [5]. Éimportante escolher um projeto onde ointeresse pessoal está em jogo, poisassim qualquer colaboração será muitomais estimulante. Em seguida é reco-mendável que se conheça todos os pas-sos do projeto, lendo documentação,fazendo testes, instalando, conhecendo ofuncionamento e principalmente partici-pando de listas de discussão. Em poucotempo é possível identificar que área doprojeto está mais carente e começar aenviar colaborações.

TelEducO TelEduc [6] é um software de edu-cação à distância, que tem como alvo aformação de professores. Foi desen-volvido de forma participativa e está

licenciado sob a GPL. Dentro de suainterface é possível acompanhar o pro-gresso dos alunos, promover atividades,acompanhar discussões entre o grupo,manter FAQs (listas de perguntas fre-qüentes), correio eletrônico, controle deacesso, etc. Isto quebra a barreira físicaentre o professor e aluno, que podemtrabalhar no horário mais conveniente eassim promover o conhecimento. O soft-ware foi concebido por pessoas que nãosão da área de informática, mas estãoligadas à pedagogia e ensino. Por istonão tem toda aquela complexidade nouso encontrada em programas similares,e a interface é bastante intuitiva. ■

Christiano Anderson édesenvolvedor autôno-mo de Software Livre,participa do Projeto Soft-ware Livre Brasil (PSL-BR)e contribui para o projetoGNU. Sua principal mis-são é difundir o SoftwareLivre e sua filosofia, principalmente naeducação. Quando não está progra-mando, seu hobby é a astronomia.

SOBR

EO

AUTO

R

[1] Licenças GNU: http://www.gnu.org/licenses

[2] GCC: http://www.gnu.org/software/gcc

[3] Kernel:http://www.kernel.org

[4] Projeto GNU: http://www.gnu.org

[5] GNU Directory:http://www.gnu.org/directory

[6] TelEduc: http://teleduc.nied.unicamp.br/pagina/ index.php

INFORMAÇÕES

Figura 1: O TelEduc é um ambiente para criação e administração de cursos via Web.

96 Agosto 2004 www.linuxmagazine.com.br

Calendário de Eventos / Índice de AnunciantesLINUX MAGAZINE

LinuxWorld Conf & ExpoData: 06 a 07 de NovembroLocal: Londres, Reino Unido

Website:www.linuxworld-expo.co.uk

Calendário de EventosEvento Data Local WebsiteIII Cibercon 26 a 28 de agosto Salvador, BA www.cibercon.org.br2º Congresso Catarinense de Software Livre 08 de outubro Joinville,SC www.softwarelivresc.org.br2º CONISLI 05 e 06 de novembro São Paulo, SP www.conisli.org.brI Encontro Pernambucano de Software Livre 09 a 11 de setembro Petrolina,PE www..psl-pe.softwarelivre.orgFESTSOL - Festival do Software Livre 21 de agosto Matias Barbosa, MG www.festsol.com.brI Fórum Baiano de Software Livre 26 a 26 de agosto Salvador, BA twiki.im.ufba.br/bin/view/PSL/ForumBaianoSL1Fórum de Software Livre do Centro Oeste 15 de setembro Campo Grande, MS psl-ms.softwarelivre.orgLatinoware 2004 08 a 12 de novembro Foz do Iguaçu, PR www.latinoware.pr.gov.brLinuxWorld Conference & Expo 2004 02 a 05 de agosto São Francisco, CA, EUA www.linuxworldexpo.comLinuxWorld Conference & Expo 2004 26 a 28 de novembro Frankfurt, Alemanha www.linuxworldexpo.deLinux-Kongress 2004 07 a 10 de setembro Erlangen, Alemanha www.linux-kongress.org/2004/index.html2ª Semana de Software Livre da UERJ 18 de outubro Rio de Janeiro, RJ www.2semana.linuerj.uerj.br

Índice de AnunciantesAnunciante Site Página

Celepar www.celepar.br 37Cyclades www.cyclades.com.br 29CD-ROM da Linux Magazine www.linuxmagazine.com.br/Subs 95Cupom de Assinatura da Linux Magazine www.linuxmagazine.com.br/Subs 71–72Green Treinamento e Consultoria www.green.com.br 13Impacta Tecnologia www.impacta.com.br 9Infomedia www.infomediatv.com.br 39iSolve www.isolve.com.br 49KDE Community World Summit“aKademy” conference2004.kde.org 73LinuxPress www.linuxpress.com.br 23Linux Professional Institute www.lpi.org.br 63Novatec Editora www.novateceditora.com.br 77MySQL Brasil www.mysqlbrasil.com.br 02 (contra-capa)Oracle www.oracle.com.br 99 (terceira capa)UOL - Universo On-Line www.uol.com.br 100 (quarta capa)

HackerUnionData: 30 de Agosto a 03 de SetembroLocal: Curitiba, ParanáWebsite:www.gnus.com.br/index.py?a=show_ev&id=76

KDE “aKademy”Data: 21 a 29 de AgostoLocal: Ludwigsburg, Alemanha

Website:conference2004.kde.org

Eventos em Destaque

Escreva para a Linux Magazine

Estamos sempre à procura de novos artigos e auto-res. Se você acha que um assunto é importante, ouque precisa ser melhor explicado, fale conosco.

Precisamos de tutoriais, análises, estudos de caso enotícias. Se você é membro de um grupo de usuá-rios, porque não nos conta sobre os eventos queestão sendo planejados? Preferimos que os artigossejam enviados via e-mail, e screenshots são sem-pre bem-vindos. Para facilitar as coisas, mencioneno assunto de sua mensagem o tema do artigo.

Artigos têm em média 3.500 caracteres por página(contando os espaços), mas listagens de código eimagens reduzem o espaço disponível para o texto.Se possível, escreva páginas inteiras. Como estamospresentes em vários países, evite o uso de gírias eexpressões regionais.

Imagens devem estar na maior resolução possível.No caso de fotos digitais, recomendamos que elassejam tiradas com uma câmera de 3 Megapixels eresolução igual ou superior a 1024x768 pixels.

Uma revista passa por muitos estágios durante suaprodução, portanto alguns meses podem se passaraté que seu artigo chegue às bancas. Portanto,nunca envie na última hora material ou notíciassobre encontros e eventos.

Envie suas colaborações para o endereç[email protected]. Evite enviar maisde 4 MB em arquivos anexos. Caso o material paraseu artigo ultrapasse este limite, coloque-o emalgum site na internet e nos informe a URL.

97www.linuxmagazine.com.br Agosto 2004

LINUX MAGAZINEExpediente Editorial / Quadrinhos

Expediente EditorialEditores

Rafael Antonio Guido Peregrino da Silva,[email protected] Pereira Rigues,[email protected]

Centros de Competência

Centro de Competência em Software: Patricia Jung, [email protected]

Centro de Competência em Hardware:Mirko Dölle, [email protected]

Centro de Competência em Redes e Segurança:Achim Leitner, [email protected]

Correspondentes & Colaboradores

Christiano Anderson, Alexandre Barbosa, CaioBegotti, Zack Brown, Helio Chissini de Castro,Marco Fioretti, Sulamita Garcia, Werner Har-richhausen, Hagen Höpfner, Charly Kühnast,Martin Loschwitz, Nico Lumma, Cibele PóvoaLupis, Daniel Molkentin, Erik Möller, ErnaniMoreira, Andrea Müller, Julio Cezar Neves,Michael Schilli, Tim Schürman, Marc AndréSelig, Marco Sinhoreli, Daniel Trezub, FrankWieduwilt, Sandro Zic, Falko Zurell

Revisão

Rafael Pereira Rigues,[email protected]

Layout

Judith Erb, Rafael Pereira Rigues,Rafael Antonio Guido Peregrino da Silva

Design da Capa

Pinball, [email protected]

Anúncios: www.linuxmagazine.com.br/Advertise

BrasilUnicial – União Comercial e Editora Ltda.A/c Sérgio [email protected]./Fax: +55 (0)11 3051 3153Cel.: +55 (0)11 9935 1368

Todos os países (exceto Alemanha, Áustria e Suíça)Brian Osborn, [email protected] Tel.: +49 (0)6509 910 495Fax: +49 (0)6509 910 497

Alemanha, Áustria e SuíçaOsmund [email protected].: +49 (0)6335 9110 Fax: +49 (0)6335 7779

Diretoria

Rafael Antonio Guido Peregrino da Silva,[email protected]

Linux Magazine

Av. Engº. Luiz Carlos Berrini, 1500Conj. 103 – Brooklin Novo04571-000 – São Paulo – SP – BrasilTel.: +55 (0)11 3345 1002Fax: +55 (0)11 3345 1081

Assinaturas: www.linuxmagazine.com.br/Subs

Preço: (12 edições incluindo CD mensal): R$125,60Email: [email protected]

Preço Unitário: R$12,90

Acesso via Internet:www.linuxmagazine.com.br – Brasilwww.linux-magazin.de – Alemanhawww.linux-magazine.com – Portal Mundialwww.linuxmagazine.com.au – Austráliawww.linux-magazine.ca – Canadáwww.linux-magazine.co.uk – Reino Unidowww.linux-magazine.pl – Polôniawww.linux-magazin.ro – Romênia

Apesar de todos os cuidados possíveis terem sido tomados durantea produção desta revista, a editora não é responável por eventuaisimprecisões nela contidas ou por conseqüências que advenham deseu uso. A utilização de qualquer material da revista bem como doCD-ROM incluso ocorre por conta e risco do leitor. O CD-ROM foitestado extensivamente e até onde pudemos verificar se encontralivre de qualquer vírus ou outro tipo de software de conteúdo mali-cioso, bem como de defeitos.Nenhum material pode ser reproduzido em qualquer meio, emparte ou no todo, sem permissão expressa da editora. Assume-seque qualquer correspondência recebida, tal como cartas, emails,fax, fotografias, artigos e desenhos, são fornecidos para publicaçãoou licenciamento a terceiros de forma mundial não exclusiva pelaLinux New Media do Brasil, a menos que exlplicitamente indicado.Linux é uma marca registrada de Linus Torvalds.Linux Magazine é publicada mensalmente por Linux New Media doBrasil Editora Ltda., São Paulo/SP, Brasil.Distribuído por Fernando Chinaglia Distribuidora.

Direitos Autorais e Marcas Registradas ©2004:Linux New Media do Brasil Editora Ltda.

ISSN 1806-9428 Impresso no Brasil

vos criptografado utilizando as distribui-ções Debian, Gentoo e Red Hat (SuSEoferece este recurso por padrão). Umanovidade do artigo: a chave criptográficafica arquivada em um chaveiro USB. Semele não há como obter acesso aos dadosarmazenados do HD.

Mostramos tambémcomo realizar umajuste fino no de-sempenho doseu disco rígi-do. E, para ofinal, reser-vamos umtutorial deLogicalVolumeManager(LVM)sobreSoftwareRaid.

98 Agosto 2004 www.linuxmagazine.com.br

Dia 15 de setembro nas bancas!

Os modernos sistemas de arquivos paraLinux dispõem de um recurso conhecidopelo nome de “Journaling”, um registrocronológico das alterações efetuadas emcada arquivo. Verificações de integridadede sistemas de arquivos com journalingocorrem de forma extremamente rápida.

Ext 3, JFS, ReiserFS e XFS fragmentammuito pouco, o que a longo prazo con-tribui para um melhor desempenho dosistema. Além disso, partições JFS, XFS eReiserFS praticamente não têm limite detamanho, o que pode parecer incrível...

Realizamos diversos testes compara-tivos em nossos laboratórios, para saberse journaling tem algum efeito negativono desempenho dos sistemas de arquivo.Um deles – para o qual, diga-se de pas-sagem, quase não há ferramentas eopções de ajuste fino – apresentou umaperformance surpreendente.

Adicionalmente, ensinamos como ins-talar e configurar um sistema de arqui-

PlanMaker 2004A SoftMaker acabou de lançar a últimaversão da sua planilha de cálculo, oPlanMaker 2004. Este programa é com-patível com o Microsoft Excel e temcomo objetivo satisfazer todas as suasnecessidades no uso de uma planilha.

Todos os usuários de um desktopLinux precisam de uma planilha de cál-culo de vez em quando, seja pararealizar o balanço da situação financeirapessoal, seja para gerenciar as contas deuma corporação multinacional.

Fizemos uma análise detalhada doprograma e dos recursos que ele tem aoferecer. Efetuamos testes comparativos,com o objetivo de verificar se o softwarecumpre com o que promete.

Além disso, experimentos de compa-tibilidade com arquivos de outras pla-nilhas foram realizadas, bem como testesde usabilidade.

BitTorrent é uma tecnologia predestinadaà fama no mundo cibernético. Mui-tas empresas estão preferin-do disponibilizar as últi-mas versões de seusprogramas e kits dedesenvolvimentoatravés de siste-mas BitTorrent,antes que vocêpossa encontrá-los por vias maisconvencionais. A-lém de ser capazde reiniciar down-loads incompletos apartir do ponto em queeles foram interrompidos, o

sistema oferece uma maneira justa decompartilhar largura de banda, per-

mitindo que você, ao baixarum arquivo, disponibi-

lize as partes que jáestão em seu siste-

ma, de modo queoutros usuáriostambém possambaixá-las. Expli-camos o funcio-namento da tec-nologia e o impa-

cto potencial nalargura de banda,

para otimizar os seusdownloads sem ônus no

desempenho da sua rede.

Setembro 2004: 2ª Edição

Na próxima edição...

Linux Magazine PreviewA Linux Magazine Preview é umanewsletter via email que lhe ofereceuma espiadinha no conteúdo da pró-xima edição, além de novidades so-bre material on-line disponibilizadoem nosso website, antes que arevista chegue às bancas. Para rece-ber, cadastre-se aqui: www.linux-magazine.com/Newsletter

Destaques da Próxima EdiçãoLINUX MAGAZINE

ww

w.photocase.de

Distribuindo arquivos com BitTorrent

Sistemas de arquivos modernos