You are on page 1of 76

Bem-vindo EDITORIAL

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

É um prazer A Linux Magazine trará mensalmente envolvendo Software Livre, no intuito de


poder finalmente até você temas que atendam aos inte- auxiliar executivos de TI a tomar deci-
presentear você resses da nossa comunidade de usuários sões sobre as tecnologias que farão parte
com conteúdo da e desenvolvedores de sistemas de código do seu alvo de investimentos, e tutoriais,
mais alta quali- aberto e livre, bem como do nosso mer- voltados para engenheiros e administra-
dade, como o que cado. Deste modo, a sua composição dores de sistemas, analistas, técnicos e
iremos lhe ofere- consistirá tanto de artigos de autoria usuários domésticos.
cer a partir desta internacional – provenientes dos nossos Como leitor, de agora em diante você
primeira edição da Linux Magazine. cadernos que são publicados no exterior, estará integrado a uma rede de informa-
Após mais de 10 anos de sucesso na focando, entretanto, as nossas necessi- ções dedicada a distribuir conhecimento
Europa, onde vem sendo publicada no dades locais – traduzidos para a língua e expertise técnico.
idioma local de países como Alemanha, portuguesa, como de artigos de autores Mensalmente a Linux Magazine trará
Inglaterra, Polônia e Romênia, e estando brasileiros. Assim, podemos dizer que, também um CD-ROM repleto de software
disponível em mais de 60 países, chega apesar de termos um corpo editorial es- para o seu sistema operacional favorito!
finalmente ao mercado editorial brasilei- palhado pelo mundo, atendemos sempre Esperamos que você goste!
ro aquela que deverá ser a sua revista às necessidades locais.
sobre Linux: contamos com a sua opi- A Linux Magazine é, então, uma publi-
nião e contribuição para poder repetir cação de caráter técnico, dirigida a um
aqui no Brasil o sucesso que já foi alcan- público diversificado, uma vez que está Rafael Peregrino da Silva
çado no exterior. segmentada em assuntos corporativos Editor

CD-ROM do Mês
O CD-ROM que acompanha a Linux Magazi-
ne este mês traz uma versão customizada
do Kurumin, desenvolvida especialmente
para 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 Linux
Magazine, mesmo que ele não disponha de
Linux instalado em seu PC: basta inicializar o
sistema diretamente a partir do CD e todas
as 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.

www.linuxmagazine.com.br Agosto 2004 3


NOTÍCIAS Entrevista

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

Microsoft x Governo
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

T
omando como base uma entrevista única empresa. Isso agora acabou. E na
dada por Sérgio Amadeu da Sil- minha opinião eles erraram ao tentar uti-
veira, atual presidente do Instituto lizar o caminho legal para resolver um
Nacional de Tecnologia da Informação problema de tecnologia, através de uma
(ITI) e um dos maiores defensores do ação judicial que teve caráter puramen-
Software Livre no governo, à revista te intimidativo.
CartaCapital em março, na qual a prática LM O que você achou da reação da
de doação de licenças de software é com- comunidade de usuários e desenvolve- Figura 1: Sérgio Amadeu da Silveira, presidente do
parada com “prática de traficante”, a Mi- dores de Software Livre (SL) à notícia do Instituto Nacional de Tecnologia da Informação.
crosoft entrou com um pedido de processo?
explicações na 3a Vara Judicial de Baru- SA A comunidade respondeu com muita rede, de modo que se avançarmos bas-
eri. força e mostrou que o SL não depende tante agora, o SL vai se espalhar.
Amadeu, após consultar seus advoga- do governo e que não é o fato de se LM Como superar a dominância da uti-
dos, já declarou que não irá responder perseguir alguém isoladamente que vai lização do software proprietário no go-
ao que considera uma “provocação judi- modificar a realidade de que o fim do verno?
cial inusitada e descabida”. monopólio na área de software é um fato SA Com pioneirismo. No Brasil, há
A seguir leia a entrevista que o presi- irrevogável. Uma vez eu estava dando algum tempo atrás, quando a gente
dente do ITI cedeu à Linux Magazine, uma entrevista no programa do Paulo chegava para falar da alternativa SL o
bem como a nota oficial que a Microsoft Henrique Amorim e ele me perguntou se pessoal questionava quais implemen-
divulgou a respeito da ação judicial que estávamos prontos para enfrentar a tações daquele tipo já existiam; ou se
está movendo contra ele. Microsoft. Ora, o que eu acho é que tais ferramentas eram suficientes para
“eles” é que não estão preparados para atender às necessidades do projeto.
Processo enfrentar a comunidade. Assim percebemos no governo que tí-
LM (Linux Magazine) Qual a sua LM Qual é o plano de migração do go- nhamos que criar “cases”, tomando
posição em face da ação judicial que a verno federal? decisões que não visam prejudicar ne-
Microsoft está movendo contra você? SA Nós temos cerca de 300.000 desk- nhuma empresa, mas que abrem um
SA (Sérgio Amadeu da Silveira) Eu tops para migrar. O processo de migração novo espaço de desenvolvimento. São
sempre tive uma postura e uma partici- é dividido em três passos: projetos que vão desde o apoio à comu-
pação afirmativa em todas as minhas 1. Novas estações de trabalho irão “ro- nidade que deseja uma implementação
atividades junto ao ITI e dentro do go- dar” utilizando SL. Aí é que aparecem livre da linguagem Java, passando pela
verno. Nunca chamamos nenhum jor- alguns problemas de compatibilidade, TV Digital, sistemas de gestão para
nalista para atacar qualquer empresa; tais como plugins que só funcionam municípios e projetos de inclusão digital
muito pelo contrário. O que acontece é no Windows, etc. Mas o problema sustentável (que para ser sustentável
que apoiamos um modelo baseado no aqui não é tecnológico, e sim cultural. tem que ser baseado em SL).
compartilhamento do conhecimento pla- Mais ou menos 4 a 5 mil estações já LM E como fica a questão de custos. Há
netário, o que não vai de encontro aos estão funcionando assim. diminuição palpável? A Microsoft cos-
interesses de alguns, mormente daqueles 2. Novas soluções e sistemas são imple- tuma alegar que os custos com licenças
que detém posições de dominância e mentados como SL, sob a GPL e multi- correspondem apenas a 4% do custo de
apostam na manutenção da reserva de plataforma (ou como aplicação web). um projeto e que o TCO de seus sistemas
mercado de software e de monopólios. 3. São migrados em primeiro lugar os sis- é melhor devido a uma menor necessi-
Porque no nosso país existia uma reserva temas que impeçam os dois passos dade de treinamento. Como você encara
de mercado para o monopólio de uma anteriores, o que gera um efeito em tal argumentação?

8 Agosto 2004 www.linuxmagazine.com.br


Entrevista NOTÍCIAS

SA Tomemos por exemplo o projeto de mento em ferramentas proprietárias.


informatização da escola. São em torno Além disso, o suporte é mais barato a
Resposta da Microsoft
de dois milhões de computadores, se médio prazo quando consideramos o tri- A Linux Magazine contactou a Microsoft no
considerarmos uma média de 20 máqui- nômio Apache-GNU/Linux. Quem a- intuito de abrir o mesmo espaço para que a
nas por escola. O custo com licenças de prende a trabalhar com ferramentas empresa se manifestasse em relação ao
software com o SL é zero. Considerando livres aprende a funcionalidade. No caso caso. Abaixo a nota oficial, recebida direta-
mente da Assessoria de Imprensa da
um custo de US$100,00 por licença no do software proprietário o que temos é a
Microsoft:
caso de utilizarmos software propri- restrição do conhecimento e da fun-
etário, temos um custo, somente com li- cionalidade a um só sistema ou pro- “A Microsoft gostaria de ressaltar que está
comprometida em trabalhar com o governo
cenças de software, de 200 milhões de grama. É o futuro que está em disputa, e
de modo respeitável e colaborativo para a-
dólares! Então o custo com licenças é de eu estou convicto de que este futuro será
tender às necessidades econômicas, sociais
apenas 4%? Tudo bem: estes 4% podem livre. e educacionais do país.
não ser o maior problema no total do LM O que você diz àqueles que o acu-
A Microsoft está no Brasil há mais de 14 anos
custo, mas é um problema para o Brasil! sam de ter uma posição ideológica na
e tem um comprometimento de longo
Com 200 milhões de dólares para investir questão do Software Livre? prazo com o país. Por meio de 10 mil empre-
em capacitação ficamos numa situação SA Eu digo que o meu objetivo é garan- sas parceiras, a companhia proporciona 45
confortável e temos suporte técnico pre- tir a independência tecnológica ao país e mil empregos e R$ 1 bilhão em receitas com
parado e com domínio de uma tecnolo- que o modelo de desenvolvimento que o impostos.
gia criada dentro do país, da qual temos Software Livre oferece permite isso. Mui- A Microsoft sabe que o Brasil tem liberdade
pleno controle. Já temos experiências po- tos interesses estão sendo contrariados para escolher a melhor tecnologia para as
sitivas de capacitação no governo (SER- por isso. Quem me acusa de ter uma po- suas necessidades. A companhia está satis-
PRO, ANATEL, etc.). Realizamos um sição ideológica o faz pois está querendo feita por competir pelos méritos de sua
evento institucional de capacitação de vender. Tem gente que defende a política tecnologia, que em análises objetivas mos-
uma semana com mais de 99 cursos de 8 do monopólio. Aí eu estou fora! Tanto as trará suas inovações e valor aos clientes.
a 40 horas de carga horária. De outro empresas como o governo devem tentar São Paulo, 18 de junho de 2004
lado, não podemos ser ingênuos imagi- ser independentes de fornecedor, sempre Microsoft Brasil”
nando que não há necessidade de treina- que isso seja possível. ■
NOTÍCIAS Entrevista

Entrevista com CEO da Cyclades Daniel Dalarossa

O Salto Global
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


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

E
mpresa nascida no Brasil e proje- cação de dados era voltado para main- tações sobre a importância de ter um
tada internacionalmente graças ao frames. Foi quando pensamos em usar business plan (planejamento que define
crescimento da Internet e ao uso do nossa experiência para desenvolver apli- os rumos e o processo de evolução de
Linux em seus produtos, a Cyclades é cações e produtos para PCs. um negócio), o que nunca havia nos o-
um exemplo claro de que é possível LM O que levou vocês a mudar a empre- corrido. Só sei que foi preciso muita mo-
desenvolver negócios de forma consis- sa para os EUA? tivação para não desistir naquela época.
tente com plataformas abertas. Seus DD Em 1991 nós tivemos o fim da reser- LM Reza a lenda que Phil Hughes, então
equipamentos, que incluem de rotea- va de mercado. Sabendo que em breve o editor do Linux Journal teria influenci-
dores a soluções para gerenciamento de mercado brasileiro seria invadido por ado vocês a testar o sistema? Como foi
data centers, são utilizados por mais de produtos importados, decidimos apostar que o Linux entrou na vida da Cyclades?
oito mil clientes em todo o mundo. Mas que éramos capazes de criar tecnologia e DD Existem ocasiões na vida em que a
o sucesso exige, além de trabalho duro, não apenas atuar como revendedores ou sorte nos sorri, ou uma oportunidade
visão e um leque de serviços consistente distribuidores, que foi o destino de mui- aparece. Mas as coisas só acontecem se
para atender às necessidades das empre- tas empresas brasileiras daquele tempo. você junta a percepção com uma ação
sas, como nos diz Daniel Dalarossa, CEO E tínhamos uma pretensão ousada: criar coordenada. Foi assim que aconteceu
da empresa, nesta entrevista exclusiva uma máquina de comunicação usando conosco: em 1993, quando o Phil veio
que ele concedeu à Linux Magazine na EISA, um tipo de barramento que parecia falar conosco, o Linux não era nada, mas
matriz da empresa, na Califórnia. Prestes promissor na época. nós vimos uma chance de ganhar um
a inaugurar seu mais recente escritório LM Como foi essa fase? Qual era o prin- mercado que estava tomado por empre-
internacional, na Coréia, o executivo fala cipal desafio? sas como a MaxSpeed e a Digi Interna-
da história da empresa, cuja origem DD Foi uma fase muito difícil. Enquanto cional – que mais tarde se tornaria um
remonta a uma garagem em São Paulo, eu trabalhava fazendo contatos e bus- OEM da Cyclades. Ele veio até nós e nos
do papel do Linux em seu crescimento e cando oportunidades, o John ficava mostrou a oportunidade que o Linux
das diferentes visões sobre o Linux entre segurando a barra e praticamente sub- trazia e tivemos a vantagem adicional do
nos mercados brasileiro e norte-ameri- sidiando toda a operação com seu tra- timing. Estávamos no início da explosão
cano, entre outros assuntos. balho a partir do Brasil. Para promover da Internet e pequenos provedores usa-
LM (Linux Magazine) O que motivou nossa idéia, precisávamos adquirir co- vam algumas placas para fazer a ligação
você e seu sócio, o também brasileiro nhecimento, fechar acordos. O duro era adequada de modems. Nós tínhamos
John Lima, a montar a Cyclades? Como chegar às empresas dizendo que querí- uns seis modelos que faziam isso e – de
era o primeiro produto da empresa? amos comprar tecnologia, sendo pratica- novo, mérito do John – pegamos a mais
DD (Daniel Dalarossa) Nós dois vín- mente desconhecidos. E foi assim até barata desenvolvemos um “driver” para
hamos da Digirede e, na época, percebe- que chegamos à então TMC, uma empre- Linux para ela, o que fazia o preço final
mos a oportunidade de montar placas sa chinesa que vendia placas-mãe para chegar a US$ 99,00. Ela tinha algumas
para conectar PCs. Nosso primeiro pro- PCs e lá conseguimos mostrar o que nos- limitações, pois só funcionava até uma
duto, o Cyclom-8, era uma placa de da- sos produtos podiam fazer. Foi quando certa velocidade, mas ajudou a promover
dos projetada pelo John e cujo software fechamos um acordo para a troca de tec- as vendas de outro produto, um pouco
eu desenvolvi a partir do UNIX da SCO. nologias, mas estávamos tão desprepara- superior, com preço de US$ 199,00. Só
Essa placa permitia ligar o computador a dos que tudo estava em português. para comparar, os produtos equivalentes
periféricos como impressoras ou caixas Tivemos então que fazer a tradução do de outros fabricantes chegavam a custar
registradoras. É importante lembrar que software, do código fonte e da documen- US$ 500,00. Só que vendíamos a placa e
estávamos no início dos anos 90 e muito tação para o inglês. O executivo dessa dávamos o software, o que, combinado
do que existia em termos de comuni- empresa, aliás, foi quem nos deu orien- ao preço, fez nossos produtos serem ado-

10 Agosto 2004 www.linuxmagazine.com.br


Entrevista NOTÍCIAS

tados por clientes em inúmeros países. LM Qual é o tamanho atual da empresa? LM Mas nem todo mundo tem essa con-
Mas no início tivemos que aturar muitas DD Nosso faturamento neste ano deve fiança. No Brasil, o Linux ainda enfrenta
piadas de gente que nos ligava criticando ficar entre US$ 40 e US$ 50 milhões . É grande resistência em muitas empresas.
a escolha de um OS de “estudantes”. um bom resultado, mas ainda estamos DD O Linux é uma tecnologia madura.
LM Foi quando a empresa cresceu? longe da líder no mercado de produtos Mas muita gente não está preparada para
DD Seguramente o grande salto foi a par- de disponibilidade para servidores que é a verdade. Isso tem a ver com a maturi-
tir daí. O mérito desse crescimento foi a Avocent, dona de um faturamento dade das ofertas e com as características
todo do John, que elaborou um plano de anual de US$ 300 milhões. Temos 8 mil locais de mercado. O mercado Windows
vendas que foi muito bem executado. A clientes no mundo que já compraram e é muito forte no Brasil, assim como é nos
partir de 1995, criamos placas digitais de continuam comprando Cyclades. 85% Estados Unidos. Só que aqui, os críticos
roteamento, as chamadas “Router Kil- das 100 maiores empresas da lista da estão ficando mais cautelosos, principal-
ler”. A proposta era: para que comprar revista Fortune são clientes nossos, in- mente com o avanço do Linux em ban-
um roteador Cisco se você pode comprar cluindo aí grandes bancos e outras cor- cos e a adoção da plataforma aberta para
uma placa Cyclades, colocá-la num PC porações. Mais ou menos metade de inúmeras aplicações corporativas.
com Linux e conseguir fazer a mesma nossas vendas vêm dos Estados Unidos e LM Como resumiria o papel do Linux
coisa pela metade do preço? Crescemos 35% do mercado europeu. Temos 250 para a Cyclades?
muito vendendo placas Cyclades para funcionários no mundo, 70 deles no Bra- DD O Linux é uma tecnologia funda-
Linux. O engraçado é que vendíamos sil, e escritórios em 14 países. mental para nós. É uma plataforma
muito bem em Windows. A projeção LM Qual é o Linux que roda dentro dos estável, que pode ser moldada de diver-
conseguida nos fez fechar bons acordos equipamentos da Cyclades hoje? sas formas e a diversidade de produtos
com empresas como o Wal Mart. Em DD Nos usamos um kernel da Monta- que criamos é uma mostra dessa flexibil-
1999, eles compraram 2500 placas para vista, uma distribuição de “embeded Li- idade. Mas fizemos tudo isso baseado
automatizar aquelas máquinas de tocar nux” (quando o sistema é embutido em numa estrutura sólida de serviços: con-
CDs nas lojas (o Wal Mart é a empresa um equipamento). Mas, em breve, deve- tinuamos seguindo o que determina a
que mais vende CDs nos EUA) e também mos ter nossa própria distribuição. GPL, o que não é feito por muitas empre-
equipamos a parte de produção da Na- LM Como são definidas as linhas de pro- sas. Você pode ir até o site da Cyclades
tional Semiconductors com placas Cycla- duto que receberão maior investimento? baixar o código fonte dos produtos.
des rodando em Windows. Tais projetos DD Pesamos as necessidades mais críti- LM Mas isso não permite que outras
exigiam drivers para Windows e outros cas dos clientes e buscamos sofisticar o empresas fabriquem equipamentos idên-
sistemas operacionais, mas nosso mar- atendimento a essas demandas. Entre ticos aos seus?
keting era todo em cima do Linux. nossas linhas de desenvolvimento temos DD Há uma empresa coreana que copiou
LM Quando foi que surgiram estes pro- dado destaque à de power management, nossos produtos, chamada Sena. Sim, é
dutos mais corporativos, como os usados com a plataforma Alterpath. Apostamos possível fazer isso; mas uma coisa é
na administração de data centers? no aumento de recursos dessa solução e copiar um produto, outra é criar uma
DD Estes produtos de administração e a- na automação do maior número de tare- estrutura de atendimento que dê su-
cesso remoto surgiram para atender à fas de detecção e correção de erros, para porte, respaldo, confiança enfim, aos
demanda de alguns clientes. Em 1999, o facilitar a vida dos operadores e aumen- produtos que você fabrica e vende.
Yahoo, que já vinha comprando produ- tar a disponibilidade dos equipamentos. LM Que conselho daria às pessoas e
tos nossos desde 1997, nos chamou para LM As parcerias são importantes para empresas que querem prestar serviços
uma reunião em que nos pediam algu- alavancar os negócios de uma empresa com o Linux?
mas alterações em uma de nossas placas que usa a plataforma Linux? DD É muito importante ouvir o que o
para atender às especificações deles. Ao DD Depende das características de cada mercado tem a dizer e adequar as ofertas
estudar o pedido, vimos que eles que- mercado. Em regiões como Brasil, Japão às necessidades reais dos clientes. Sem
riam embutir a placa nos racks de servi- e Austrália, lidamos com distribuidores e essa sensibilidade, será difícil perceber
dores. Eles usavam a porta console para revendas, que precisam ser treinados reais oportunidades de negócio ou mes-
gerenciar servidores remotamete. Imagi- para saber vender e dar suporte aos pro- mo atender à demanda do mercado.
ne uma empresa de Internet, com cente- dutos, o que os eleva à condição de LM É verdade que os funcionários mais
nas de equipamentos, sempre tendo que “Cyclades Certified Partners”. Em outros velhos ganham um carro?
deslocar técnicos para reparos ou manu- mercados, adotamos o modelo de vendas DD É verdade (risos). Mas é um carro
tenção. Com o nosso produto, eles fazi- diretas, que responde por 60% do total popular, ou seja, que custa entre 10 e 15
am tudo isso de maneira centralizada. de vendas. Parcerias são importantes, mil dólares no mercado norte-ameri-
Ao desenvolver este produto, usamos o pois ajudam a compor soluções atraentes cano, para quem completar 10 anos na
feedback de outros clientes e embutimos para os clientes finais. Fechamos uma Cyclades. Foi a forma que encontramos
o Linux dentro de uma solução que parceria internacional com a HP, através de premiar a fidelidade dos funcionários,
podia trazer mais disponibilidade para os da qual todos os clusters Linux da em- afinal, não é fácil permanecer tanto
data centers, permitindo evitar e corrigir presa virão com um gerenciador de porta tempo em uma mesma empresa na área
no menor tempo possível os problemas console Cyclade instalado, o que atesta a de tecnologia. Instituímos isso em 1998 e
de infra-estrutura nas redes. confiabilidade dessa tecnologia. até agora 7 carros foram dados. ■

www.linuxmagazine.com.br Agosto 2004 11


NOTÍCIAS Entrevista

Entrevista com Rogério Santanna

Guia de Migração
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

E
m meio a todo o debate que cerca PCs ociosos numa nova abordagem com-
os estudos sobre a adoção do soft- putacional. Embora polêmico, o grande
ware livre no Governo, uma das ganho do Linux não está nos desktops,
vozes mais sóbrias é a do Secretário de mas nas atividades de back office.
Logística e Tecnologia da Informação LM Existem análises que comprovem a
Rogério Santanna. Com sua pasta ligada redução de custos com o Linux?
ao Ministério do Planejamento, Orça- RS As análises que temos são pontuais,
mento e Gestão, Santanna é um dos mais segmentadas por projetos. Mas em geral
importantes articuladores do incentivo à segue-se o mesmo raciocínio aplicado a Figura 1: Santanna, Secretário de Logística e TI
utilização do software de código aberto soluções corporativas: um terço do custo
no Governo Federal e um dos coorde- é hardware, um terço do custo é software conviver com padrões proprietários?
nadores do “Guia Livre. Referência de e um terço é consultoria. A porção soft- Dificilmente. Porque quando alguém
Migração para Software Livre do Go- ware é reduzida pois eliminamos a licen- propor uma inovação que gere um tal
verno Federal”, documento de 150 pági- ça do sistema operacional. Claro que se ganho de produtividade que justifique os
nas, elaborado por mais de 60 técnicos gasta um pouco mais em consultoria, investimentos, aí valerá a pena correr o
de vários departamentos do governo e pois a solução vai exigir um grau maior risco de ir para a solução proprietária.
que traz informações técnicas que visam de adaptação, de customização. A van- LM E como as empresas estão reagindo à
facilitar a vida dos gestores de tecnologia tagem, no entanto, não está na análise tendência governamental em apoiar o
em órgãos públicos ao migrarem para o de curto prazo, mas no longo prazo, Software Livre?
Linux e que foi apresentado ao público onde quebramos os custos de aprisiona- RS Acho que as empresas estão mais
pela primeira vez durante o 5º FISL. mento. Isso funciona da seguinte forma: assustadas do que deveriam. Mesmo que
Em entrevista à Linux Magazine, San- empresas fornecem soluções para o Gov- todo o setor público se decidisse pela mi-
tanna falou sobre a importância do Soft- erno que acabam criando um custo a gração para o Software Livre em todos os
ware Livre para o País e sobre novos mais se decidirmos mudar, abandonar lugares, ele não conseguiria, porque não
modelos computacionais, mais adequa- aquela plataforma. É aí que os fornece- há força de trabalho suficiente no país
dos a países emergentes como o Brasil, dores ficam gananciosos e cobram mais para isso. Mas, seguramente, quem for
entre outras questões. caro pelo uso da tecnologia. Ou seja, as ganancioso, sairá perdendo. O que as
LM (Linux Magazine) O Software Livre empresas que vendem para o governo, empresas precisam fazer é pensar no
realmente atende às atuais necessidades sabendo que podem ser preteridas em nível de apropriação que estão propondo
do Governo Federal? função do Linux, se tornam mais e, se exagerarem na dose, serão os
RS (Rogério Santanna) Atende a todas flexíveis nas negociações. primeiros a ser substituídos.
as necessidades. Pode-se encontrar solu- LM Nesse caso, o software proprietário LM O Guia de Migração será restrito aos
ções de todos os tipos em plataforma poderia ficar oneroso com o tempo? órgãos governamentais ou também po-
aberta, mas tudo vai depender da ade- RS Exatamente. Na verdade a estratégia derá ser usado por empresas perten-
quação técnica. Nem sempre a solução de marketing dos fornecedores, que vai centes ao setor público?
livre será a melhor alternativa. Mas o continuar existindo apesar do software RS O Guia poderá ser usado pelas
Linux é muito importante, pois pode ter livre, é facilitar a entrada numa determi- empresas públicas e privadas. A idéia do
usos absolutamente inovadores dentro nada tecnologia e depois dificultar a Guia é de facilitar a migração,
do Governo Federal, permitindo realizar saída. E a estratégia de quem compra é fornecendo um modelo estruturado do
computação de alto nível como o proces- fugir desse roteiro. É onde os padrões que deve ser considerado para a migra-
samento distribuído ou na computação são importantes, onde o Linux é impor- ção, como por exemplo documentação,
sob demanda, dando uso a incontáveis tante. Isso significa que vamos deixar de estratégias e todo um conjunto que visa

12 Agosto 2004 www.linuxmagazine.com.br


estimular a disseminação de experiên- dor externo dificilmente conseguirá dar o
cias e, por que não, de problemas com o suporte técnico adequado, seja para o
software livre, economizando tempo pa- software livre, seja para o proprietário.
ra os usuários. E ele ficará cada vez mais LM O Guia está em consulta pública
rico, porque reunirá um conjunto maior atualmente. Que tipo de contribuição
de experiências relatadas com o tempo. espera da comunidade do software livre?
LM Como e onde nasceu a idéia do Guia RS Não tenho uma posição oficial dos
de Migração do Governo Federal? resultados da consulta pública mas o que
RS A idéia começou pequena. No início posso dizer é que tenho recebido mos-
a idéia era pensar na melhor distribuição tras de que há um grande apoio da co-
do Linux para uso em desktops. Depois munidade e ela está muito envolvida.
percebermos que poderíamos ser mais Tenho certeza de que a participação ati-
ambiciosos. O grupo que começou a va dessa comunidade vai nos ajudar a
estudar isso envolvia o Comitê Técnico melhorar o guia enormemente. E essa é a
de Legados e Licenças e o Comitê de essência democrática do guia, que visa
Software Livre. Descobrimos então que a justamente compartilhar a base de co-
Comunidade Econômica Européia já ti- nhecimento em torno das plataformas de
nha um trabalho nesse sentido e ele esta- software aberto, o que vai acelerar seu
va à disposição para consulta, tendo nos progresso, tornar mais rápidas estas con-
servido de base, o que permitiu avançar- quistas. Imagino que em breve recebere-
mos na elaboração do guia com rapidez, mos contribuições como sugestões de
de forma que ele já está, agora, em fase equivalência ou ainda propostas alterna-
de consulta pública. tivas melhores do que as que tivemos em
LM O documento será disponibilizado nossas experiências.
para outros países parceiros, no âmbito LM Qual a sua opinião sobre a recente
do Mercosul, por exemplo? politização do debate em torno da
RS Sim, claro. Durante o FISL recebe- questão do Software Livre?
mos pedidos de outros países latinos RS Acho que essa politização tem sido
como a Argentina e outros que se inte- proposta de forma artificial. Não é essa a
ressaram em usar nosso documento discussão que desejamos. Queremos,
como base para suas próprias versões e sim, discutir o compartilhamento e a
isso, para nós, é gratificante, nos colo- apropriação da tecnologia. E esse debate
cando, enquanto país, como um inter- opõe os países pobres e ricos, pois essa
locutor importante no que tange o uso agenda discute o futuro da computação e
do Software Livre. o direito de propriedade industrial e inte-
LM Como foi o processo de criação? Al- lectual. Hoje, esses direitos sobre pro-
gum resultado prático já foi alcançado priedade intelectual são 70% da balança
com o uso do Guia? comercial norte-americana. Então, quan-
RS Na verdade foi o contrário. Tivemos do discutimos essa questão, estamos fa-
muitas pessoas participando dos grupos lando do que interessa aos países pobres,
que analisaram as várias abordagens do emergentes e que precisam de tecnologia
Linux no Governo e relatamos algumas e de fácil acesso a ela, para que possam
experiências práticas, bem como as cau- disputar espaço na economia do conhec-
telas e experiências de pessoas que já imento. O problema é não ideologizar a
enfrentaram esse tipo de dificuldade du- discussão, porque no fundo é uma dis-
rante uma migração. cussão política, que fala das inovações
LM Como foi tratada a questão do tecnológicas e se elas podem servir para
suporte técnico? diminuir a desigualdade global.
RS Como eu disse, cada caso é diferente. LM Como fica a questão do treinamento
Teremos ocasiões em que a terceirização de pessoal dentro do Governo? Porque
será bem sucedida e outras em que a não é possível usufruir das vantagens do
internalização será a melhor escolha. Vai Software Livre sem pessoal especial-
depender do projeto. Hoje o nível de izado. Há alguma ação do tipo ligada ao
diferenciação e a falta de padrões são tão Guia de Migração?
grandes que não há uma instalação igual RS Tivemos recentemente um grande
à outra. Há casos em que o pessoal esforço nessa área com mais de mil pes-
interno é quem melhor conhece a com- soas sendo capacitadas em 50 cursos
plexidade daquele ambiente e o fornece- diferentes para criar essa massa crítica
NOTÍCIAS Entrevista

dentro do Governo Federal e que faz par- de empresas e ter mais concorrência e maneiras usuais de pensar o grande
te do nosso esforço maior, geral, de criar qualidade, além de democratizar todo o porte. Veja, o caso do sistema de paga-
informação, documentação e especial- negócio. Claro que, naturalmente, quem mento da União lida com um milhão e
ização. O Software Livre é um vetor de é atingido direta ou indiretamente por meio de contribuintes e mais de oitenta
mudança se tivermos agentes capazes e essas mudanças acaba reagindo. bilhões de Reais em dinheiro. Aí vem a
suficientes para realizá-la. LM Mas isso significa que, numa pri- pergunta: ele precisa necessariamente
LM Essa é uma ação pluripartidária ou meira, fase será necessário um grau ma- rodar em um ambiente de mainframe? Se
está ligada aos grupos ligados à base ior de internalização? olharmos de perto o sistema, veremos
política do Governo? RS Em alguns casos sim. Por exemplo, o que ele faz 250 folhas de pagamento di-
RS Ela é pluripartidária. Temos gover- Ministério de Planejamento passou ao ferentes e que existem dados agregados.
nadores de grupos que não são da base Serpro o sistema de planejamento que Se eu distribuísse essa carga em 250 sub-
do governo e que têm endossado essas antes rodava numa empresa privada e sistemas com processadores indepen-
iniciativas, até porque o Estado Brasilei- este é um dos sistemas mais importantes dentes eu poderia obter ganhos. Ou seja,
ro precisa racionalizar seus gastos com se a aplicação fosse pensada para ser
urgência, o que é, aliás, uma cobrança desmembrada, ou “distribuída”, poderia
da sociedade, cobrança da qual a área de rodar em plataformas menores com cus-
TI não pode escapar. tos mais atraentes.
LM Como fica a questão de internaliza- Assim, o problema então não está no
ção de serviços? O Governo não seguia a tamanho da aplicação mas na qualidade
tendência de concentrar sua atenção em do projeto que vamos fazer e daí a
atividades-fins? importância de ter gente qualificada para
RS Ao longo da história do Estado cuidar disso. E não adianta ter projetos
Brasileiro, fomos perdendo coisas e o ruins de Software Livre. Temos que ser
Governo anterior, por exemplo, tinha a criativos e elaborar sistemas mais leves e
idéia de que a privatização era a solução. mais baratos, adequados aos países
Eu não tenho nada contra a terceiriza- pobres. Daí podemos fornecer soluções
ção, desde que ela seja feita por quem para outros países que enfrentam dificul-
entende do negócio. Se você terceiriza dades como as nossas. Temos que nos
áreas que estão ligadas diretamente à libertar de paradigmas intensivos em
cadeia de valor do que você faz, você hardware e desprovidos de inteligência.
arrisca o negócio. No caso do Estado, LM O que falta ainda ser discutido na
isso compreendeu perder a inteligência, arena do Software Livre?
a gestão do processo. E como a admi- RS O que não custa reforçar é que o
nistração pública pode tomar decisões Figura 2: Guia Livre, documento que o Governo debate que nós fazemos em cima do
sobre o cidadão com base em sistemas Federal colocou sob consulta pública no 5º FISL. Software Livre é mais profundo e por
de informação dos quais ele não pode isso ele tem causado essa verdadeira
sequer explicar o funcionamento? Se a do governo. No ano passado tivemos comoção junto aos fornecedores. Ele é o
gente não sabe como o código foi feito, vários problemas de integração e que debate sobre o compartilhamento e a
as regras de negócio utilizadas, não atrapalharam o andamento da aprovação gestão do conhecimento no futuro, um
sabemos se há mal uso das informações da lei orçamentária. E eram feitos em debate vital para países periféricos como
ou recursos públicos. empresas privadas e isso não trouxe me- o nosso, esses que estão ao Sul, abaixo
A gestão federal anterior optou por lhorias para o processo. Essa forma frag- da linha do Equador, e que não estão no
esvaziar as empresas públicas, e as mentária levou a inúmeros problemas e mapa da microeletrônica mundial.
empresas de tecnologia como o Serpro e é o que está me levando a propor um De nada adiantará termos ganhos
a Dataprev ficaram excluídas de recur- padrão mínimo de interoperabilidade enormes na agricultura se a cada vez
sos para modernização. Então havia dentro do Governo, uma norma que per- tivermos de pagar mais sacas de soja
muito dinheiro disponível, mas poucos mita um mínimo para o fluxo de dados para cada licença de software. O padrão
bons projetos na área de tecnologia. dentro do setor público. de troca é determinado por quem detém
Então precisamos rever essa questão LM E como fica a capacitação dos o poder econômico e devemos lutar por
porque não é só dos grandes fornece- fornecedores de software livre para regras que nos sejam mais favoráveis. E
dores que o Governo Federal é depen- processamentos críticos e de grande é absolutamente legítimo que o façamos.
dente. Precisamos, portanto, comprar porte? Serão capazes de fornecer suporte Afinal, só assim estaremos defendendo
melhor. Comprar tecnologia de uma em momentos de grande demanda? os nossos interesses e contribuindo para,
forma em que não abandonemos o con- RS É por isso que eu defendo a dis- finalmente, ter o controle do conhe-
trole sobre o processo. Se comprássemos cussão de novos modelos computa- cimento e o domínio da tecnologia que
componentes e objetos em vez de soft- cionais. Para abordar o processamento poderá até mesmo elevar o país à catego-
ware, conseguiríamos democratizar o de grande porte com eficiência. Às vezes ria de exportador de soluções em Tec-
mercado para um universo muito maior ficamos engessados em relação às nologia da Informação. ■

14 Agosto 2004 www.linuxmagazine.com.br


Redes Locais CAPA

Simplificando o gerenciamento de redes locais

Caiu na 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

D
isquetes eram uma coisa comum parece estar a apenas um passo dos di- blemáticas. Neste caso, ferramentas co-
até poucos anos atrás. Talvez vo- nossauros. Hoje em dia, o livro de re- muns do Linux são de grande ajuda.
cê ainda se recorde de quando ceitas foi substituído por um laptop na Embora elas possam, a princípio, parecer
usava disquetes para distribuir planilhas, cozinha, o seu “aparelho de som” nada desconfortáveis, tais ferramentas estão
transportar o último capítulo de sua tese mais é que um cliente que recebe presentes em quase todas as distribui-
de mestrado do laboratório da universi- arquivos MP3 de um servidor central no ções, embora em alguns casos você
dade para casa ou para trocar as últimas armário da bagunça, e nem é preciso tenha de instalá-las manualmente.
notícias com os amigos. dizer que os meios de comunicação são E quando sua rede estiver funcionan-
Olhando pra trás, esse tipo de “rede” inteiramente eletrônicos. do, você pode começar a distribuir tare-
Enquanto os escritórios ainda usam fas a máquinas individuais que vão ben-
CAPA fios, as redes sem fio continuam seu eficiar toda a rede, como por exemplo
crescimento em escritórios domésticos e um servidor DHCP ou de impressão. ■
Tecendo a Rede .................20
No momento em que você conecta sua má-
redes familiares. Após organizar a parte
quina a uma rede, não só se espera que você física da rede, é hora de escolher o soft-
saiba tudo sobre ela, mas também sobre a ware. Cada máquina na rede precisa de
forma como ela se comunica com o mundo. um endereço único; ela precisa saber em
Ferramentas comuns podem ajudá-lo. que rede reside, e qual computador ela
deve consultar se precisar enviar dados
Rede sem Estresse .............24
Adicionar máquinas a uma rede significa para fora da rede local.
mais trabalho de configuração. Uma solução
usando um servidor DHCP para atribuir A escolha é sua
endereços IP e outros valores às estações dá Suas opções são configurar do-
fim às dores de cabeça do administrador. lorosamente cada uma das má-
SCPM..................................30 quinas ou montar um servidor
Mudar o ambiente de operação de uma para fazer o serviço. O esforço
máquina envolve muito trabalho de config- extra vale a pena, especial-
uração. O SCPM facilita a vida dos usuários mente se sua rede continuar
do SuSE ao manter perfis com diferentes a crescer e for necessário
configurações que podem ser trocados sem- fazer mudanças de confi-
pre que necessário. guração. Se precisar adi-
Impressione os Amigos .....32 cionar alguns laptops
Compartilhar uma única impressora com aqui e ali, você vai
múltiplos usuários pode ajudá-lo a econo- gostar de distribui-
mizar dinheiro e recursos. Conecte sua im- ções modernas com
pressora a um servidor CUPS para permitir sistemas de auxílio
que Macs, e até mesmo máquinas Windows, a modificações da
tenham acesso à ela. configuração, co-
mo o SCPM da
INFORMAÇÕES SuSE.
Configura-
[1] Gnome Human Interface Guidelines:
http://developer.gnome.org/projects/
ções novas
gup/hig tendem a
ser pro-
[2] Freedesktop.org:
http://www.freedesktop.org

www.linuxmagazine.com.br Agosto 2004 19


CAPA Tecendo a Rede

Ferramentas básicas

Tecendo a Rede
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
Mali Veith, visipix.com

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

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

H
oje em dia, um computador sem Assim como um navegador web não permitindo que eles troquem dados. O
uma conexão com o mundo lá necessita saber se a informação está TCP cria uma fila de dados estável entre
fora parece nos reportar a um sendo transmitida via componentes os pontos de rede (para os protocolos de
mundo pré-histórico. “wireless” ou linhas FDDI e uma linha aplicação HTTP, SSH, POP ou SMTP) e
Embora todas as distribuições Linux FDDI não precisa saber se os bits que ela assegura que pacotes perdidos sejam
atuais instalem os elementos básicos está transportando pertencem a arquivos retransmitidos. O outro protocolo mais
para o funcionamento do computador HTML, MP3s ou vídeos, especialistas significativo neste nível é o Protocolo de
em uma rede, a responsabilidade por seu usam um modelo de camadas (layers) Datagrama de Usuário (UDP), que pode
gerenciamento ainda fica a cargo dos para descrever redes de computadores. perder pacotes (e é utilizado, por exem-
administradores do sistema – e em al- Como em uma cebola, cada camada é plo, por “streams” do Real Audio).
guns casos o treinamento recebido não construída sobre as camadas inferiores, As coisas começam a ficar realmente
cobriu como deveria todo o conjunto de mas, fora isto, cada uma trabalha de interessantes na camada de rede inferior.
técnicas associadas ao funcionamento de forma independente das outras. É nela que os pacotes de dados são colo-
uma rede. Neste caso, faz sentido obter o A camada de aplicação, como o nome cados na mídia de transporte e tentam
máximo de conhecimento possível sobre sugere, define como aplicações, tais encontrar a melhor rota até o seu alvo.
o que pode acontecer com computadores como navegadores ou programas de Para simplificar esta tarefa, cada pacote
ligados em rede. email, “conversam” com servidores de inclui os endereços do transmissor e do
Os problemas são variados: redes Internet ou de email, respectivamente. receptor. Quando uma página da Web é
inteiras podem parar de responder, ou Como isto ocorre exatamente depende transmitida pelo servidor, os pacotes que
uma máquina (como o servidor de inter- da aplicação. Por exemplo, o Protocolo a formam podem tomar rotas diferentes.
net) pode tornar-se inacessível. Feliz- de Transferência de Hipertexto (HTTP) é Após aceitar tais pacotes, o receptor deve
mente, a maioria das distribuições Linux utilizado na Internet, enquanto down- assegurar que eles serão “remontados”
já traz todas as ferramentas necessárias loads de arquivos normalmente são na ordem correta. Além do Internet Pro-
para solucioná-los. feitos utilizando o Protocolo de Transfe- tocol (IP), a camada de rede tem
rência de Arquivos (FTP). protocolos como o Internet Control Mes-
Fundamentos de Redes A camada de transporte reside abaixo sage Protocol (Protocolo de Controle para
Infelizmente, a maioria dessas ferramen- da camada de aplicação. Esta camada
tas assume que você saiba exatamente realiza conexões entre computadores, GLOSSÁRIO
como uma rede de com- DNS: Servidores DNS possuem bases de dados
putadores funciona. O pro- que são utilizadas para mapear endereços IP a
tocolo TCP/IP é o com- nomes de servidores na Internet (e vice-versa),
ponente básico da Internet assim como ocorre em uma lista telefônica.
e de muitas redes locais. Quando o usuário de uma aplicação de rede
Ele é uma combinação do tenta acessar um determinado domínio, tais
Transmission Control Proto- bases de dados são utilizadas pelos servidores
col (Protocolo de Controle DNS para converter o nome digitado no
de Transmissão - TCP) e do endereço IP do servidor. Assim, quando um
usuário digita www.google.com.br,está na
Internet Protocol (Protocolo
verdade acessando o servidor com o endereço
de Internet - IP), e especi- Figura 1: Os dados mostrados pelo comando ip addr incluem infor-
IP 216.239.51.104. Será com este endereço que o
fica como os computadores mações importantes sobre seu endereço de IP. inet indica a
navegador abrirá uma conexão.
devem se comunicar. máscara de rede.

20 Agosto 2004 www.linuxmagazine.com.br


Tecendo a Rede CAPA

Figura 2: o utilitário ip route mostra informações claras a respeito d0 Figura 3: A máquina alvo, que tem o endereço IP 192.168.1.1, respondeu a
endereço IP de sua máquina. todos os cinco pings.

Mensagens na Internet - ICMP), para efe- cimento sobre as camadas citadas acima, (rota de busca) do sistema. Neste caso,
tuar o controle de mensagens (tais como muitas ferramentas de rede não farão basta informar o caminho inteiro quando
mensagens de erro), o Address Resolu- nenhum sentido. quiser rodar o programa (ex: /sbin/ip).
tion Protocol (Protocolo de Resolução de A opção addr indica ao comando ip
Endereços - ARP), que associa endereços Verificação de Status que ele deve fornecer dados sobre a
IP a endereços de hardware (MAC), e seu Antes de começar a analisar o tráfico de placa de rede. A linha finalizada por eth0
oposto, o protocolo RARP (Reverse dados na rede, é importante certificar-se indica a primeira placa de rede do sis-
Address Resolution Protocol - Protocolo de que seu computador está realmente tema (eth1 é a segunda – possivelmente
de resolução reversa de endereço). utilizando a rede como deveria. utilizada para WLAN, e assim por
A camada mais inferior do modelo OSI Para encurtar a história, cada máquina diante). Ela mostra o endereço IP do
de camadas é a camada física. Neste necessita um endereço IP (também co- computador (192.168.1.245 na Figura 1),
nível, a principal preocupação é com a nhecido como IP Address) único para ser a máscara de rede (/24), o endereço de
transmissão de bits, bem como a capaz de comunicar-se com as outras broadcast (192.168.1.255) e o nome da
padronização de protocolos para tratar máquinas da rede. Um gateway permite interface de rede (eth0).
de interfaces elétricas, mecânicas e de que pacotes de dados com destino à O resultado do comando ip route é
sinalização. Isto inclui padrões como o Internet possam deixar a rede local. mais fácil de ler (ver Figura 2). A
RS-232 e X.21. O comando ip fornece detalhes sobre a primeira linha mostra a rede (o endereço
Os componentes de uma rede são sua configuração atual. Sistemas mais da rede no nosso exemplo é 192.168.1.0)
identificados através dos seus endereços antigos talvez tenham somente os e a netmask (/24), a interface de rede e,
IP. O TCP pode retransmitir pacotes per- comandos ifconfig e route, que mostram por fim, a chamada data source (por isso
didos ou danificados, assegurando que o a mesma informação, embora de forma o termo src, indicando “source”) que é o
receptor contará com, pelo menos, um ligeiramente diferente. Se o seu shell não endereço IP (192.168.1.245). A segunda
conjunto completo dos pacotes envia- é capaz de encontrar nenhum destes linha indica o default gateway, cujo
dos. Os protocolos de aplicação, por comandos, pode ser que eles tenham endereço IP é 192.168.1.1.
mais sofisticados que sejam, se baseiam sido instalados no diretório /sbin, que Caso informações importantes, tais
neste serviço. Sem um pouco de conhe- não está normalmente no search path como os endereços IP da máquina e do

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

www.linuxmagazine.com.br Agosto 2004 21


CAPA Tecendo a Rede

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?

gateway, estiverem faltando aqui, isto Figura 3), quantas respostas retornaram de forma mais clara (ver Figura 5), pois
pode explicar porque o seu computador (cinco novamente) e quanto tempo isto indica exatamente onde os pacotes estão
não está se comportando como deveria levou para acontecer (4002 milisegun- tendo atrasos maiores (caso você não
na rede. Neste caso, rode a ferramenta dos). Se pacotes fossem descartados ou pressione a tecla [q]). Para cada trecho
de configuração da sua distribuição perdidos, tais estatísticas os mostrariam da rota, mtr descobre o que está aconte-
(como o YaST, no caso do SuSE Linux), em uma seção chamada packet loss. Se o cendo com os pacotes de dados. Por isso,
verifique a configuração de rede do seu computador alvo não está acessível, mtr pode ser visto como uma combi-
sistema e tente novamente. nada acontece por um tempo, enquanto nação entre ping e traceroute. Por
o ping aguarda por respostas. exemplo, o comando:
Ping-Pong O comando ping hostname transmite
ping é uma ferramenta simples para pacotes ICMP sem parar até que você mtr -c 10 --report U
análise da rede, mas é também extrema- pressione [Ctrl-C]. Você também pode targethost
mente prática. Ela transmite pacotes de especificar ping -c 10 hostname para
dados ICMP do seu computador para um transmitir apenas dez pacotes. informa ao mtr para transmitir apenas
computador alvo e mostra o tempo que dez pacotes, parar e fornecer um
cada resposta leva para retornar ao seu Rotas relatório. A coluna HOST indica onde o
computador – assumindo que o com- Enquanto ping só mostra se o computa- pacote de dados se encontra, LOSS
putador alvo responda. A seção final do dor alvo está respondendo, traceroute informa a porcentagem de pacotes
resultado de um ping é um grupo de mostra todo o caminho que os pacotes descartados ou perdidos, RCVD e SENT
estatísticas que mostram a você quantos de dados tomaram até atingi-lo (ver mostram, respectivamente, quantos pa-
pacotes foram transmitidos (cinco na Figura 4). Os asteriscos (*) indicam que cotes foram recebidos e enviados e as
um erro ocorreu colunas BEST, WORST e AVG informam
no roteamento, ou quanto tempo a transmissão dos pacotes
que um firewall levou, no melhor e no pior dos casos, e
bloqueou a pas- também na média.
sagem deste tipo
de pacote de da- Para obter maior precisão…
dos. Aliás, a opção … experimente usar tcpdump, a ferra-
-n pode ser uti- menta de análise de rede de mil e uma
lizada para evitar utilidades. A maioria das distribuições
que os hostnames Linux já fornece um pacote de insta-
sejam mostrados. lação. Caso contrário, o código fonte
Para indicar qual a pode ser baixado em [1]. Se quiser com-
interface de rede a pilar seu próprio binário, você vai
ser usada, utilize a precisar da biblioteca libcap.
opção -i. O tcpdump precisa de privilégios de
O comando mtr administrador para rodar, uma vez que
targethost mostra ele coloca a placa de rede em modo
Figura 8: iptraf fornece estatísticas detalhadas sobre a rede. a rota dos pacotes “promíscuo”, o que permite a ela ler

22 Agosto 2004 www.linuxmagazine.com.br


Tecendo a Rede CAPA

quaisquer pacotes que passem pela mas analisa o fluxo do tráfego, classifi-
interface de rede local, inclusive a cap- tcpdump -i eth0 port 80 cado por protocolo. Isto fornece infor-
tura de dados. mações úteis sobre a taxa transferência
O tcpdump mostra todos os pacotes de e os dados destinados à porta TCP de dados e indica onde se encontram
dados que aparecem na interface da número 80 – comumente utilizada por problemas de performance (os chama-
placa de rede: servidores de Internet – serão mostrados. dos gargalos ou bottlenecks). Por exem-
Por outro lado, tcpdump host targethost plo, se há mais saída do que entrada de
11:56:27.833598 192.168.1.245 U fornecerá o tráfico de rede em targethost. dados, pode-se assumir que alguém está
.ssh > 192.168.1.20.39258: P U baixando algo do seu micro.
1392512:1392720(208) ack 1201 U Pra onde? Teríamos muito mais a relatar sobre
win 9120 <nop,nop,timestamp U É importante instalar ferramentas espe- iptraf e outras ferramentas mencionadas
2599771999 1711932971> (DF) U cializadas de modo a não ficar “no neste artigo. Se o leitor quer melhorar
[tos 0x10] escuro” no que concerne à utilização da seus conhecimentos nesta área, não há
rede. O iptraf é um exemplo. Ele mostra alternativa: adquira o máximo de con-
Em nosso exemplo pode ser visto que a exatamente o que está acontecendo com hecimento e experiência possível. ■
máquina com o IP 192.168.1.245 enviou a placa de rede, que protocolos estão
um pacote de dados ssh para a máquina sendo utilizados atualmente e com que INFORMAÇÕES
com o IP 192.168.1.20. Digite: outras máquinas a máquina sob análise [1] Tcpdump: http://www.tcpdump.org
está “conversando”. Pressione as teclas
[2] IPTraf:
Nico Lumma é o [q] e [Enter] para encerrar o programa. http://cebu.mozcom.com/riker/iptraf
SOBRE O AUTOR

Diretor de TI da No menu principal (ver Figura 6) há


Orangemedia.de [3] Conjunto de protocolos da Internet:
GmbH, empresa
um item chamado IP Traffic Monitor (ver
http://en.wikipedia.org/wiki/TCP/IP
especializada na Figura 7), que fornece uma visão geral
[4] Protocolo TCP:
comercialização de do tráfego dos dados na rede, e permite a
espaço publicitário http://en.wikipedia.org/wiki/
identificação de pontos de sobrecarga.
online, e conta com Transmission_Control_Protocol
Por outro lado, o item Detailed Inter-
anos de experiência no uso do Linux [5] Protocolo IP: http://en.wikipedia.org/
em ambientes empresariais. face Statistics (ver Figura 8) não indica
wiki/Internet_Protocol
quais máquinas estão trocando dados,
CAPA Servidor DHCP

Servidor DHCP para redes locais

Rede sem Estresse


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

N
ão importa se for para a sua Mesmo que exista uma lista organizada alterar esses parâmetros para poderem
empresa, para a organização de dos endereçamentos IP já atribuídos (e utilizar a rede local. Seja franco : Você
um evento, ou mesmo para a que você saiba onde essa lista se encon- sabe como fazer a configuração de rede
organização do seu escritório pessoal, tra), se você precisar reestruturar sua no MacOS 7.6 ? Ou se lembra como fazer
configurar cada computador de uma rede (por exemplo, adicionar um novo a configuração no Windows 98 ?
rede individualmente é sinônimo de bas- servidor de nomes, alterar a máscara da O DHCP (Dynamic Host Configuration
tante trabalho. Um administrador de sis- rede ou mesmo utilizar um outro Protocol, ou Protocolo de Configuração
temas pode configurar individualmente e roteador para acesso às redes públicas), Dinâmica de Hosts), tem as repostas à
sem problemas parâmetros como ende- terá que reconfigurar individualmente estas perguntas. Para usar DHCP você só
reços IP, Netmask, Default Gateway e o cada estação já existente. precisa configurar um computador para
DNS (Domain Name Server) para cada Até os visitantes que normalmente ser o servidor DHCP. Feito isso, essa
máquina. Agora procure imaginar um trazem consigo laptops precisam saber máquina será responsável pelo gerencia-
grupo de pessoas, com os mais mento das configurações de
diferentes níveis de instrução e Listagem 1: Um exemplo simples, rede de todas as outras máqui-
experiência, tentando executar porém completo, do dhcpd.conf nas ligadas a essa rede. Além
essa tarefa, e você certamente dos parâmetros tradicionais de
01 default-lease-time 3600;
terá uma grande surpresa. rede, você também poderá
02 max-lease-time 14400;
A medida em que o número de definir outros parâmetros espe-
03
máquinas aumenta, mesmo os cíficos como o servidor de hora
04 subnet 192.168.2.0 netmask 255.255.255.0 {
administradores mais experientes (timeserver) e o servidor WINS.
05 range 192.168.2.50 192.168.2.69;
terão problemas para manter e
06 option domain-name-servers 194.25.2.129;
configurar uma rede. Cada ende-
07 option broadcast-address 192.168.2.255;
Muitas máquinas…
reço IP só pode ser assinalado a Com o que isso se parece em
08 option routers 192.168.2.1;
um único Host (ou nó) da rede, um caso prático ? Vamos anal-
09 }
para que não hajam conflitos. isar uma pequena rede privada.

24 Agosto 2004 www.linuxmagazine.com.br


Servidor DHCP CAPA

Nessa caso, “privado” significa que a Usuários de outras distribuições geral- que a mesma assume. Essas opções (veja
rede utiliza uma faixa de endereços IP mente encontram um pacote RPM nos visão geral na Tabela 2) são passadas
não roteáveis. Para evitar confusão esses CDs ou DVDs de instalação. Caso con- para uma máquina cliente a cada vez
endereços podem ser utilizados nas re- trário, vá ao site http://rpmfind.net/ e que são solicitadas. A capacidade do
des locais (LANs) porém não são utiliza- procure por DHCP. cliente processar as informações obtidas
dos na Internet (rede pública). Após a instalação, você encontrará o no servidor DHCP depende do sistema
Grandes redes privadas de computa- arquivo de configuração dhcpd.conf no operacional. Administradores podem
dores, chamadas de redes classe A, diretório /etc/. Esse arquivo é bem docu- definir scripts que especificarão como
podem utilizar endereços IP no intervalo mentado, o que facilita a tarefa de alterar essas informações serão processadas.
que vai de 10.0.0.0 a 10.255.255.255. Já os parâmetros nos exemplos deste artigo As entradas restantes são utilizadas
as redes privadas de tamanho médio, ou de forma que a refletir o ambiente da sua pelo próprio servidor, dhcpd. A Tabela 1
redes classe B, podem utilizar endereços rede. Pare um pouco e pense sobre o apresenta os principais parâmetros.
IP entre 172.16.0.0 e 172.31.255.255. Se número de computadores que irão aces-
sua rede não for tão grande assim, você sar a rede ao mesmo tempo. Se você Atribuição permanente
pode usar um dos 65023 endereços estiver organizando uma LAN Party, por Se você se decidir por utilizar DHCP na
contidos na faixa entre 192.168.0.0 e exemplo, este pode ser um número bem sua rede, haverá com certeza sempre
192.168.255.255. grande. Uma rede residencial raramente alguns computadores que necessitarão
Pequenas redes utilizam apenas uma possui mais do que 10 máquinas. de endereçamento IP estático. Afinal de
classe C. Vou tomar como exemplo o O exemplo da Listagem 1 assume que contas, não faz sentido ter que adivinhar
caso da minha rede doméstica, que tem no máximo 20 máquinas necessitam de qual o endereço IP do gateway ou
o endereço 192.168.2.0. Isso também é acesso simultâneo à rede. Queremos que mesmo de um servidor de arquivos antes
útil para estabelecer uma rede local em o servidor dhcp, dhcpd, assinale os de acessá-lo, certo?.
um condomínio. endereços IP dentro do intervalo entre O arquivo /etc/dhcpd.conf também é
192.168.2.50 e 192.168.2.69. Utilizare- utilizado para clientes que necessitam de
… e um só servidor mos também o parâmetro domain-name- parâmetros específicos. O servidor
A máquina que vai fornecer todos os servers para definir os servidores DNS e dhcpd verifica o MAC Address (único por
endereços IP’s necessita de um programa o parâmetro routers para especificar o placa de rede) da máquina cliente que
servidor de DHCP. Não existem muitas gateway para a Internet. Se você não tem está requisitando um endereço e faz a
implementações livres desse programa. um servidor DNS na sua rede local, use o atribuição correta.
Nós optamos por trabalhar com o ISC fornecido pelo seu provedor de Internet. O MAC Address vem normalmente
DHCP server, dhcpd, como a maioria das Note os colchetes que englobam a impresso em uma etiqueta colada aos
pessoas fazem. definição de um segmento de rede. E cartões de rede PCMCIA e nas placas
Se você quiser compilar o programa, o cada linha de configuração é terminada Wireless LAN USB. Se você não puder ler
código fonte está disponível na Internet por um ponto-e-vírgula. o MAC Address na placa, é possível
em [1]. A maioria dos usuários preferem descobrir esse endereço através de
instalar o pacote fornecido por sua dis- Livremente configurável comandos específicos do seu sistema
tribuição. Usuários Debian podem fazer Em termos gerais, existem dois tipos de operacional. Nos sistemas baseados em
isso com o comando : entradas no arquivo de configuração: Unix você pode utilizar o comando ifcon-
uma que se inicia com uma palavra fig, já os sistemas operacionais da
apt-get install dhcpd chave (conhecida como option) e o valor Microsoft usam o comando ipconfig. A

Listagem 2: Utilizando ifconfig para


descobrir o MAC Address
01 renner@lyra:~$ /sbin/ ifconfig eth0
02 eth0 Link encap:Ethernet HWaddr 00:02:2D:34:90:85
03 inet addr:10.32.130.79 Bcast:10.32.135.255
Mask:255.255.248.0
04 UP BROADCAST NOTRAILERS RUNNING MULTICAST
MTU:1500 Metric:1
05 RX packets:15695 errors:0 dropped:0 overruns:0
frame:0
06 TX packets:10988 errors:204 dropped:0 overruns:0
carrier:0
07 collisions:0 txqueuelen:100
08 RX bytes:5201433 (4.9 MiB) TX bytes:1559490 (1.4
MiB)
09 Interrupt:10 Base address:0x100
Figura 1: O MAC Find correlaciona MAC Addresses e fabricantes de hardware.

www.linuxmagazine.com.br Agosto 2004 25


CAPA Servidor DHCP

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

Listagem 2 apresenta um exemplo de Qual MAC Address? cional de rede sem fio), você poderá
execução do comando ifconfig em uma De qualquer forma, você ainda precisa assinalar o mesmo hostname para os
máquina Linux, cujo MAC Address, ou saber qual destes MAC Addresses é o que dois endereços MAC :
Hardware Address, (endereço de hard- você está procurando. Em alguns casos,
ware) é 00:02:2D:34:90:85. pode ser aconselhável manter uma host lyraB {
Não se preocupe se você não conse- tabela [2] com os endereços fornecidos hardware ethernet U
guir acessar a máquina diretamente, pois pelos fabricantes das placas de rede 00:80:C7:C1:3D:76;
o servidor dhcpd mantém um registro de (veja Figura 1). fixed-address lyra.mtr.mynet;
todos os endereços IP atribuídos e o Após descobrir o endereço de hard- }
prazo de validade no arquivo /var/lib/- ware (MAC), você pode adicionar uma
dhcp/dhcpd.leases. entrada de mapeamento estático de Em alguns casos, você pode até substi-
Uma alternativa é mandar um ping a endereço IP na configuração do dhcpd : tuir uma placa de rede enquanto a
todas as máquinas da rede, e depois exe- máquina está funcionando sem sequer
cutar o comando arp -a para encontrar host lyraA { interromper a conexão! Ao invés do
tanto o endereço IP quanto o MAC hardware ethernet U hostname, que requer um servidor DNS,
Address do computador em questão 00:02:2D:34:90:85; você pode assinalar um endereço IP.
(veja mais na Listagem 3). Lembre-se fixed-address lyra.mtr.mynet;
que você precisa primeiro enviar o ping, } Uso avançado do DHCP
pois a tabela do arp só inclui os O DHCP pode fazer ainda mais! É pos-
endereços dos hosts com os quais seu Se o computador possui múltiplas inter- sível informar a um cliente que não pos-
computador já se comunicou. faces de rede (exemplo, um cartão adi- sui um disco rígido qual imagem de um
dado sistema operacional (boot image)
Listagem 3: Como descobrir o deve ser baixada e executada. Isso é pos-
MAC Address com arp e ping sível devido à utilização do protocolo
TFTP (Trivial File Transfer Protocol), um
01 renner@lyra:~$ ping -c3 192.168.2.0 subprotocolo do FTP, para transferir
02 PING 192.168.2.0 (192.168.2.0): 56 data bytes informação através da rede. A Listagem
03 64 bytes from 192.168.2.1: icmp_seq=0 ttl=64 time=0.2 ms 4 apresenta um exemplo onde uma
04 64 bytes from 192.168.2.52: icmp_seq=0 ttl=64 time=3.5 ms (DUP!) workstation SGI Indy procura seu kernel
05 64 bytes from 192.168.2.53: icmp_seq=0 ttl=64 time=4.2 ms (DUP!) Linux via DHCP. Esse sistema não é
06 64 bytes from 192.168.2.62: icmp_seq=0 ttl=64 time=4.7 ms (DUP!) usado apenas em aplicações de cluster-
07 [...] ing, mas também em laboratórios de
08 renner@lyra:~$ /usr/sbin/arp -a informática utilizados por alunos em
09 ? (192.168.2.1) at 00:03:E3:00:18:F1 [ether] on eth0 Universidades e Faculdades.
10 ? (192.168.2.52) at 00:30:05:55:02:ED [ether] on eth0 O boot pela rede funcionará apenas se
11 ? (192.168.2.53) at 00:0C:6E:1F:32:C4 [ether] on eth0 o servidor tftpd estiver habilitado em
12 ? (192.168.2.62) at 00:30:05:55:03:7F [ether] on eth0 /etc/inetd.conf. Para permitir que um
servidor encontre a imagem de boot

26 Agosto 2004 www.linuxmagazine.com.br


Servidor DHCP CAPA

livre de trabalho adicional a cada vez


Tabela 1: Parâmetros do dhcpd que uma nova estação ou servidor é co-
Entrada Parâmetro Significado nectado à rede local.
default-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 Máquina cliente
período. Se o cliente não fizer isso,o endereço IP poderá ser assina-
lado a outra máquina. As novas máquinas não necessitarão
max-lease-time Tempo em segundos Especifica o período máximo de validade dos parâmetros mais de excessiva configuração inicial
designados Se o cliente requisitar um default-lease-time maior para funcionar. Basta habilitar o cliente
que o configurado,o servidor então apresenta o max-lease-time. DHCP nessas máquinas. Dependendo do
subnet Endereço de Rede Segmento de rede ao qual a configuração se aplica (veja Quadro 1). sistema operacional (e possivelmente da
netmask Máscara de Rede Máscara do segmento de rede ao qual a configuração se distribuição Linux) existem vários méto-
aplica (veja Quadro 1).
dos para habilitar o cliente DHCP. Se
range Primeiro e último endereço IP Faixa de endereços IP a serem distribuídos pelo servidor DHCP.
você for um usuário Debian, deve adi-
fixed-address Endereço IP ou hostname Endereço fixo a ser designado a um cliente específico.
cionar uma linha como :
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. iface eth0 inet dhcp

no arquivo /etc/network/interfaces. Out-


especificada (no nosso exemplo o arquivo /etc/xinetd.d/tftp, cujo conteúdo ras distribuições possuem ferramentas
arquivo indy_r4k_tftpboot.img), você aparece na listagem 5. gráficas para configuração da interface.
precisa especificar o caminho completo Um único servidor DHCP pode supor- A Figura 2 mostra um assistente de con-
para o servidor (/boot) : tar o gerenciamento de múltiplos seg- figuração do Mandrake Linux.
mentos de rede ao mesmo tempo. Para Usuários do Windows devem utilizar a
tftp dgram udp wait nobody U fazer isso, você deverá criar uma entrada ferramenta de Rede (Network) no painel
/usr/sbin/tcpd U de subnet para cada segmento de rede na de controle. Usuários do MacOS devem
/usr/sbin/in.tftpd /boot configuração do dhcpd. Os parâmetros acessar o painel de controle (Control
(options) entre parênteses como DNS e
Distribuições que utilizam o moderno domínio NIS, devem ser únicos. Em apli- Listagem 5: Arquivo
xinetd, ao invés de inetd, precisam do cações práticas, cada segmento de rede é /etc/xinetd.d/tftp
designado a uma pla-
Listagem 4: Indicando ca de rede distinta do 01 # default: off
uma imagem de boot servidor DHCP. 02
Deve-se reiniciali- 03 service tftp
01 host indy {
zar o dhcpd para que 04 {
02 filename "indy_r4k_tftpboot.img";
as alterações feitas 05 disable = no
03 hardware ethernet 08:00:69:08:58:40;
no arquivo de confi- 06 socket_type = dgram
04 fixed-address 192.168.2.12;
guração se tornem a- 07 protocol = udp
05 server-name "cassiopeia.mtr.mynet";
tivas. Uma vez feita a 08 wait = yes
06 option host-name "indy";
configuração do ser- 09 user = root
07 option domain-name "mtr.mynet";
vidor DHCP, altera- 10 server = /usr/sbin/in.tftpd
08 option domain-name-servers 192.168.2.53;
ções são muito raras. 11 server_args = -s /boot
09 option routers 192.168.2.1;
Desta forma, o admi- 12 }
10 }
nistrador da rede fica

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


Além do endereço IP, a configuração de um 255.255.255.0 do formato decimal para resultado dessa operação é 1 quando ambos
dispositivo de rede inclui o endereço de binário temos : os bits do IP e da máscara forem iguais a 1, e
broadcast e a máscara da rede. Esta máscara 11111111.11111111.11111111.00000000 zero para os demais casos. O resultado do
é utilizada para subdividir uma rede em sub- Evidentemente, não fizemos nenhum AND bit a bit é :
redes menores. grande esforço matemático para realizar 11000000.10101000.00000010.00000000
Para entender a relação entre endereço IP e essa conversão. O número 1 aparece 24 vezes Convertendo o número de binário para deci-
máscara de rede é necessário fazer uma e por esse motivo a rede também é co- mal o resultado é 192.168.2.0.
análise em nível de bits. Para fazer isso, nhecida como uma rede “/24”. Como o IP zero é reservado para o endereço
vamos converter cada número decimal para Aplicando a mesma técnica para o endereço da rede (no exemplo 192.168.2.0) e o último
base 2 (binário): IP 192.168.2.3, teremos o equivalente binário : endereço, tipicamente 255 (no exemplo
255=1*(2^7)+1*(2^6)+1*(2^5)+1*)2^4)+1 11000000.10101000.00000010.00000011 192.168.2.255) é reservado para o endereço de
*(2^3)+1*(2^2)+1*(2^1)+1*(2^0) O endereço de rede é um AND bit a bit (bit- broadcast, podemos afirmar que a rede apre-
Dessa forma, convertendo a máscara de rede wise) entre o endereço IP e a máscara. O sentada pode acomodar até 254 máquinas.

www.linuxmagazine.com.br Agosto 2004 27


CAPA Servidor DHCP

2.[123456].*)
Tabela 2: Parâmetros do Cliente exec /sbin/dhclientU
Entrada (sem parâmetro) Parâmetro Significado -2.2.x -q "$@"
routers Hostname ou endereço IP Roteadores ou gateways para acesso à Internet. ;;
domain-name-servers Hostname ou endereço IP Servidor de Nomes
host-name Hostname Hostname do cliente. Adicione o número “6”, como aparece
ntp-servers Hostname ou endereço IP Servidor de hora,para sincronismo. em negrito acima, aos números entre
netbios-node-type 1,2,4 ou 8 (recomendado) Tipo de resolução para Windows. 1-broadcast,2-unicast, chaves, e rapidamente você terá um cli-
4 ambos (primeiro tenta-se broadcast,depois unicast), ente DHCP funcionando, sem quaisquer
e 8 é o modo híbrido que utiliza método unicast,depois
problemas adicionais, podendo conti-
broadcast.
netbios-name-servers Hostname Servidor WINS para resolução de nome de Internet para
nuar a desfrutar do conforto de receber
sistemas Windows. automaticamente seu endereço IP. ■
domain-name Domínio Nome do domínio da rede.
nis-domain Domínio Nome do domínio NIS. Michael Renner trabalha como
nis-servers Hostname ou endereço IP Servidor NIS administrador de rede e de sistemas

SOBRE O AUTOR
subnet-mask Máscara Máscara do segmento de rede UNIX no Instituto Max-Planck em
Tübingen, na Alemanha. Além de
administrar sistemas Linux, IRIX e
Panel) TCP/IP no menu Apple. No Existem alguns truques que tornam FreeBSD, ele também é o respon-
MacOS X, (veja Figura 3) habilite o possível o uso de versões antigas do sável pelo suporte técnico dos
DHCP em System Preferences / Network. dhcpd no kernel 2.6. A princípio, esta usuários do instituto no dia-a-dia,
combinação deveria funcionar, mas o tarefa que ele gentilmente classifica
Conclusão dhcp-client usa o script /sbin/dhclient
como auto-flagelação.
Não existem muitos clientes DHCP para para verificar a versão do kernel. Como o
Linux. Um deles, o pump, é bastante mesmo não reconhece o kernel 2.6, o
popular entre as mini-distribuições devi- programa se encerra nesse ponto. Como INFORMAÇÕES
do ao seu tamanho reduzido. Versões o DHCP precisa diferenciar apenas entre [1] DHCP Server:
mais completas, como o dhcp-client e o o kernel 2.0 e as versões mais novas, http://www.isc.org/index.pl?/sw/dhcp/
dhcpd, têm funções adicionais, como a você pode modificar o script para recon-
[2] MAC database:
possibilidade de executar um script após hecer 2.6 como uma versão válida do http://www.coffer.com/mac_find/
a configuração do endereço IP. kernel, como mostrado a seguir:

GLOSSÁRIO
Endereço IP: Cada máquina presente na rede Timeserver: Servidor que provê um horário mações de login, senhas, diretórios home,
é identificada através de um único endereço único à todas as máquinas da rede. Os fusos privilégio de grupos de usuários e hostnames.
IP de 32 bits. Para facilitar a memorização e horários são calculados tendo como referên- Isso permite que um servidor NIS envie infor-
leitura, os endereços IP são apresentados em cia a hora oficial na Inglaterra, medida a par- mações dos arquivos de configuração para
base decimal separados por ponto, onde cada tir da linha do Meridiano de Greenwich, do uma máquina cliente, tais como /etc/passwd,
segmento do endereço pode ser um número Royal Observatory em Greenwich. /etc/groups, ou /etc/hosts. Um arquivo
entre 0 a 255. Além da faixa de endereços IP WINS:Windows Internet Naming Service, da chamado /etc/nsswitch.conf especifica
globalmente acessíveis, existe também uma Microsoft. Mapeia o nome NetBIOS de um quando um servidor NIS provê informações
outra faixa de endereços IP utilizados em computador Windows para o seu endereço IP. para os arquivos de configuração, e que tipo
redes privadas. Esses últimos não são Um servidor WINS tem uma função especial de informação deve ser enviada. Um método
acessíveis através de redes públicas. na rede. Se existirem muitas máquinas com alternativo é ter o servidor DHCP configurado
Netmask: Netmask, ou máscara de rede, é uti- Windows na rede, o servidor WINS pode pre- para transmitir informações sobre o servidor
lizada para definir um segmento de rede. As venir mensagens broadcast indesejadas. O NIS na rede local.
máquinas utilizam máscaras de bits para projeto Samba possue suporte à WINS. MAC Address: O MAC Address (Media Access
identificar se um dado endereço pertence às Broadcast: Mensagens indiretas em broad- Control), ou mais comumente conhecido
suas próprias redes.Veja o Quadro 1 para um cast são utilizadas para atingir múltiplos como endereço Ethernet, e um número hexa-
entender melhor o funcionamento. hosts, sem a necessidade de adição de nen- decimal de 6 bytes. O MAC Address é gravado
Name Server: Um Domain Name Server, ou huma informação específica sobre cada um em cada dispositivo Ethernet, e permite a
DNS, provê a facilidade de traduzir nomes deles. Mensagens em broadcast podem econ- cada dispositivo ser unicamente identificado.
simbólicos de hosts (por exemplo, linux-mag- omizar banda quando se deseja falar com Cada fabricante tem uma faixa de MAC
azine.com) em endereços IP (62.245.157.219) e várias máquinas, porém devem normalmente Addresses e assinala um endereço para cada
vice-versa. DNS é uma base de dados ser evitadas por causar sobrecarga na rede. equipamento uma única vez.
hierárquica distribuída para resolução de Unicast: O servidor envia uma cópia de um Boot image: Um kernel Unix ou Linux espe-
nomes. Cada servidor não precisa possuir uma dado a cada cliente. Conexões ponto-a-ponto cialmente adaptado que é obtido através da
lista completa de todos os hostnames, pois o desse tipo são facilmente configuráveis, mas rede local e depois executado pelo cliente. Isto
protocolo permite a requisição de nomes causam sobrecarga no servidor se o número permite a montagem de uma rede onde os
entre servidores. de clientes simultâneos for grande. clientes não possuem unidade de disco e
Default gateway: Máquina na rede local NIS: O NIS (Network Information Service) montam um sistema de arquivos raiz (/)
para a qual as máquinas enviam todos os facilita a propagação de configurações em remoto. Um uso típico são laboratórios de
pacotes com destino fora da rede local. uma dada rede. O servidor NIS provê infor- ensino em escolas e universidades.

28 Agosto 2004 www.linuxmagazine.com.br


CAPA SCPM

Gerenciando a configuração de sistemas com o SCPM

Mudança de Ares
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

O
Linux caminha a passos largos
para o mundo dos laptops, e
máquinas portáteis são especial-
mente propensas a trabalhar em ambi-
entes heterogêneos. Mesmo que você ples comando. Como alternativa, você de recursos especificados para o dire-
geralmente se conecte à Internet usando pode simplesmente selecionar um perfil tório recém criado.
uma rede com fio, pode esporadica- durante a inicialização.
mente ter de usar uma rede wireless, ou O SCPM é um componente padrão do Grupos
mesmo ficar sem conexão. Outro bom Suse Linux desde a versão 8. Assumindo Administradores podem usar grupos de
exemplo é o uso de laptops ora em ambi- que você não o apagou manualmente, o recursos para especificar a quais serviços
ente de escritório, ora em ambiente gerenciador de perfis já deve estar insta- as configurações de um perfil se aplicam.
doméstico. No escritório você pode dis- lado em seu sistema e pronto para uso. Por exemplo, o SCPM só salva seus
por de uma docking station com monitor O módulo Profile Manager do YaST, ajustes de impressão se você habilitar o
externo, enquanto em sua casa você usa encontrado no grupo System, o ajuda a grupo Printer. Se você não habilitar este
o monitor LCD que acompanha de configurar o SCPM [Figura 1]. Você tam- recurso específico, as configurações não
fábrica o laptop. O Suse Linux possui bém pode digitar yast2 profile-manager e serão afetadas por uma mudança de per-
uma ferramenta chamada SCPM, Sis- executar diretamente a ferramenta. fil, e a configuração atual será mantida.
tema de Configuração e Gerenciamento Perfis já existentes são exibidos na tela
de Perfis, que ajudar sua máquina a se principal do gerenciador de perfis. Você
adaptar rapidamente a um novo ambi- pode adicionar um novo perfil ou modi-
ente de trabalho. ficar a configuração existente. O botão
Options lhe permite modificar ou criar
Perfis Preservados grupos de recursos (veja a Figura 2).
O SCPM salva um conjunto completo de Sua configuração corrente é usada
parâmetros do sistema operacional para como ponto de partida quando você cria
cada ambiente de trabalho em perfis, um novo perfil. O SCPM cria um di-
permitindo a você restaurar as configu- retório com o nome do novo perfil sob
rações quando preciso. Os perfis de /var/lib/scpm/profiles/, e copia os ar-
usuários não são apenas compostos por quivos de configuração para os grupos Figura 1: O YaST2 o ajuda a configurar o SCPM.
arquivos de configuração,
mas também contém in- Tabela 1: Comandos do SCPM Listagem 1: o modo banco
formações adicionais tais Ativar o SCPM scpm enable de dados do SCPM
como quais serviços de- Criar um novo perfil scpm add nome_perfil #scpm db
vem estar habilitados ou Mudar de perfil scpm switch nome_perfil SCDB Utility (SCPM version 0.9.4)
desabilitados. Isto torna Salvar alterações no perfil atual scpm save load
possível fazer todas as Copiar um perfil scpm copy perfil_fonte perfil_destino create resource U
mudanças necessárias pa- Mostrar o perfil ativo scpm active /opt/tomcat/conf/server.xml file
ra adaptação a um novo Listar perfis disponíveis scpm list save
Recarregar configuração do perfil atual scpm reload quit
ambiente com um sim-

30 Agosto 2004 www.linuxmagazine.com.br


SCPM CAPA

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

Alguns grupos de recursos pré-defini- serviços estão sendo executados e certi- As alterações só podem ser aplicadas
dos são criados quando o SCPM é insta- fica-se de aplicar o status necessário. O ao perfil corrente, não importa se você
lado. Estes grupos cobrem a maioria das último passo da mudança de perfis é a usa o YaST ou a linha de comando para
configurações e incluem parâmetros de execução script de parada pós-inicializa- efetuá-las. Para fazer isso, alterar sua
rede (network), o serviço NTP para sin- ção (post-stop script). configuração de forma usual. Quando
cronização do relógio através da Internet Se você quiser especificar um perfil você estiver satisfeito, execute scpm save
(ntpd), o Firewall (SuSEfirewall2) e o durante a inicialização do computador, para gravá-las. O SCPM vai listar todas
automounter – montagem automática de basta especificar o parâmetro PROFILE= as alterações para que você as confirme
volumes (autofs). Se nenhuma destas profile_name no menu de boot para antes de aplicá-las ao seu perfil.
opções atende suas expectativas, você dizer ao SuSE para já carregar a configu- Se você precisa alterar arquivos de
pode definir seu próprio grupo. ração adequada. O script /etc/init.d/ configuração que estão sendo ignorados
No ambiente em que testamos a ferra- boot.scpm é o responsável por isso. pelo SCPM devido à sua configuração de
menta, o módulo para o YaST apresentou Se você muda regularmente de perfil recursos, pode fazer alterações manual-
mau funcionamento no indicador de sta- durante o boot, talvez queira adicionar mente no modo de base de dados intera-
tus. Ele insiste em informar que o ge- algumas entradas com parâmetros do tiva (veja Listagem1). O comando load é
renciador de perfis está desabilitado, kernel pré-configurados ao arquivo de extremamente importante, pois carrega o
independentemente do seu estado real. configuração do seu gerenciador de boot banco de dados na memória e o abre
Caso o usuário, de forma inadvertida, (no YaST2 em System/Bootloader Confi- para edição. Se você se esquecer de car-
tente inicializar o gerenciador de perfis guration). Adicione uma nova sessão regar o banco de dados e salvar suas
mais de uma vez, não ocorrerá nenhum com os mesmos parâmetros do kernel alterações, ele será sobrescrito com um
problema no SCPM, pois o banco de padrão e altere simplesmente o parâme- arquivo que conterá apenas estas alte-
dados e os templates não são sobre- tro PROFILE= para carregar o perfil req- rações recentes.
scritos nesta operação. O SCPM permite uisitado no próximo boot. Caso você sobrescreva seu banco de
ao usuário forçar a sobrescrita do banco dados de configuração por engano, não
de dados com o uso de um parâmetro na Linhas de Comando se desespere. O SCPM salva as três últi-
linha de comando. Mesmo sabendo que o YaST torna o tra- mas versões dele no diretório /var/lib/
Praticamente não há limites ao balho de configurar o SCPM muito mais scpm/scdb/. O banco de dados atual tem
aumento das capacidades do gerenciador fácil, seu uso contínuo para alterar um o nome scdb.db, os arquivos de backup
de perfis, já que você pode dizer ao perfil pode se tornar irritante, e a linha gerados pelo sistema têm alguns carac-
SCPM para executar scripts antes ou de comando é uma alternativa Caso você teres aleatórios adicionados ao nome
depois do início ou fim de uma mudança opte por utilizar a linha de comando, original. E é fácil criar um backup de um
de configuração (veja a Figura 3). certifique-se de que tem privilégios de perfil, você só vai precisar do arquivo
Quando você seleciona um perfil dife- root – afinal, você estará modificando a scdb.db, e de uma cópia do diretório
rente, o SCPM primeiro executa os dois configuração do sistema – e utilize um /var/lib/scpm/profiles. ■
scripts de parada, e o alerta no caso de pequeno conjunto de comandos simples
alterações não salvas. Então sistema exe- para executar a tarefa de forma rápida. A INFORMAÇÕES
cuta o script de pré-inicialização, busca Tabela 1 traz uma listagem dos coman- [1] SuSE Linux: http://www.suse.com/
no banco de dados os arquivos de con- dos mais importantes. Por exemplo, o
[2] YaST: http://www.suse.de/en/private/
figuração para o novo perfil e as aplica comando scpm switch ISDN habilita um
products/suse_linux/prof/yast.html
ao sistema. O SCPM verifica se os perfil chamado ISDN.

www.linuxmagazine.com.br Agosto 2004 31


CAPA Impressão em rede

Configurando o servidor de impressão CUPS

Impressione os Amigos
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

C
omputadores antigos que foram
substituídos por desktops novos
podem ser utilizados como servi-
dores de impressão de uma rede. Um
servidor de impressão não permite executado durante a inicialização. Se a Configuração através da
somente compartilhar uma impressora, sua distribuição favorita não inclui o interface WEB
mas também retira do seu desktop as CUPS, ou se você desejar atualizar para Ao contrário do antigo sistema LPRng, o
tarefas de impressão, permitindo que ele uma versão ainda não empacotada por CUPS foi baseado no Protocolo de
desempenhe suas tarefas na velocidade ela, é possível baixar o código-fonte no Impressão via Internet (IPP – Internet
máxima. Em redes domésticas, usuários site oficial do CUPS [1]. Printing Protocol, [3]), que é uma exten-
distintos usam impressoras distintas. Antes do surgimento do CUPS, as dis- são do protocolo HTTP atualmente uti-
Enquanto o pai da família imprime um e- tribuições costumavam trabalhar com lizado para transferir páginas através da
mail em uma impressora laser, seus fi- sistemas de impressão menos poderosos, Internet. Isso também explica porque o
lhos podem estar imprimindo fotos da como o BSD ou LPRng. Ambos eram bas- IPP utiliza um paradigma similar para a
última festa em uma impressora jato de tantes difíceis de serem integrados em transmissão de dados: Um computador,
tinta. Esse cenário já não existe na maio- um ambiente de rede. Caso você ainda conhecido como cliente CUPS, envia
ria das empresas, onde um servidor de tenha uma distribuição muito antiga, dados de impressão para um servidor
impressão como o CUPS (Common Unix seria conviente considerar a substituição CUPS. O daemon cupsd, que roda em
Printing System) permite que clientes do servidor de impressão pelo CUPS. A segundo plano no servidor, recebe esses
com sistemas operacionais da Microsoft, documentação do CUPS contém mais dados e os processa antes de enviá-los
Apple ou mesmo o Linux tenham acesso informações sobre esse assunto [2]. para a impressora. Em outras palavras o
a qualquer impressora na rede. Não é necessário modificar nenhum cupsd é o núcleo do sistema CUPS.
aplicativo para utilizar o CUPS, e seus Você pode acessar a interface de con-
Primeiros passos programas irão interagir com ele tanto de figuração do CUPS com qualquer
Dois passos são necessários para ter um forma nativa (como é o caso dos aplica- navegador, basta visitar o endereço
servidor CUPS disponível em uma rede. tivos do KDE) quanto através dos http://localhost:631. Se o CUPS está ro-
Primeiramente, você deverá configurar comandos de impressão System-V, ou dando em outra máquina, substitua
os computadores onde as impressoras Berkeley. Esses últimos são as ferramen- localhost pelo nome dessa máquina. Por
estão conectadas, estes serão os servi- tas de impressão de linha de comando lp segurança, o CUPS não permite acesso
dores de impressão. Essas máquinas ou lpr, normalmente invocados pelas externo à interface web, portanto a
podem ser sistemas desktop comuns ou aplicações. O CUPS traz versões com- princípio é necessário acessá-la no pró-
mesmo servidores dedicados, que não patíveis desses programas. Esses coman- prio computador que executa o servidor.
necessitam de interface gráfica (GUI). As dos são úteis quando se deseja enviar Se quiser permitir configuração remota,
distros atuais normalmente instalam o um arquivo para impressão utilizando será necessário alterar o arquivo de con-
CUPS por padrão e também fornecem apenas a linha de comando. O manual figuração /etc/cups/cupsd.conf. Procure
ferramentas de configuração. Geral- do usuário do CUPS [2] explica esses pelas seções entre as tags <Location
mente o CUPS é configurado para ser comandos em detalhes. /…> e </Location> (veja a Figura 1).

32 Agosto 2004 www.linuxmagazine.com.br


Impressão em rede CAPA

As tags Location contém detalhes de 4). Cada fila de


como o CUPS deverá controlar o acesso impressão tem um
às várias seções da interface de configu- nome diferente e
ração. <Location /> se refere ao menu configurações in-
principal, e <Location/ admin> se re- dividuais, e você
fere ao item Administration. Adicionar a pode atribuir múl-
linha Allow From 192.168.0.16 permitirá tiplas filas de im-
que o host 192.168.0.16 acesse a inter- pressão a uma ú-
face de configuração. Por razões de segu- nica interface ou
rança não se recomenda permitir que impressora. A in-
senhas sem criptografia trafeguem pela terface para a qual
rede. O FAQ do CUPS [4] apresenta uma os documentos de
visão geral sobre privilégios de acesso. uma fila de im-
A interface web permite que seus pressão são envi-
usuários gerenciem e configurem o CUPS ados é definida
(veja Figura 2). Os usuários podem tam- por um identifi-
bém visualizar a fila de impressão (o cador de recurso Figura 2: A página de boas-vindas da interface web do servidor CUPS.Para
comando lpstat pode ser usado para a (URI – Uniform visitá-la, é necessária a configuração correta das permissões de acesso.
mesma finalidade). De preferência uti- Resource Identifi-
lize o programa de configuração de er). A notação é similar à usada no Configuração da máquina
impressora que vem na sua distribuição, endereço de uma página na internet. Por cliente
por exemplo, o SuSE Linux possui a fer- exemplo: parallel:/dev/lp0 indica a pri- O segundo passo é configurar os com-
ramenta YaST. Existe também outro meira impressora conectada à uma porta putadores que vão utilizar a impressora
comando, o lpadmin, que possui algu- paralela, e usb:/dev/usb/lp0 para a pri- compartilhada (clientes). Existem várias
mas opções adicionais se comparado à meira impressora ligada à uma porta formas de fazer isso, porém o denomi-
interface web [2]. Caso você não tenha USB. Use o comando lpinfo -v para mos- nador comum reside no fato de que o
gostado de nenhum dos métodos de con- trar uma lista de todas as interfaces dis- daemon CUPS, cupsd, precisa estar em
figuração até aqui apresentados, você poníveis. Vamos voltar ao assunto das execução como um processo em se-
ainda pode optar por um dos muitos URIs mais tarde. gundo plano. Algumas distribuições só
softwares de configuração desenvolvidos Para criar uma nova fila de impressão, executam o daemon automaticamente
para esse fim. Por exemplo, versões selecione o item Administration na inter- durante a inicialização se uma impres-
recentes do KDE possuem um compo- face web e clique em Add Printer. sora já tiver sido configurada. No SuSE
nente especial para essa tarefa, encon- Informe o nome da fila de impressão no Linux 9, o YaST tem uma opção que per-
trado no Control Center (Centro de campo Name, lembrando-se de respeitar mite iniciar o servidor de impressão mais
Controle) dentro da sessão Hardware/ o limite máximo de 127 caracteres. Nas tarde. Para fazer isso, selecione Change/
Printers (veja Figura 3). telas seguintes você deve informar a Advanced e depois CUPS Server. Se o
Nos exemplos a seguir vamos utilizar a interface na qual a nova impressora está programa de configuração de sua distro
interface web. A opção Printers te dá conectada, qual é o modelo da impres- não permite isso, escreva um script de
acesso às filas de impressão (veja Figura sora e finalmente o filtro GhostScript inicialização do CUPS e o adicione aos
(que alguns cha- níveis de execução (runlevels) 3 e 5 no
mam de “driver”) diretório /etc/init.d/
apropriado.
Nos passos des- Anunciando a impressora
critos na seqüên- Você deve informar à máquina cliente
cia, assume-se que detalhes sobre a impressora remota, para
o CUPS tenha sido permitir ela seja encontrada na rede.
corretamente con- Para fazer isso, abra em seu navegador a
figurado no com- página de administração do servidor
putador ao qual a CUPS como mencionado anteriormente.
impressora está li- Nas propriedades da impressora, sele-
gada (o servidor cione IPP (Internet Printing Protocol)
de impressão), e como o dispositivo (Device). Então, dig-
que você tenha ite a URI da impressora remota, por
conseguido impri- exemplo: ipp://meuservidor/printers/mi-
mir uma página de nhaimpressora. Substitua meuservidor
teste, clicando em pelo nome ou endereço IP do servidor de
Figura 1:A diretiva Allow permite que o computador com o endereço IP Printers/Print Test impressão, e substitua minhaimpressora
192.168.0.16 acesse a interface web remotamente. Page. pelo nome da fila de impressão. Os pro-

www.linuxmagazine.com.br Agosto 2004 33


CAPA Impressão em rede

Figura 3: Detalhe da configuração do sistema de impressão no Centro de Figura 4: A entrada “Printers” na interface de administração do CUPS lista
Controle do KDE. Entre outras, há uma opção para reiniciar o daemon CUPS. todas as filas de impressão reconhecidas, incluindo suas URIs.

gramas de configuração fornecidos pela nome, ou preferencialmente o endereço pressora, e no pior caso seria possível a
maioria das distribuições Linux possuem IP, do servidor que processará todos os qualquer usuário da internet usar sua
opções similares (Figuras 5a e 5b mos- trabalhos de impressão (veja Figura 6). impressora. Por padrão, as versões mais
tram o SuSE Linux). Repita o procedi- O terceiro método talvez seja o mais recentes não divulgam mais a configu-
mento para cada fila de impressão conveniente. Cada daemon CUPS divul- ração via broadcast.
remota. Reconheço que este método de ga periodicamente sua configuração para Contudo, várias ferramentas de confi-
configuração é bastante complexo, prin- toda a rede. As máquinas clientes que guração permitem a correta definição
cipalmente quando se tem um grande recebem essas configurações imediata- das opções de broadcast. Novamente
número de impressoras. mente passam a utilizá-las. A principal vamos usar em nosso exemplo o YaST do
É de bom senso configurar o CUPS vantagem desse método reside na simpli- SuSE Linux. Os items que você necessita
para usar o servidor de impressão cidade da configuração, pois você só terá alterar estão em Change/Advanced/CUPS
remota para cada trabalho, de forma a que configurar a nova impressora no Server Settings (veja Figura 7). Para con-
evitar a execução do daemon do CUPS computador onde ela está conectada e a figurar manualmente o servidor, edite o
nas máquinas clientes. Para isso é rede toda poderá utilizá-la automatica- arquivo /etc/cups/cupsd.conf. Linhas que
necessário alterar o arquivo de configu- mente. Evidentemente, a divulgação da começam com o caracter # são consider-
ração /etc/cups/client.conf na linha que configuração via broadcast não é a adas comentários e portanto ignoradas
começa com ServerName. Remova o car- maneira mais segura de se trabalhar. pelo CUPS. Cada parâmetro ocupa uma
acter # no início da linha e após Server Qualquer computador pode receber estas linha e consiste em uma palavra chave e
Name insira um espaço e adicione o configurações e passar a utilizar a im- seu conteúdo. Consulte a referência [2]

Figura 5a: Configurando uma impressora remota no Suse Linux 8.2. Primeiro, Figura 5b: ...e a seguir informe o nome do servidor e a URI para completar a
diga ao YaST que você deseja acessar uma impresora remota via IPP... configuração.

34 Agosto 2004 www.linuxmagazine.com.br


Impressão em rede CAPA

para uma visão geral


sobre os parâmetros e Description:MyPrinter@MyServer:\
valores. O arquivo de :pr=|/usr/bin/lp -d MyPrinter:\
configuração do CUPS :op=daemon:\
também possui peque- :pd=/etc/cups/ppd/MyPrinter.ppd:
nas explicações sobre
os vários parâmetros, O Windows 2000 e Windows XP também
além de fornecer alguns possuem suporte nativo ao IPP. Qual-
bons exemplos. quer outra versão do Windows precisa
Para que o servidor do Samba versão 2.0.6 ou mais recente.
de impressão divulgue a Adicione as duas linhas abaixo à sessão
configuração via broad- [Global] do arquivo de configuração do
cast, você deve procurar samba, smb.conf:
pelas linhas do arquivo Figura 6:Após habilitar o redirecionamento, somente o computador
de configuração que co no IP 192.168.0.20 precisará de um servidor de impressão, e quaisquer printing=cups
meçam com Browse. trabalhos serão redirecionados a esta máquina. printcap name=cups
Por exemplo, o valor
para o parâmetro BrowseInterval define o Distribuições Linux recentes já devem
intervalo, em segundos, no qual o servi- Estranhos no ninho estar configuradas desta maneira por
dor deverá transmitir. O parâmetro Você também pode integrar qualquer sis- padrão. Clientes Windows vão precisar
BrowseAddress define o endereço de tema operacional que suporte IPP ao seu de um driver de impressora que seja
broadcast. Por exemplo, BrowseAddress sistema de impressão. Isso inclui o Mac capaz de gerar saída no formato Post-
192.168.0.255 envia as informações do OS X versão 10.2 ou superior. Se você Script, como o Apple LaserWriter.
servidor de impressão a todos os com- tem um Mac e quer compartilhar sua Se você preferir utilizar o driver origi-
putadores na subnet 192.168.0.0. impressora, simplesmente marque a nal da impressora, você deverá configu-
Uma alternativa últil ao broadcast é o opção Printer Sharing (Compart. de rar uma nova fila de impressão no seu
Polling. Nesse caso, é a máquina cliente Impressora) dentro do item Services no servidor CUPS. Selecione raw device
que toma a iniciativa de pedir a configu- painel Sharing (Compartilhamento), nas como o modelo da impressora. Essa
ração ao servidor de impressão. No preferências do sistema. Estas impresso- operação informará o CUPS para enviar
arquivo cupsd.conf na máquina cliente, ras serão apresentadas como Shared os dados vindos da máquina cliente dire-
configure o parâmetro BrowsePoll com o Printers na janela de impressão. tamente para a impressora. Note que
endereço IP do servidor. É possível con- No caso de versões mais antigas do desta forma os computadores sem o dri-
figurar múltiplas entradas com a palavra Mac OS, você vai precisar do pacote ver original da impressora não con-
chave BrowsePoll, permitindo que a netatalk. Adicione uma entrada para seguirão utilizá-la.
máquina cliente peça a configuração a cada impressora no arquivo de configu- A versão 2.2 do Samba, ou mais
múltiplos servidores de impressão. Ao ração papd.conf. O importante aqui é se recente, exporta o driver da impressora
habilitar o parâmetro BrowseRelay a certificar de que você possui o arquivo automaticamente quando um cliente
máquina cliente divulga as informações PPD correto para cada impressora dentro Windows tenta imprimir. O cupsaddsmb,
que aprendeu com os servidores para do diretório /etc/cups/ppd: como usado nos exemplos a seguir, pode
todas as máquinas da subnet local. interpretar somente dri-
vers Adobe PostScript
Reinicializando o daemon [6], ou então seus pró-
Após alterar o arquivo cupsd.conf, o dae- prios drivers. Os drivers
mon CUPS precisa ser reinicializado. O da Adobe só estão dis-
comando exato depende da distribuição poníveis no formato
que você estiver utilizando. Usuários do EXE, e você deverá pri-
SuSE Linux podem executar /etc/init.d/ meiro executar um pro-
cups restart. Se você tiver utilizado o grama, como por exem-
YaST para alterar a configuração, essa plo o Winzip para ex-
ferramenta já se encarrega de reiniciar o trair os arquivos. Arma-
daemon. A partir daí, a janela de zene-os no diretório
impressão do KDE apresentará a lista de /usr/share/cups/drivers.
impressoras prontas para uso (veja Todos os nomes dos
Figura 8). arquivos deverão estar
Se as opções acima não funcionam, em letras maiúsculas.
verifique os hostnames. Você deve adi- Figura 7: Habilitando broadcast no YaST. Em nosso exemplo, infor- Modifique a configu-
cioná-los ao arquivo /etc/hosts para que mações sobre as impressoras conectadas ao servidor são transmitidas ração do Samba de
a transmissão ocorra com sucesso. à subnet 192.168.0. forma a permitir que o

www.linuxmagazine.com.br Agosto 2004 35


CAPA Impressão em rede

servidor de arquivos exporte o driver da impressão em rede. O próximo passo


impressora. (em caso de dúvida, con- seria configurar permissões de acesso e
sulte a documentação do Samba para segurança. Por exemplo, é possível
mais detalhes de como fazer isso), e dê o atribuir quotas de impressão e senhas.
comando cupsaddsmb -U root -a para Talvez isso não faça muito sentido se
exportar sua impressora e colocar os dri- você estiver configurando o CUPS na
vers no servidor. Note que o cupsaddsmb rede local de sua casa, a menos que você
usa o usuário root para copiar os tenha uma cara impressora laser colorida
arquivos do driver utilizando o programa Figura 8:Após completar a configuração, a janela e deseje controlar sua utilização. Aos
smbclient. Certifique-se que o Samba de impressão do KDE deve ter uma lista das administradores de rede, recomendamos
tem permissão de acesso à essa conta. impressoras remotas e seus detalhes. uma leitura atenta da documentação.
O Samba também possui um novo As classes, conjuntos de impressoras,
back-end chamado smbspool que per- ipp://…, informe a URI na forma smb:// também fornecem opções úteis. Quando
mite às máquinas Linux utilizar impres- workgroup/server/sharename. Se a im- um trabalho de impressão é enviado
soras compartilhadas em máquinas pressora estiver conectada a uma má- para uma classe, o servidor CUPS
Windows. Sua distribuição já deve con- quina Windows NT ou Windows 9x que imprime esse trabalho na primeira
figurar esse back-end corretamente, mas exige uma senha de acesso, esta senha impressora livre dentro da classe. A
caso contrário, execute, como root, o deverá ser informada na URL, no interface Web apresenta uma forma sim-
seguinte comando : ln -s `which smbpool` seguinte formato smb://user:password ples e conveniente uma forma de config-
/usr/lib/cups/backend/smb. Isso permite @workgroup/server/sharename. urar essas classes.
que você configure a impressora da A documentação fornecida pela sua
mesma forma que uma impressora Opções avançadas distribuição também pode conter infor-
remota conectada a um servidor CUPS. Esse artigo aborda apenas a configuração mações preciosas para auxiliar na
Ao invés de utilizar um endereço como básica do CUPS como servidor de solução de problemas; caso contrário, dê
uma olhada no FAQ do CUPS [2]. Os
Cups Revelado “logs” armazenados em /var/log/cups
Imprimir é algo bastante simples, quando se maneira que a impressora os entenda. Infe- também podem conter dicas úteis. ■
pensa sobre o assunto. Um usuário seleciona lizmente, para fazer isso o aplicativo teria
o item Imprimir em um menu e o programa que falar a mesma liguagem de todas as INFORMAÇÕES
envia todos os dados para a impressora, que impressoras do mercado. Como isso é prati- [1] Projeto CUPS: http://www.cups.org
cria uma certa quantidade de papel com o camente impossível, existem filtros que [2] IPP: http://www.pwg.org/ipp/
conteúdo do arquivo. Mas certamente a fazem a tradução entre o spooler e a impres-
[3] CUPS FAQ: http://www.danka.de/
impressão não é algo tão simples quanto sora. Essas ferramentas (filtros) traduzem os printpro/faq.html
parece à primeira vista. dados para a linguagem da impressora antes
[4] Netatalk: http://netatalk.sourceforge.net
O primeiro problema que surge é a possibili- do envio. Em outras palavras, os aplicativos
[5] Adobe: http://www.adobe.com
dade de o computador travar durante o enviam seus dados em um formato padrão
processo de impressão. A maioria das para o spooler. O Linux utiliza o formato
impressoras simplesmente não possui PostScript, desenvolvido pela a Adobe [6] Tim Schürmann estudou Ciências
memória suficiente para suportar a como uma linguagem especial para trata- da Computação na Universidade de
impressão de um documento inteiro. Para mento gráfico. Impressoras PostScript
SOBRE O AUTOR

Dortmund, no oeste da Alemanha.


evitar esse problema, os sistemas de podem interpretar dados nesse formato
Ele trabalha com Engenharia de
impressão utilizam um programa separado, diretamente sem a necessidade de filtros.
Tráfego Assistida por Computador
chamado spooler, para prover o cache Programadores da comunidade Open Source
(Computer Aided Traffic Engineer-
necessário para o armazenamento das infor- desenvolveram o GhostScript, um programa
ing) e é autor de diversos artigos
mações a serem impressas na forma da bem que permite utilizar dados em formato Post-
sobre Linux e Software Livre, muitos
conhecida fila de impressão. O spooler moni- Script em impressoras que não o suportam.
tora a impressora e só envia a próxima parte O GhostScript utiliza o driver da impressora deles publicados na Linux Maga-
do trabalho de impressão quando a impres- para converter um documento no formato zine, com ênfase em soluções livres
sora está pronta para imprimir novamente. PostScript para a linguagem da impressora. para escritório.
No caso do CUPS, o daemon cupsd (também Quando o CUPS encontra uma impressora
conhecido como scheduler) é quem cuida que não suporta PostScript, o spooler sim-
dessa tarefa. plesmente invoca o GhostScript, que con- GLOSSÁRIO
A grande variedade de modelos de impres- verte os dados da maneira necessária. IPP: O Internet Printing Protocol foi criado
soras é um outro assunto. Cada um utiliza Os back-ends são o último link na cadeia. Um pelo Printer Working Group, e foi baseado na
especificação HTTP 1.1, mas o daemon escuta
uma sequência de controle distinta, ou seja, back-end representa uma porta como a USB
na porta 631 (ao invés da porta 80). Os dois
uma linguagem diferente. Um aplicativo que ou a porta paralela. Definições de back-end protocolos são muito próximos, e algumas
pretende enviar um documento para nos permitem adicionar novos tipos de inter- implementações IPP, como o CUPS, podem ser
impressão necessita formatar os dados de faces que ainda não existem atualmente. acessadas de modo nativo através de HTTP.

36 Agosto 2004 www.linuxmagazine.com.br


ANÁLISES Sun Java desktop

Sun Java Desktop

Café Fresco
O “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

A
intenção da Sun Microsystems ao cliente de e-mail é o
desenvolver o Sun Java Desktop Ximian Evolution, ver-
[1] foi emular de forma precisa a são 1.4.5. Esse software
aparência, o comportamento e a usabili- traz também agenda e
dade do Windows. O sistema é baseado livro de endereços, e é
no SuSE Linux Enterprise Edition [2]. descrito no menu como Email
and Calendar. O StarOffice 7 é o Se
Instalação Rápida conjunto de aplicativos de escritório, compara-
Nossos testes em laboratório transcor- para as aplicações padrão de texto, do com outras
reram sem problemas, mesmo quando planilha, etc. Para leitura e impressão de distribuições, o Sun Java Desktop, com
foi utilizado um laptop antigo. Embora a arquivos PDF o Acrobat Reader 5.0 é uti- seu desktop Gnome estável, porém an-
Sun tenha feito alterações no programa lizado, enquanto que o gerenciamento tigo, tem muito pouco a oferecer para
de instalação da SuSE, o YaST, seus prin- de projetos fica por conta do Planner poder ser considerado o melhor na cate-
cipais recursos foram preservados. (também conhecido como MrProject). A goria. Essa afirmação não prejudica em
Após a instalação e a reinicialização, o ferramenta escolhida para tratamento de nada a usabilidade da distribuição nas
YaST configura os aplicativos, solicita ao imagens é o Gimp, em sua versão 1.3.18. aplicações básicas. Usuários inexperien-
usuário a configuração de senhas de root Como criadora do Java, a Sun faz tes em Linux provavelmente não terão
e de usuário, configura a interface grá- menção à sua linguagem de programa- problemas durante a instalação e o desk-
fica e em seguida o ambiente de rede. ção ao chamar sua distribuição de “Sun top traz tudo que se pode necessitar para
Após o login é apresentado ao usuário Java Desktop”. Contudo, existem apenas iniciar o trabalho na nova distribuição,
um ambiente desktop baseado no Gno- cinco aplicações Java pré-instaladas, com o mínimo de esforço. Desde o iní-
me versão 2.2, o que infelizmente não é descontando o próprio ambiente Java. cio, a maioria dos usuários vai se sentir
uma grande inovação tecnológica. A Sun Um programa gráfico para apresentação em casa, devido à clareza da estrutura de
modificou o menu e os nomes dos pro- chamado JGraphpad, o jDictionay, que é menus e à boa integração que a Sun deu
gramas para deixar o sistema mais ami- um dicionário online, uma ferramenta de aos elementos do desktop. ■
gável para usuários inexperientes. análise de rede, e um player multimídia.
O Mozilla 1.4 é o navegador padrão, E, por último, um editor de texto Java, o INFORMAÇÕES
descrito no menu como Web Browser. O jEdit. É muito pouco para justificar o uso
[1] Sun Java Desktop: http://www.sun.com/
do nome Java! software/javadesktopsystem/index.html
Cada licença custa
[2] Suse Enterprise Server:
100 dólares (por má-
http://www.suse.de/en/business/
quina), e inclui um products/server/sles/index.html
ano de suporte téc-
nico e 60 dias de
suporte à instalação, Frank Wieduwilt estu-
fornecidos pela Sun. dou história, e vem tra-
SOBRE O AUTOR

balhando há alguns
Como só o StarOffice
anos como autor téc-
7.0 custa 80 dólares, nico freelance para
sendo um aplicativo várias editoras em
“stand-alone”, o im- Berlim, Alemanha,
pacto da política de escrevendo manuais de
preços aplicada pela soluções de banco de dados. Frank é um
escritor regular da Linux Magazine espe-
Sun no seu “Java
cializado em assuntos SOHO como pro-
Desktop System” é
gramas gráficos e office.
Figura 1: Sun Java Desktop. amenizado.

38 Agosto 2004 www.linuxmagazine.com.br


ANÁLISES MandrakeMove

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

MandrakeMove
Sem 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

A
lgumas distribuições podem ini- O hardware exigido pelo Mandrake- méstico e em pequenos escritórios. O
cializar e rodar diretamente do Move é um Pentium (II ou superior), menu não oferece compiladores ou ou-
CD-ROM, sem instalar nada no AMD K-6, Duron ou Athlon e 256 tras ferramentas de programação, mas o
disco rígido. Ultimamente essa forma de Megabytes de memória RAM (o mínimo sistema não foi feito para isso. A maioria
empacotar o Linux se tornou popular é de 128 Megabytes.) A Mandrakesoft da documentação disponível no CD é a
como o desktop Open Source definitivo, também recomenda um leitor de CD- mesma do Mandarke Linux 9.2. Um
ou uma excelente solução para demon- ROM com velocidade não menor que capítulo é dedicado a quem quer mudar
strações. As pessoas podem experimen- 32X. Não é necessário um disco rígido. O do Windows para o Linux.
tar uma distribuição diferente todos os único requisito da chave USB é que ela
dias, basta inserir o CD no drive e depois necessita ser formata com o sistema de Inicialização
removê-lo para retornar ao sistema arquivos VFAT. Nós não encontramos O boot é gráfico. Pressionar F1 exibe
padrão da máquina. problemas com um Pico Disk Easy2, de algumas informações gerais – mas não
O Mandrake oferece dois CDs no 128 Mbytes. Mas a lista de discussão da muitas – sobre como conduzir o sistema
modelo acima citado, baseados no Mandrake menciona diversos problemas durante essa fase. Por exemplo, ele
Mandrake Linux 9.2, chamados Mandra- com outras chaves. A imagem ISO foi explica como passar algumas opções ao
keMove (www.mandrakesoft.com/produ- testada numa configuração mínima kernel, mas não diz quais estão dispo-
cts/mandrakemove). O primeiro pode ser (AMD K6-2 de 350 Mhz, 128 Mbytes de níveis. É possível abrir outro terminal,
baixado gratuitamente da internet, o RAM) e num computador um pouco rodando o busybox, pressionando Ctrl +
segundo vem em diversas versões mais potente (AMD Duron de 900 Mhz, Alt + Fn. A inicialização leva menos de
comercializadas. As duas mais populares 256 Mbytes de RAM). um minuto em um PC de 350 MHZ. Tor-
custam 69.9 e 129 Euros respectiva- Como esperado e confirmado na estru- ná-la tão rápida quanto possível foi um
mente. Em contraste à versão gratuita, as tura do menu mostrado na Figura 1, o dos principais objetivos durante o desen-
caixinhas contém “chaveirinhos” USB de MandrakeMove é indicado para uso do- volvimento. Ou seja, evitar perguntas
128 ou 256 MB e documentação adi- desnecessárias sempre que possível.
cional, em parte específica ao Man- Embora isso possa significar o não
drakeMove (quase nada dela pode aproveitamento do hardware ao má-
ser encontrado online). Os usuários ximo, faz sentido. Um Live-CD como
que adquirirem as caixinhas vão este é quase sempre usado por perí-
encontrar software adicional, não- odos curtos de tempo para realizar
GPL, como drivers para hardware da tarefas simples e/ou por usuários
nVidia, Real Player e Flash Player. inexperientes. Nos passos seguintes
A principal vantagem da versão o usuário deve escolher o idioma
comercial é que ela pode armazenar (Inglês, Alemão, Francês, Italiano,
arquivos e dados de configuração no Holandês e Espanhol são disponí-
chaveiro USB. Na versão gratuita, veis) e aceitar a licença. A detecção
mostrada nesse artigo e disponibi- do hardware é feita logo após o
lizada online em 9 de dezembro de Figura 1: O menu de sistema do Mandrake: todas as coisas usuário fornecer um login e senha.
2003, você precisa reconfigurar tudo necessárias para trabalhar no escritório, ou apreciar músi- Uma vez que o sistema tenha sido
a cada vez que reinicializar o micro. cas e vídeo em casa. inicializado, tanto as ferramentas

40 Agosto 2004 www.linuxmagazine.com.br


MandrakeMove ANÁLISES

Figura 2: O MandrakeMove utiliza a mesma interface de gerenciamento de Figura 3: Apontar e clicar: navegando por arquivos Ogg Vorbis no disco rígido
hardware do Mandrake 9.2. e os reproduzindo com o Totem.

padrão de gerenciamento do Mandrake Gnome, Meeting, o Media Player Totem e As ferramentas e os procedimentos
quanto a linha de comando estão dis- muitos outros estão inclusos. básicos de acesso à internet são os mes-
poníveis. Quase todo o hardware de nos- Tudo roda tão rapidamente quanto mos tipicamente oferecidos pelo KDE,
sos dois sistemas de teste foi detectado, numa instalação normal do Linux no como o discador KPPP, cliente de e-mail
configurado e utilizado sem problemas. mesmo computador. O Open Office.org KMail e navegador Konqueror. Como tí-
Todos os drives de CD e disquetes gan- funciona bem, exceto pelo fato de que nhamos apenas acesso discado, usamos
haram ícones no desktop, isto só não sempre reclama da falta do Java Runtime o KPPP para fazer uma conexão. Obvia-
funcionou com a chave USB. Environment (ambiente de execução mente, conexões via ASDSL e LAN
O computador K-6 é uma máquina Java) no diretório /usr/lib/jdk-1.4.1.0.1. tambem são possíveis. Alguns arquivos
somente Linux com várias partições Caso seja necessário se tornar root por de sistema, geralmente criados durante
ext3. Todas elas foram montadas auto- qualquer razão, basta digitar su-, sem uma instalação padrão, não estavam pre-
maticamente. Tanto o drive C: do sis- senha. Tivemos de fazer isto para sentes nos locais esperados: o KPPP
tema Duron (que tem somente Win- desmontar o disquete. Ele é auto-mon- reclamou da falta dos arquivos
dows) quanto a chave USB (ambos tado, mas a opção umount do menu con- /dev/modem e /etc/resolv.conf. Recado
VFAT) foram montados sob /mnt/win- textual do ícone não funciona. para a MandrakeSoft: alterar o KPPP
dows. O som funcionou corretamente, O CD do MandrakeMove pode ser para evitar as mensagens de erro, ou
desde os bips do sistema até a repro- removido do drive durante o uso, para oferecer mensagens diferentes, pode evi-
dução de CDs e arquivos Ogg Vorbis. O que você possa inserir outro disco. Mas tar confusão por parte dos usuários.
mesmo se aplica à impressão com uma antes de fazer isso você precisará parar o Apesar disso, com um modem externo
Epson Stylus e uma HP Deskjet 890. daemon do CUPS, o que pode ser feito nós estávamos conectados e navegando
Usando o KPPP o modem funcionou em uma janelinha pop-up. Sempre que em poucos minutos.
como sempre no Linux: nos conectamos parávamos de ouvir música, o sistema
imediatamente com um modem 3Com nos lembrava de colocar o CD do Man- Conclusão
US. Robotics externo. Não tivemos suce- drakeMove de volta no drive. Mesmo com os pequenos defeitos des-
sso, como esperado, com um Win- critos acima, o MandrakeMove oferece
modem anônimo interno. um belo e completo desktop de bolso.
Contudo, existem outros CDs mais
O Desktop desenvolvidos, com as mesmas carac-
O MandrakeMove é configurado por terísticas ou um pouco melhores, como o
padrão para o fuso horário norte-ameri- Knoppix. A versão para download é cer-
cano. Se este for mesmo o seu fuso tudo tamente a melhor escolha se o usuário já
bem, mas você não será avisado de que está familiarizado com o modo Man-
deve modificar as configurações caso drake de ser, ou se você quiser praticar
contrário. Esta é a única falha num primeiro antes de instalar o Mandrake
ambiente desktop que é bem implemen- 9.2 em um ambiente de produção.
tado, completo e fácil de usar. A Por outro lado, a versão para down-
plataforma base é o KDE 3.1, e aplica- load é a melhor demonstração possível
tivos populares como o Gimp 1.2.5, Figura 4: Os parâmetros de conexão para vários da versão comercial, mesmo sem a ace-
OpenOffice.org 1.1 Gnucash, Mr.Project, provedores já estão pré-configurados no KPPP. leração de hardware e a chave USB. ■

www.linuxmagazine.com.br Agosto 2004 41


TUTORIAL Dicas do KDE

Usando o KDE 3.2

Tesouros Ocultos
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

B
arras de ferramentas transpar- que envolve mergul-
entes, cursores com sombra, mu- har nas profundezas do
dança da resolução de vídeo com servidor X, encontrar os
um simples clique – algumas das novi- diretórios corretos, copiar os
dades do KDE3.2 não estão visíveis à arquivos com as fontes para eles, e
primeira vista. Elas fazem seu dia-a-dia então rodar alguns scripts. Mas tudo isso
diante do desktop mais fácil, ou ao me- é brincadeira de criança no KDE3.2.
nos mais bonito. Vale a pena procurá-las, A nova abordagem usa um “KIO
ao invés de simplesmente esperar para slave” especial, peço desculpas aos
tropeçar nelas algum dia. experts no KDE que podem achar isto TrueType, basta que
demasiadamente óbvio, executado den- você tenha um velho CD do Corel Draw,
FontWizardry (Gerenciador tro do Konqueror. Ao digitar fonts:/ na ou qualquer outro com milhares fontes,
de fontes) barra de endereços surgem duas pastas: e arraste os arquivos .ttf do CD para a
A equipe de desenvolvedores do KDE fez System (Sistema) para gerenciamento pasta apropriada. Você precisará da
uma contribuição monstro ao sistema de global das fontes instaladas, e Personal senha de root se quiser copiar os arqui-
gerenciamento de fontes, geralmente o (Pessoal) para fontes usadas apenas pelo vos para a pasta Sistema.
pior pesadelo do usuário Linux comum, usuário atual. Para instalar novas fontes
Ponteiros sem limites
Você tem inveja de seus colegas usuários
do Windows, com aqueles cursores do
mouse multicoloridos, com sombras ou
até mesmo animados?
Se sim, é hora de virar o jogo. Com o
KDE3.2 (e o XFree86 versão 4.3.x, inclu-
so na maioria das distribuições Linux
recentes) é muito fácil ter a última moda
em ponteiros para o mouse. E em con-
traste com o concorrente, no X os pon-
teiros do mouse podem usar mais de 256
cores ao mesmo tempo, além de efeitos
como transparências e sombras.
Para definir o quão extravagante você
quer seu ponteiro do mouse, selecione o
item Peripherals/Mouse (Periféricos/-
Mouse) no Centro de Controle do KDE. A
aba Cursor Theme (Tema do Cursor) traz
uma seleção de temas (veja a Figura 1); e
modelos adicionais (junto com milhares
de outros itens para enfeitar seu desk-
top) estão disponíveis no site KDE Look
Figura 1: Mudar a aparência do ponteiro do mouse nunca foi tão fácil. [1]. Entretanto, você precisará reiniciar o

42 Agosto 2004 www.linuxmagazine.com.br


Dicas do KDE TUTORIAL

Cuidado com a carteira dades, e armazenar outros dados confi-


Os usuários que frequentam a web cons- denciais nesta pasta. O gerenciador de
tumam ter um problema: alguns web- janelas permite que a carteira seja
sites são protegidos por senhas, e não fechada facilmente, mesmo que as pas-
permitem que o usuário escolha sua tas com os dados das carteiras estejam
própria senha. A maioria das pessoas abertas. Basta selecionar o ícone da
não estão preparadas ou simplesmente carteira que você deseja fechar, clicar
não conseguem memorizar tantas se- com o botão direito do mouse e sele-
nhas diferentes. O KDE3.2 disponibiliza cione a opção Fechar (Close) no menu
Figura 2: O KWallet funciona como um cofre para um repositório, um local seguro para (veja Figura 2).
suas senhas. guardar todas as suas senhas, chamado
Kwallet, sua carteira digital. Pastas Virtuais no cliente de
servidor X (isto é, encerre sua sessão e O KWallet usa uma senha mestra para e-mail
faça login novamente) para que a mu- proteger os dados armazenados e é Se você recebe uma grande quantidade
dança tenha efeito. responsável por gerenciar as senhas dos de e-mail diariamente, provavelmente
websites para o navegador Konqueror, tem um sistema de filtros automáticos
Alterando a resolução do além de senhas para outros aplicativos para barrar o spam e separar sua cor-
vídeo como o Kopete (cliente para mensagens respondência do lixo. Mas como encon-
Usuários agora podem alterar a re- instantâneas). O KWallet usa criptografia trar todas as mensagens enviadas por
solução de vídeo sem medo de errar e de chave simétrica para guardar as se- determinada pessoa caso você tenha
sem a necessidade de reiniciar o servidor nhas de forma segura em seu diretório optado por separar as mensagens não
gráfico. Tudo o que você precisa fazer é pessoal. Certifique-se de escolher sua por remetente, mas por projeto?.
selecionar a opção Peripherals/Display senha mestra com muito cuidado: ela A forma tradicional é fazer uma busca
(Periféricos/Tela) no Centro de Controle deve conter pelo me- em todas as suas pastas de
do KDE. O item Size & Orientation nos oito caracteres, e-mail. Infelizmente, este
(Tamanho & Orientação) permite girar nunca deve ser uma tipo de operação pode con-
ou espelhar a tela intervalos de 90 graus. palavra comum (do sumir muito tempo. No
Isto poder ser útil em apresentações. tipo encontrado em Figura 3: As úteis “pastas de KDE 3.2 o KMail introduz
Se você necessita alterar a resolução dicionários) e, de pre- busca” do KMail não ocupam “pastas de busca” (search
freqüentemente, pode adicionar ao ferência, conter uma espaço em disco. folders) para facilitar esta
painel um item de acesso rápido, encon- mistura de números, operação. Usá-las é muito
trado em System/More Programs/Screen letras e símbolos. simples: primeiro, vamos fazer uma
Resize & Rotate (Sistema/Mais Progra- Pode ser que você precise dar uma busca comum, por exemplo: “Remetente”
mas/Redimensionar e Rotacionar tela) olhada na sua carteira digital de tempos contém “joe@example.com”.
no menu K no painel. em tempos, para adicionar novas senhas Agora vem a parte inteligente: Digite
manualmente, por exemplo. A ferra- os termos da busca no campo Search
Transparente menta de gerenciamento de senhas se Folder para mostrar os resultados como
Os painéis (também conhecidos como encontra no menu K, item Settings/Man- uma pasta do Kmail (Figura 3). Men-
“barras”) cinzas do KDE, são muito criti- age Digital Wallet (Configurações/Geren- sagens recém chegadas que satisfaçam
cados por serem “feios”, ou por ocu- ciar carteira digital). Isto exibe um ícone os critérios da busca são adicionadas
parem muito espaço. No KDE 3.1 eles já no painel que dá acesso a todas as automaticamente a esta pasta. Como são
ocupavam menos espaço, e o KDE 3.2 carteiras disponíveis. pastas virtuais, apagá-las não remove as
adiciona a capacidade de transparência. A carteira digital padrão é chamada mensagens nelas contidas, e você pode
Para deixar um painel transparente, kdewallet. Como qualquer outra carteira, criar quantas quiser, já que não con-
clique com o botão direito em um espaço ela contém uma pasta para guardar somem espaço em disco. ■
vazio nele e selecione no menu pop-up o dados de formulários (para os nave-
item Configure Panel/Appearance (Con- gradores, por exemplo), uma pasta para INFORMAÇÕES
figurar Painel/Aparência). Marque a senhas e ainda outra para aplicações
opção Enable Transparency (Habilitar específicas. Você pode criar uma pasta [1] KDE Look: http://www.kde-look.org
transparências) e pronto. pessoal para atender às suas necessi-

GLOSSÁRIO
Transparência Alfa: Imagens e ícones trans- KIO slave: Componente do KDE responsável ador web Konqueror,os KIO slaves são usados
parentes tem um “valor alfa”(ou canal alfa) pela entrada e saída de dados (KDE para exibir dados de forma “legível”. Os KIO
para cada pixel, além dos valores para ver- Input/Output Slaves). Pode ser acessado Slaves também podem ser usados para
melho, verde e azul (RGB). Ele diz quanto do através da URL correta, como os prefixos mostrar o conteúdo de um CD de áudio (dig-
fundo deve ser visível, e seu valor geralmente http://, ftp://, file:/ ou font:/. Em um aplica- ite audiocd:/), ou para configuração do sis-
é expresso como um percentual de opacidade. tivo como o gerenciador de arquivos e naveg- tema (settings:/).

www.linuxmagazine.com.br Agosto 2004 43


TUTORIAL SuperKaramba

Embeleze seu desktop KDE com o SuperKaramba e Phyton

Python pra Karamba


U
ma vez que você começa a usar o O SuperKaramba lhe ajuda transformar o background de seu desktop KDE em
SuperKaramba [2], para adicionar
um relógio ou um MP3 Player ao algo mais útil. Agora, com uma ajudinha da linguagem Python, você pode
background de seu desktop KDE [1],
provavelmente você vai começar a querer definir exatamente como vai ser aquele recurso extra de que você precisa.
mais. A boa notícia é que você pode usar
POR HAGEN HÖPFNER
a linguagem de programação Python para
adicionar uma ampla gama de recursos
interativos aos temas do Karamba. Por outro arquivo ao diretório do tema. Ele Agora abra o arquivo do tema, small_text
exemplo, você pode criar menus, modi- deve ter o mesmo nome que o tema, e é _xmms.theme, selecionando Open... na
ficar textos dinamicamente e adicionar reconhecido pela extensão .py. Os desen- janela principal do SuperKaramba, para
suporte a drag & drop aos seus temas. volvedores do Super Karamba recomen- traduzir o código fonte Python em byte-
O conceito é o seguinte: Quando um dam que você começe com um modelo code Python (veja o Quadro 1). Se você
evento do KDE ocorre (por exemplo. ao [6], e a partir daí modifique-o. Veja um não consegue ver o diretório oculto
mover o mouse, iniciar um programa, ou link para um exemplo no item [4], no .superkaramba, na caixa de diálogo de
selecionar uma opção em um menu), o quadro Info ao final deste artigo. seleção do tema, aperte [F8]. Como o
programa responsável por tais eventos Descompacte-o com o comando: compilador mostra mensagens de erro e
emite um sinal, que é recebido e inter- debug na saída padrão (stdout), faz sen-
pretado por uma função. Naturalmente, tar - C ~/.superkaramba - U tido iniciar o SuperKaramba manual-
o SuperKaramba pode interpretar even- xjvf U small_text_xmms.tar.bz2 mente digitando superkaramba (talvez
tos deste tipo. A API Python do você tenha que especificar o caminho
SuperKaramba [5], permite que você no diretório ~/.superkaramba (talvez completo até o binário) em um terminal
especifique o que deve ocorrer. você precise criar o diretório antes). Isto como o konsole. Por exemplo, uma men-
vai criar um diretório chamado small_ sagem como “Minha extensão em
Encantando a serpente text_xmms contendo o tema. Agora Python foi carregada!,” é gerada pelo
Se nós quisermos usar Python e adi- copie o arquivo modelo, template.py, seguinte comando:
cionar mais funcionalidades aos temas para este diretório. Certifique-se de
[1], nós não precisamos modificar o mudar o nome do arquivo para o mesmo print "Minha extensão em PythonU
código existente. Em vez disso, basta nome do tema: foi carregada!"
adicionar um
cp template.py U na última linha do modelo. Isto permite
~/.superkaramba/U que eu me assegure de que a compilação
small_text_xmms/small_text_xmmsU do arquivo Python foi feita corretamente.
.py Infelizmente, não foi isto o que aconte-
ceu em minha instalação do Suse Linux
9, pois a distribuição configura incorreta-
mente algumas das variáveis de ambi-
ente usadas pelo Python. Neste
caso, para resolver o problema
digite os comandos abaixo no
console antes de executar o
SuperKaramba:

export PYTHONPATH=/usr/libU
/python2.3/
export PYTHONHOME=/usr/lib/U
python2.3/

Arrastar & Soltar


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

44 Agosto 2004 www.linuxmagazine.com.br


SuperKaramba TUTORIAL

permite que os usuários arrastem um ber duas informações, como indicado na Estamos usando o caractere \n (nova
arquivo do Konqueror para o tocador de Tabela 1: um apontador para o widget e - linha) como separador. A função mais
MP3 integrado. Por enquanto, queremos no caso de arquivos - uma lista de nome interna na expressão acima, str(), per-
que o XMMS toque os arquivos. de arquivo em múltiplas linhas na var- mite que conteúdo de dropText seja
A Listagem 1 mostra nossa solução Se iável dropText, onde cada linha repre- manipulado como uma string, enquanto
você não quiser desenvolver o arquivo senta um arquivo. string.rstrip() remove todos os caracteres
modelo, simplesmente sobrescreva o Infelizmente, cada nome de arquivo é não padronizados à direita.
arquivo small_text_xmms.py com o con- precedido pela palavra chave file:. Como Agora que temos as URLs individuais,
teúdo da listagem. o XMMS não sabe como lidar com URLs podemos usar um loop for para remover
Para permitir que um tema do Super do tipo file:/caminho/para/arquivo.mp3, o prefixo file:. Vamos escreverer as URLs
Karamba suporte drag & drop, o tema mas espera um nome de arquivo no for- na variável filename uma por uma, com:
precisa ser inicializado. A melhor ma- mato /caminho/para/arquivo.mp3, te-
neira de se fazer isto é criar um widget mos que remover os dados supérfluos string.split(nomedoarquivo, U
do SuperKaramba (veja Glossário nesta das linhas armazenadas em dropText "file:", 1)
página). Isto emite um sinal que será antes de passá-los ao XMMS para que os
recebido por um dos “receptores de nomes de arquivo sejam reconhecidos. Para ser mais preciso, dividimos o con-
eventos” do SuperKaramba, a função teúdo de filename em duas partes na
callback initWidget(). Podemos digitar: Perdendo peso primeira (1) instância do separador file:.
Nós vamos precisar das funções de Se não fizéssemos isso quaisquer
def initWidget(widget): manipulação de strings [7] acessíveis arquivos MP3 que contivessem a string
através de, import string. A próxima file: seria cortado em pedaços. O resul-
para definir na linha seguinte a reação etapa é definir uma variável vazia tado é uma lista com duas entradas, que
quando usarmos o tema como fundo: chamada xmms_filename = “” onde ire- armazenamos em uma outra variável,
mos armazenar a lista “limpa” de nomes temp. O primeiros elemento, temp[0],
karamba.acceptDrops(widget) de arquivos. Nós podemos então chamar contêm apenas uma string vazia depois
string.split() para dividir a lista de URLs da primeira operação de divisão.
Neste caso, queremos que o widget de dropText em seus componentes: Para cada iteração do loop, adi-
aceite que itens sejam soltos sobre ele. O cionamos o nome do arquivo ao con-
SuperKaramba usa o itemDropped() para string.split(string.U teúdo da variável xmms_filename. Como
processar o sinal. A função espera rece- rstrip(str (dropText)),"\n") o ele é o segundo elemento da lista temp,
podemos acessá-lo como temp[1]:
Tabela 1 - Receptores de sinais do SuperKaramba
xmms_filename=xmms_U
Função Chamada quando...
filename+ " \" "+ string.U
initWidget(widget) Um widget SuperKaramba é criado.
rstrip(U temp[1 ]) +" \ ""
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 GLOSSÁRIO
pressionado. API: Uma Application Programming Interface
widgetMouseMoved(widget, x, y, button) O mouse é movido dentro do tema. x e y indicam as coordenadas atuais (Interface de Programação de Aplicativos),
(relativas ao tema); button indica o botão do mouse que foi acionado,e define um número de funções dentro de um
seu status (pressionado ou não). software que outros programas escritos em
menuItemClicked(widget, menu, id) Um item de menu é selecionado. Isto informa o manipulador do menu uma linguagem específica podem chamar.
(veja o texto) e o item de menu que foi clicado (id). Em nosso caso, aplicativos em Python podem
menuOptionChanged(widget, key,value) Um item no menu de configuração do tema é selecionado. key indica o usar as funções implementadas no
manipulador do item do menu,e value o novo valor (verdadeiro ou falso). SuperKaramba.
meterClicked(widget, meter, button) Um mostrador é clicado. meter indica o manipulador,button o botão do
stdout: A saída padrão especifica para onde
mouse que foi clicado.
os aplicativos Linux devem enviar o texto de
commandOutput(widget, pid, output) Um programa é chamado por executeInteractive(),desde que isto gere
saída.Tipicamente é a tela, mas você pode
saída em stdout. pid é o process ID do programa,output contém o texto
redirecionar esta saída para um arquivo ou
enviado a stdout.
uma impressora. Além do stdout, o Linux
itemDropped(widget, dropText) Objetos (por exemplo ícones) são soltos sobre o tema através de uma
também possui uma saída chamada stderror
operação de arrastar e soltar. dropText contém o texto do objeto (por
(tipicamente também o monitor), para onde
exemplo,sua URL,veja a seção Arrastar & Soltar).
todas as mensagens de erro são enviadas, e
StartupAdded(widget, startup) O KDE executa um novo aplicativo. Quando a inicialização do programa é
stdin, a entrada de dados padrão, que geral-
completada,um sinal startupRemoved() é emitido,seguido por taskAdded().
mente é o teclado.
startupRemoved(widget, task) Veja startupAdded().
taskAdded(widget, task) Veja startupAdded(). Widget: Termo genérico para os elementos
de controle de uma interface gráfica. Estes
taskRemoved(widget, task) O programa foi encerrado.
incluem janelas, botões, menus, checkboxes,
activeTaskChanged(widget, task) Um outro aplicativo é movido para o primeiro plano.
abas, barras de rolagem, etc.

www.linuxmagazine.com.br Agosto 2004 45


TUTORIAL SuperKaramba

Para permitir que os XMMS toque mp3 cáveis no arquivo .theme, então vamos zena um menu com dois itens em
com espaços nos nomes dos arquivos, usar a API Python para fazer isto. my_menu. O primeiros deles...
coloque-os entre aspas. Como o Python Para experimentar, substitua o con-
também usa aspas para separar strings, teúdo do arquivo ~/.superkaramba/ karamba.addMenuItem(widget, U
temos que isolar o caractere usando “\””, small_text_xmms/small_text_xmms.py selectmenu , "konqueror", U
um procedimento razoavelmente com- com o conteúdo da Listagem 2. Minhas "konqueror.png")
plexo. Se xmms_filename realmente desculpas aos desenvolvedores profis-
incluir aspas, isolá-las com \ diz ao sionais pela gambiarra no uso das var- ...cria uma entrada para o navegador
XMMS que elas devem ser consideradas iáveis globais select_menu e my_menu, konqueror no selectmenu. O ícone kon-
literalmente. Após armazenar a lista com usadas apenas para simplificar as coisas. queror.png, que também tem que ser
os nomes dos arquivos em xmms_file- select_menu tem inicialmente valor 0 armazenado no mesmo diretório do
name, podemos usar: (zero) e representará mais tarde o object tema, completa o item do menu. O
ID do menu. my_menu [[],[]] cria um segundo addMenuItem() faz a mesma
karamba.execute("xmms"+ U “contâiner” para armazenamento de coisa, adicionando uma entrada para o
xmms_filename) uma lista com dois elementos. Esta lista navegador Opera:
será usada mais tarde pelo programa
para dizer ao XMMS para abrir o arquivo para mapear os itens do menu ao IDs karamba.addMenuItem(widget, U
MP3 que foi solto sobre nosso widget. atribuídos a eles. selectmenu , "opera", U
Em resposta à abertura da janela do "opera.png")
O menu, por favor tema, initWidget() adiciona um menu:
Adicionar outro menu para complemen- Naturalmente, no momento ainda falta a
tar o tradicional menu acionado com o selectmenu= karamba.createU funcionalidade. Para permitir que adi-
botão direito do mouse é outra forma Menu(widget) cionemos funções aos itens do menu,
interessante de incrementar um tema. precisamos de um meio para distinguir
Pode ser um menu para lançamento O número interno atribuído pelo sistema os itens individuais. Podemos armazenar
rápido de aplicativos que é acessado é armazenado na variável global select as palavras konqueror ou opera no iden-
quando você dá um duplo-clique com o menu. Isto é chamado de “índice”, tificador criado por addMenuItem() em
botão esquerdo do mouse, ou um clique porque o número é usado para identi- my_menu. O conteúdo da variável se
com o botão do meio. Seria deselegante ficar internamente o menu. A, um tanto parece com isto:
definir um número infinito de áreas cli- quanto longa, expressão a seguir arma-
(['konqueror', -22], ['opera',U
Listagem 1 : Tema com suporte a drag & drop -23])
01 import karamba
Agora temos um menu. Naturalmente
02 import string
ele não será exibido imediatamente, ape-
03
nas quando você der um duplo-clique
04 def initWidget(widget):
com o botão esquerdo do mouse sobre o
05 karamba.acceptDrops(widget)
tema do SuperKaramba, isto é, sempre
06
que um sinal widgetClicked(widget, x, y,
07 def itemDropped(widget, dropText):
button) é gerados.
08 xmms_filename=""
Nós não vamos avaliar as coordenadas
09 for filename in string.split(string.rstrip(str(dropText)),"\n"):
x-y e o número do botão do mouse pres-
10
sionado, mas se fizéssemos, poderíamos
11 temp=string.split(filename,"file:", 1)
tratar áreas diferentes dentro de tema de
12 xmms_filename=xmms_filename + " \"" + U
forma distinta, ou distinguir entre os
string.rstrip(temp[1]) + "\""
botões esquerdo, direito e central do
14 karamba.execute("xmms" + xmms_filename)
mouse. Poderíamos até mesmo mapear
15
um menu ao botão direito do mouse,
16 print "Minha extensão Python foi carregada!"
mas como um clique com este botão

GLOSSÁRIO
Variável global: O paradigma de progra- globais são visíveis em todo o programa. grama espera pela abertura de um arquivo ,
mação orientada a objetos tende a encapsu- Então, se você atribuir a cor verde à variável, não pode executar mais nenhumas outra
lar funções e variáveis em objetos. Por todos os botões que você criar serão verdes. tarefa.Threads permitem que um programa
exemplo, definir em uma variável a cor de um execute mmúltiplas tarefas simultanea-
botão facilita a tarefa de criar botões de Multithreaded: Normalmente programas mente. Em vez de sentar-se e esperar até o
várias cores, já que a variável é armazenada não são capazes de executar mais de uma arquivo abrir, um programa aproveitaria este
no objeto “botão”. Em contraste, variáveis tarefa por vez. Por exemplo, enquanto o pro- tempo em uma outra thread.

46 Agosto 2004 www.linuxmagazine.com.br


SuperKaramba TUTORIAL

Temas pra Karamba


Se você quer apenas usar o SuperKaramba, Espaço”girando no seu desktop. O ponto de
sem se aventurar pelo mundo da progra- partida para encontrar novos temas é o já
mação, temas não faltam. Desde itens úteis, conhecido KDE-Look.org [11], lotado de
como o conjunto de utilitários TDE (The ícones, papéis de parede, temas e outros
Desktop Enhancements) que engloba cal- itens para o seu desktop KDE. Já os desen-
endário, indicador de volvedores do
espaço em disco, monitor SuperKaramba estão tra-
de logs, bloco de notas, balhando no
estatísticas sobre a SuperKaramba Theme
Figura 1: Menus criados com Python. máquina, lista de usuários Archive [12], que pretende
“logados”e estado da sua ser o repositório definitivo
sobre um tema abre o menu do Super conexão à rede, até inutili- de temas para o pro-
Karamba, isto não faz sentido na prática. dades absolutas, como o grama. Apesar de ainda
Station V, que mostra a estar em construção e
Note que cliques do mouse sempre
estação espacial do filme contar com poucos temas,
executam a ação definida no arquivo
“2001: Uma Odisséia no o site merece uma visita.
.theme. Em nosso caso, um clique no
relógio abre as preferências do relógio e
nosso menu (Figura 1). nadas (relativas ao tema) onde ocorreu o usa id para fornecer um identificador
Para mostrar o menu na tela, pre- clique do mouse. Se estas coordenadas para o item do menu, e menu para nome
cisamos do identificador, que é arma- não forem conhecidas, o menu surge no do item propriamente dito. Como o sis-
zenado na variável selectmenu. Podemos canto superior esquerdo (coordenadas tema determina os identificadores de
usar global selectmenu para recuperar 0,0) do tema. forma arbitrária, não há uma maneira de
esta informação do espaço global de Quando o usuário seleciona um item fácil de adivinhá-los, mas podemos nos
dados. A função karamba.popupMenu do menu, o SuperKaramba reage a este livrar rapidamente do problema se os
(widget, selectmenu, x, y) permite que sinal chamando a função menuItem- armazenarmos nas variáveis globais
coloquemos o menu nas mesmas coorde- Clicked(widget, menu, id). Esta função my_menu, para os itens do menu, e
selectmenu, para o menu propriamente
Listagem 2: Interagindo com menus dito. Como nós temos apenas um menu,
01 import karamba não precisamos nos preocupar com esta
02 diferença. Ou seja, a única coisa de que
03 selectmenu=0 precisamos é da variável main_ menu,
04 my_menu=[[],[]] armazenada no espaço global de dados.
05 O laço for index in my_menu: (linha
06 def initWidget(widget): 20) nos permite iterar através de todos os
07 global selectmenu elementos da variável my_menu e
08 global my_menu mapear as listas nela contidas à variável
09 selectmenu=karamba.createMenu(widget) index, uma por uma. Durante cada iter-
10 my_menu=[ ação, precisamos verificar se o identifi-
11 "konqueror", karamba.addMenuItem(widget, selectmenu, "konqueror", U cador do item do menu que foi fornecido
"konqueror.png")], pelo sinal confere com o número arma-
12 ["opera", karamba.addMenuItem(widget, selectmenu, "opera", U zenado no segundo item de index:
"opera.png")]
13 If index[1]==id;
14 def widgetClicked(widget, x, y, button):
15 global selectmenu Após encontrarmos o par em my_menu
16 karamba.popupMenu(widget, selectmenu, x, y) que corresponde ao item clicado, temos
17 que verificar qual dos navegadores ele
18 def menuItemClicked(widget, menu, id): representa. Se for o Konqueror...
19 global my_menu
20 for index in my_menu: if index[0] == 'konqueror':
21 if index[1] == id:
22 if index[0] == 'konqueror': …o chamamos com karamba.execute
23 karamba.execute("konqueror")
(“konqueror”); caso contrário usamos:
24 elif index[0] == 'opera':
25 karamba.execute("opera")
elif index[0]=='opera':
26
27 print "Minha extensão Python foi carregada!"
para ver se o Opera foi o selecionado.

www.linuxmagazine.com.br Agosto 2004 47


TUTORIAL SuperKaramba

Se quisermos juntar o conteúdo das Python forneça um grande número de


Listagens 1 e 2 em um único arquivo, funções adicionais, as quais são docu-
podemos eliminar algumas linhas. Por mentadas (veja o item [5] no box INFO
exemplo, precisamos apenas de uma ao final do artigo), existem alguns
única instância do comando import poucos problemas com a API. O maior
karamba e um único comando print no deles é que ela não pode lidar com sen-
final. Também precisaremos juntar o sores dinâmicos (veja [1]). Se também
conteúdo dos blocos def initWidget(wid- quiséssemos adicionar ao nosso tema a Figura 2: A TuxBar é um dos temas mais populares
get): (linha 4 na listagem 1, linha 6 na capacidade de trocar entre múltiplos sen-
listagem 2). em uma única função. Se sores, conseguiríamos clicar para atu- INFORMAÇÕES
uma destas funções estiver faltando após alizar o texto, porém seríamos incapazes
você abrir o tema, basta apagar o de mudá-los automaticamente. [1] Introdução ao SuperKaramba: Hagen
arquivo .pyc, que é criado automatica- Há outro problema. Python só pode Höpfner,“Karamba on the Desktop”,
mente no seu diretório de temas. acessar os elementos criados por ele Linux Magazine, Edição 41
mesmo. Caso você pretenda utilizar um [2] SuperKaramba:
Nos limites do reino das elemento de texto para interagir com http://netdragon.sourceforge.net/
cobras uma função, você precisa criá-lo com a [3] Primeiros passos com Python:
Embora seja incrivelmente simples função createText() do Python. Textos http://www.python.org/doc/Intros.html
realizar tarefas complexas como drag & definidos no arquivo .theme não podem [4] Exemplo de tema:
drop no SuperKaramba, e embora a API ser manipulados com a API Python. ■ http://wwwiti.cs.uni-magdeburg.de/
~hoepfner/download.html
O que é Python? [5] Documentação da API Python do
SuperKaramba:
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 em
Python: http://www.python.org/doc/2.3.
3/lib/module-string.html
Se você já conhece outra linguagem de pro- que serão executados se uma condição por [8] Loops e condições em Python:
gramação, talvez não fique muito entusias- preenchida. C utiliza chaves ({ }) para isto, e http://www.python.org/doc/2.3.3/ref/
mado ao descobrir que deverá aprender uma nos Shell Scripts para o Bash um bloco inici- compound.html
nova linguagem só para fazer o Super ado com o comando if_then termina com o
[9] Biblioteca de referência sobre Python:
Karamba feliz. Mas para os iniciantes em comando fi. Pascal utiliza as palavras chave
http://www.python.org/doc/2.3.3/lib/lib.html
programação, Python tem algumas vanta- Begin e End. Python não utiliza nenhum dos
gens, sendo uma linguagem universal. Um métodos citados acima: Ao invés de uma [10] Página oficial do SuperKaramba:
dos principais fatores é que Python combina marcação específica, você simplesmente http://nedtdragon.sf.net
os três principais paradigmas de progra- indenta o código. [11] KDE Look: http://www.kde-look.org/
mação atuais em um só. Python pode ser uti- Assim, duas linhas sucessivas com o mesmo [12] SuperKaramba Theme Archive:
lizado como uma linguagem orientada a nível de indentação formam um bloco de http://www.superkaramba.com/
objeto, como C++ ou Java, ou como uma lin- código. Se uma segunda linha começa mais [13] Python: http://www.python.org/
guagem orientada a procedimentos, como à esquerda que a primeira, ela não pertence
Pascal ou C. Ao mesmo tempo, é uma lin- [14] GDesklets: gdesklets.gnomedesktop.org/
ao bloco. Um sinal de dois pontos ao final de
guagem de script como PHP ou Perl, e seus uma linha indica um novo nível, como pode
programas sequer precisam ser compilados ser visto nas listagens de código deste
pelo usuário.Também suporta múltipla he- artigo. Após uma linha com a palavra-chave Hagen Höpfner é for-
rança, coneta-se a bancos de dados e pode def, linhas consecutivas com o mesmo nível mado em Ciências da
usar vários protocolos de comunicação. de indentação são consideradas como parte Computação, e mem-
SOBRE O AUTOR

Assim como Java, o código-fonte de um pro- da definição da função. bro da equipe cientí-
grama em Python é convertido em bytecode fica da Universidade
A exigência de indentação garante que
pelo compilador. Este código também é exe- Otto-von-Guericke
código em Python será sempre bem estrutu-
cutado por uma máquina virtual, mas em Magdeburg, na
rado e fácil de ler, o que nem sempre acon-
Python é bem mais rápido que Java. Alemanha. Em seu tempo livre ele
tece em outras linguagens. Mas isto pode
gosta de fuçar na sua coleção de com-
Se vocé está migrando de Python para outra distrair os iniciantes e levá-los a cometer
putadores com Linux, mas também
linguagem de programação, há uma coisa erros de indentação, pois uma função com dirige sua energia creativa para a com-
sobre a qual você precisa saber: como fun- nível errado fica simplesmente fora do con- posição de letras e melodias. Hagen
ciona a definição de blocos de código. Blocos texto do bloco onde reside. Fique atento ao também toca guitarra em uma banda
são utilizados para definir trechos de código criar suas próprias extensões! chamada “Gute Frage!?”

48 Agosto 2004 www.linuxmagazine.com.br


TUTORIAL MySQL Administrator

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

Domando o MySQL
A MySQL AB disponibilizou uma ver- oteca Gtkmm (GTK--) [2] foi usada no
desenvolvimento da interface gráfica
são preliminar de uma interface grá- da versão Linux.
A parceria da MySQL como a
fica para administração de bancos SAP poderia levá-lo a pensar que
o MYSQL Administrator é
de dados, que permite a configu-
baseado no SAPDB Database
ração e monitoramento remoto Manager, mas Mike Zinner
nos garantiu que se trata de
de servidores MySQL. Mais fer- um “software completamente
novo”. Quando pedimos que
ramentas estão sendo desen- comparasse o MySQL Admin-
istrator com o Enterprise Ma-
volvidas, para modelagem de nager do MS-SQL, ele explicou
que “no momento o MA disponi-
dados e criação de clusters biliza apenas algumas das funções
que o Enterprise Manager possui.
POR SANDRO ZIC
Precisaremos esperar pelo término do
desenvolvimento das interfaces gráficas
para o MySQL ao longo deste ano para

A
MySQL AB, fabricante do banco não haviam adicionado suporte à cone- ter um conjunto completo de recursos.”
de dados MySQL, está desenvol- xões via SSH. O novo conjunto de pro-
vendo um conjunto de ferramen- gramas também inclui recursos para Monitorando a CPU
tas gráficas para tornar mais fácil a vida monitoramento de usuários, estado do O recurso de monitoração da CPU imple-
do administrador MySQL que encontra sistema, backup e recuperação de dados, mentados no MA merece destaque. Em
dificuldade no uso de comandos via ter- e visualização de “logs”. Versões prelim- tempo real, gráficos dinâmicos exibem
minal. O conjunto completo de ferra- inares (beta) para Windows e Linux já se valores críticos que podem incluir uso de
mentas, que deve estar disponível dentro encontram disponíveis para download, e memória ou acesso ao disco rígido, e o
de um ano, facilitará tarefas como insta- a versão para Mac OS X deverá estar número de conexões no servidor de
lação, configuração, e monitoramento de pronta até o final do ano. banco de dados (veja Figura 1). Este
clusters MySQL para replicação e balan- recurso permite ao administrador ver e
ceamento de carga. Assim como o pró- Sem o peso do Java reconhecer gargalos de forma indepen-
prio MySQL, suas ferramentas gráficas Neste artigo, testamos a versão para dente do tipo de tabela usada (MyISAM
serão disponibilizadas sob a licença GPL. Linux num sistema Suse 9.0 com KDE ou InnoDB). O MA pode disponibilizar
A MySQL anunciou sua linha de pro- 3.1.4, e uma versão para Windows em ao administrador estatísticas de um con-
dutos gráficos em janeiro deste ano, uma máquina com o Windows XP Pro- junto de variáveis, tais como bytes_sent e
quando demonstrou o MySQL Adminis- fessional. Como nossa versão de teste foi bytes_received, que indicam o volume de
trator [1] em Nova York, na Linux World uma distribuição pré-alpha extraída dire- tráfego de rede.
Expo. A Linux Magazine teve acesso ao tamente dos desenvolvedores, nós espe- Administradores de banco de dados
novo software, e conversou com o princi- rávamos encontrar alguns problemas. Na experientes podem definir quais va-
pal desenvolvedor, Mike Zinner, sobre as verdade, o software demonstrou ser ex- riáveis desejam exibir para analisar um
ferramentas para administração que a cepcionalmente estável em ambas as servidor de forma mais adequada às suas
MySQL AB tem produzido. plataformas, e a instalação foi realizada necessidades. Usando uma fórmula sim-
MySQL Administrator (MA) é um con- sem maiores surpresas ou dificuldades. ples eles podem, por exemplo, criar um
sole gráfico para administração de ban- O software inicializou de forma muito gráfico que exiba o número de bytes
cos de dados MySQL versão 4 ou rápida em ambos os sistemas. Contras- transmitidos por segundo através da
superior. O MA é capaz de abrir uma tando com alguns utilitários gráficos rede. Para criar este gráfico, basta sele-
conexão não criptografada, ou crip- baseados em Java, que inicializam deva- cionar na lista de variáveis, usando o
tografada com SSL, com servidores gar, o MA utiliza bibliotecas em C. A mouse, Bytes_sent, clicar com o botão
MySQL. Quando a Linux Magazine teve interface para ambiente Windows foi direito no campo valor e digitar a fór-
acesso ao software, os desenvolvedores desenvolvida em Delphi VCL, e a bibli- mula onde aparece ˆBytes_sent.

50 Agosto 2004 www.linuxmagazine.com.br


MySQL Administrator TUTORIAL

O caractere ^ simboliza o intervalo de Recursos Úteis Na versão que testamos, o compo-


tempo no MA que, por padrão, é “por Além da praticidade na administração de nente para monitoração de bancos de
segundo”. Esta notação é reconhecida tarefas, o MA traz recursos para geren- dados replicados não estava implemen-
pelo MA que passa a exibir, de forma ciamento de rotinas de backup. Para tado. Contudo, fomos informados de que
dinâmica, os valores assumidos por esta criar um backup, o administrador pri- ele fornece apenas uma visão geral do
variável em um gráfico. Outras fórmulas meiramente cria uma referência, nave- cluster; um aplicativo separado, chama-
mais complexas podem ser geradas da gando na interface e selecionando dentre do de Replication Manager, estará dispo-
mesma forma. Por exemplo, se você pre- os objetos do banco de dados, aquilo que nível para o gerenciamento de clusters
cisar de um gráfico dos cache hits, deve armazenado no arquivo de backup. no futuro. Misterioso, Mike Zinner não
mostrados como um porcentual das Esta implementação permite que, desde quis detalhar o tipo de administração
solicitações totais ao cache, atualizado um banco de dados completo, ou mesmo que será suportado pelo Replication
no intervalo de um segundo: uma única tabela, até uma simples co- Manager. Entretanto, Mike revelou que
luna, possam ser selecionados e o back- gostaria de construir um cenário de repli-
(^[Qcache_hits]/(^[Qcache_U up executado. Um outro recurso, que cação que fosse simples e adicionou,
hits]+^[QCache_inserts]+^[U permitirá aos administradores definir ta- “nós demonstraremos algo realmente
QCache_not_cached]))*100 refas e pré-programar sua execução, en- bom em abril, durante a conferência dos
contra-se em fase de desenvolvimento. usuários do MySQL”.
Esta forma de implementação abre uma A atenção aos detalhes faz do MA uma
nova perspectiva de monitoração para os ferramenta muito útil no dia-a-dia. Por Planejando mais Ferramentas
profissionais experientes em adminis- exemplo, o recurso que permite separar Workbench é o codinome de outro pro-
tração de bancos de dados. entradas de erros, ou o log de consultas jeto em andamento. A primeira versão
lentas em uma janela separadas. Isso estável deverá ser similar ao DB Designer
Gerenciamento de Usuários permite ao administrador filtrar rapida- 4 [4]. Os administradores poderão,
O MA integra o gerenciamento de mente os registros críticos, acelerando a através do Workbench, criar e modificar
usuários de forma muito mais conve- análise do log. Basta um simples clique estruturas do banco de dados em uma
niente do que qualquer outro programa em um evento registrado e o MA exibirá interface amigável, que exibirá, por
de sua categoria. Clique em User Admi- rapidamente o referido contexto no exemplo, os relacionamentos (Foreign
nistration para mostrar uma lista com- arquivo de log. Keys). Usuários do MySQL esperam com
pleta de usuários no lado esquerdo da Explicações sobre as várias opções curiosidade para saber se o Workbench”
janela (veja a Figura 2). Você pode, com encontradas no arquivo de global de disponibilizará uma ferramenta de
o mouse, selecionar um usuário e visu- configuração do servidor (my.cnf) po- debug para stored procedures, como a
alizar o nome dos servidores aos quais dem ser encontradas no MA. Junto com que deve ser implementada na versão
ele possui acesso. O administrador pode, opção que habilita e desabilita o modo 5.0 do MySQL.
da mesma forma, selecionar um servidor de debug há um aviso de que o banco de Mike Zinner nos disse que “Work-
e registrar novos usuários, incluindo se- dados trabalhará de forma mais lenta bench e Query Analyser suportarão o
nhas, dados para contato, uma descrição neste modo, pois todas as atividades gerenciamento de stored procedures. O
da função do usuário ou até mesmo adi- serão registradas. No programa também MA fornecerá apenas uma simples visão
cionar uma foto. existem várias dicas úteis para usuários geral, assim como o módulo de repli-
O MySQL possibilita o controle de inexperientes ou principiantes. cação, permitindo ao administrador abrir
acesso por servidor, banco de dados,
tabela ou coluna. Páginas especiais no
MySQL Administrator permitem aos
administradores gerenciar cada um
destes grupos de controle. As funções
estão disponíveis em páginas de rápido
acesso. Cada página tem, à sua direita,
uma lista de privilégios. O administrador
que estiver operando o MA poderá
atribuir privilégios aos usuários de forma
simples, basta usar o velho truque do
“arrastar e soltar” arrastando os privilé-
gios até o usuário que deve recebê-los. O
uso deste recurso permite ao admin-
istrador restringir o acesso de usuários
aos servidores de banco de dados. O
administrador pode, por exemplo, definir
limites tais como o número máximo de Figura 1: Monitoramento do comportamento de um sistema. Esta tela exibe uma visão geral do estado
conexões por hora. da memória em um servidor.

www.linuxmagazine.com.br Agosto 2004 51


TUTORIAL MySQL Administrator

o Workbench ou o Query Analyzer para


trabalhar em uma stored procedure
específica.” O Query Analyser suporta
execução de consultas e manipulação
dos resultados, além da análise de con-
sultas individuais e stored procedures
baseada em declarações “EXPLAIN”.
Mais detalhes sobre este recurso foram
apresentados na “MySQL Conference”.
O “MySQL Administrator” marca o iní-
cio de uma nova família de produtos que
diminuirá o esforço necessário para a
boa administração de bancos de dados.
Esta família de produtos está dividida em
duas linhas: as ferramentas administrati-
vas, compostas pelo MA, ainda em cons-
trução, e ferramentas para desenvol- Figura 3: Visão geral de um cluster MySQL. Nós podem ser adicionados e removidos facilmente com o
vimento como o Workbench, o Query uso do mouse.
Analyser e o Replication Manager.
Administrator, especialmente em função a ferramenta para gerenciamento de
Conjunto Completo de suas características de usabilidade e usuários economiza tempo e trabalho de
A MySQL AB possui como objetivo a monitoração de sistema, mesmo em digitação. Os iniciantes podem acessar a
produção de versões estáveis destes condições críticas. Boas novas para os seção Best Practices [6] onde encontrarão
aplicativos até o final de 2004. O ciclo de administradores que preferem a velha conselhos sobre ajustes para melhor
desenvolvimento incluirá versões Alpha, interface de linha de comando: você desempenho e administração eficiente
Beta e Gamma que caminharão progres- pode acessar um shell de dentro do pro- de seus bancos de dados. Já os admin-
sivamente rumo a uma versão estável, grama e navegar entre vários consoles. istradores experientes provavelmente
em linha com o desenvolvimento do O MA é uma proposta interessante por serão beneficiados com ferramentas
Banco de Dados MySQL. A longo prazo, apresentar novos horizontes à adminis- futuras como o Replication Manager. ■
a empresa pretende substituir o “MySQL tração de bancos de dados gratuitos, sem
Control Center [5]”. Mesmo os mais fer- se esquecer dos administradores ini- INFORMAÇÕES
vorosos defensores do shell provavel- ciantes. O grande conjunto de parâme-
mente não aguentarão esperar para ter tros possibilita a configuração de um [1] MySQL Administrator: http://www.mysql.
em suas mãos uma versão do MySQL servidor MySQL nos mínimos detalhes, e 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

Sandro Zic brinca com


computadores desde
a infância, quando
SOBRE O AUTOR

escreveu seus primei-


ros programas em
BASIC. Ele se dedica
profissionalmente ao
desenvolvimento de software desde
1998, e possui conhecimentos em
Linux, Perl, PHP, Servlets Java, JSP, XML
e sistemas de bancos de dados como
MySQL, PostgreSQL e Oracle. Atual-
Figura 2: Tela de gerenciamento de usuários. O administrador pode designar quais usuários terão acesso
mente é CEO da ZZ/OSS.
ao servidor. Esta tela foi capturada de uma versão do MA para Linux.

52 Agosto 2004 www.linuxmagazine.com.br


Gerenciamento de Pacotes TUTORIAL

Gerenciamento de pacotes no Slackware

Embrulha pra viagem!


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

o fez, e em dois dias o número de down- sistema por conta do administrador. Por
loads foi tão grande que derrubou o exemplo, a autenticação do sistema pode
servidor ftp. Nascia o Slackware Linux. ser feita via LDAP, PAM ou outro sistema
de autenticação qualquer, e muitas dis-
Os pacotes .tgz tribuições colocam um ou mais destes
No Slackware trabalha-se sempre tendo como um requisito para outras partes do
em mente a filosofia KISS: ”Keep It Sim- sistema. Isto, no entanto, não é essen-
ple, Stupid!” (mantenha-o simples, estú- cial: a autora deste artigo, por exemplo,
pido!). O sistema de gerenciamento de não utiliza nenhum dos sistemas de au-
pacotes também é assim. Os pacotes são, tenticação citados. Então, quem pode
em sua essência, a estrutura completa dizer o que realmente é dependência ou
que será instalada: a árvore de dire- não é o usuário da distribuição.
tórios, contendo os binários, documen- Aqui há, entretanto, algumas alternati-
tação e arquivos de configuração. É vas. Primeiro, se você acredita que não
realmente um arquivo concatenado (tar) pode viver sem que o sistema calcule as
e compactado (gzip). dependências para você, deve procurar
Experimente pegar algum pacote para uma ferramenta chamada swaret [3],
o Slackware e expandi-lo com tar zxvf. disponível no diretório extra do Slack-
Se isto for feito no diretório raiz, metade ware, ou alternativas como o slapt-get
do trabalho de instalação está feito. [4] e SlackUpdate [5].
Porém não basta só isto. Junto à estru- Porém, se você quer manter tudo sob
tura do pacote está o diretório install/, seu controle, a solução é bastante sim-
que contém os arquivos slack-desc e ples: se determinado programa não
o do-install.sh. O do-install.sh é uti- estiver funcionando e você desconfiar
lizado quando há a necessidade que falta alguma dependência para ele,
de alguma configuração extra: utilize o ldd. Digite ldd programa, e se
adicionar um usuário, con- aparecer alguma linha indicando um
figurar uma permissão de “not found”, pesquise o arquivo Mani-
acesso especial em al- fest, no CD do Slackware, para saber se
gum arquivo, criar ele está em algum pacote. Se não, pro-
links, etc. Já o slack- cure no Google e instale o software que
desc contém a des- fornece aquela biblioteca. Assim, o pro-
crição do pacote. blema das dependências será resolvido.

Dependências entre pacotes GLOSSÁRIO

E
m 1993, um ano após o lança- Antes de realmente começarmos a por as SLS: abreviação de “Soft Landing System”ou
mento da versão 1.0 do Linux, um mãos no teclado, é importante fazer “Softlanding Linux System”. Foi a primeira
estudante universitário chamado algumas considerações. Não, os pacotes tentativa – ou segunda, juntamente com a
Patrick Volkerding começou a utilizar do Slackware não checam dependências. MCC (Manchester Computing Center distri-
uma das primeiras versões do sistema Para alguns esta é uma desvantagem, bution) – de organizar um sistema GNU/Li-
organizado em forma de distribuição, o para outros uma vantagem. Cada um nux no formato que conhecemos hoje como
SLS, para um trabalho. Percebendo que encara de uma maneira, e os usuários distribuição. Ambas foram criadas em 1992. O
várias coisas poderiam ser melhoradas, são tão diferentes quanto são diferentes Slackware (1993) nasceu do esforço em me-
lhorar a SLS, mas foi muito além, sendo a
Patrick realizou diversas modificações as múltiplas distribuições Linux.
mais antiga distribuição ainda disponível,
no sistema. Ao terminá-las, mostrou-as Em defesa da falta de checagem de
uma vez que tanto SLS quanto MCC deixa-
ao seu orientador, que o incentivou a dependências, o Slackware tem a carac-
ram de existir.
disponibilizar o sistema na internet. Ele terística de deixar todas as decisões do

www.linuxmagazine.com.br Agosto 2004 53


TUTORIAL Gerenciamento de Pacotes

O princípio de tudo: em todos eles. É claro que


pkgtool existe uma saída mais ele-
Você já se encontrou com ele, gante do que sair recompi-
mas nem notou: o pkgtool é a lando o código em todas as
ferramenta utilizada durante a máquinas: você pode con-
instalação do Slackware. Se figurar e compilar o soft-
você executá-la, ela irá lhe ware como quiser em uma
pedir para escolher o que quer máquina qualquer, fazer
fazer: instalar ou remover paco- um pacote e instalá-lo em
tes, ou verificar os já instala- todas as outras. Há duas
dos. Por exemplo, se você exe- formas de se fazer isto: com
cutá-la dentro do diretório checkinstall ou makepkg
slackware/k/ do CD-ROM do No diretório extra/ da
Slackware, que contém os árvore do Slackware existe
pacotes com fontes do kernel, o programa checkinstall. Ele
ele lhe mostrará as opções indi- Figura 1: A estrutura de um pacote para o Slackware. é uma ferramenta que pode
cadas na Figura 2. criar pacotes nos formatos
Desta forma você pode nave- tgz, deb ou rpm. Funciona
gar pelos pacotes instalados, da seguinte maneira: com
selecionar outros para instalar, os fontes de um programa
ou mostrar informações sobre que você deseja instalar, e-
cada pacote e decidir se quer xecute os passos usuais
instalá-lo ou não. para a instalação, ou seja,
./configure --opções && ma-
Instalando ou ke. A forma certa de fazer
atualizando pacotes isso é indicar no arquivo
O pkgtool tem vários “irmão- ./configure os diretórios
zinhos”. O principal deles é o corretos para binários (--
installpkg, que instala um paco- bindir=/usr/bin), páginas
te: ele o descompacta, executa de manual (man pages: --
o script do-install.sh e cria um Figura 2: O utilitário pkgtool. mandir=/usr/man), confi-
arquivo no diretório /var/log/ guração (--confdir=/etc/ e-
packages/ com o nome do pa- xemplo), diretório de bi-
cote, contendo sua descrição e bliotecas (--libdir=/usr/ lib
a lista dos arquivos instalados. - muito importante), etc.
Desta forma, você tem um reg- Rode ./configure -help para
istro de todos os pacotes de seu ver uma lista com todas as
sistema e pode procurar fa- opções disponíveis.
cilmente o nome de um pacote Após configurar tudo cor-
em particular, a qual pacote retamente, inicie o processo
pertence certo arquivo, etc. de compilação digitando
Uma outra ferramenta muito make. Depois de tudo pron-
útil é o upgradepkg. Em qual- to, substitua o comando
quer mirror do Slackware você Figura 3: O registro de um pacote em /var/log/packages. make install por checkin-
encontrará o diretório patches/ stall. O programa vai lhe
packages/, onde estão as correções Removendo pacotes fazer algumas perguntas e criar um
(patches) dos pacotes da distribuição. Muita gente acha que no Slackware não pacote no formato tgz. O nome do
Logo após uma instalação, é sempre há outra maneira de remover um pacote arquivo será composto pelo nome do
recomendável dar uma olhada neste a não ser “na unha”. Isto é mais um programa, a versão, a arquitetura e o
diretório e verificar quais atualizações mito: os pacotes instalados podem ser release, separados por hífen.
são aplicáveis ao seu sistema. facilmente removidos utilizando-se o co- Já disse que um pacote do Slackware é
Com estas atualizações em mãos, uti- mando removepkg. Simples e indolor. formado pelos arquivos necessários ao
lize o comando upgradepkg para atu- software, um script de pós- instalação e
alizar os pacotes. Também é recomen- Criando pacotes um arquivo de informações sobre o
dável se inscrever na lista de discussão Agora vem a parte mais interessante da pacote, o slack-desc. O checkinstall cria,
slackware-security [5] para ser informado coisa: fazer seus próprios pacotes. Di- ao invés do slack-desc, um arquivo cha-
via e-mail sempre que um pacote for atu- gamos que você tenha uma dúzia de mado description. É preciso corrigir isto
alizado por questões de segurança. servidores, e queira instalar um software se quisermos um pacote “oficial”.

54 Agosto 2004 www.linuxmagazine.com.br


Gerenciamento de Pacotes TUTORIAL

O arquivo do-install.sh, Assim temos controle total


que é um shell script e tam- sobre todos os pacotes instala-
bém não é específico do dos. É uma excelente idéia
Slackware, foi preparado criar um pacote sempre que
para trabalhar com o slack- for preciso instalar um soft-
desc. Para criar um pacote no ware, já que assim você terá a-
formato oficial devemos cesso fácil às informações
modificá-lo. Não realizar tais sobre todos os arquivos que
alterações não implica no foram colocados em seu sis-
mal funcionamento do paco- tema. Com o comando grep
te, apenas irá deixá-lo no for- Figura 4: Criando um pacote com o checkinstall. "arquivo" /var/log/packages/*
mato “incorreto”. você descobre a qual pacote
Dissemos anteriormente pertence arquivo. Tudo isso
que um pacote é um arquivo sem perder de vista a filosofia
concatenado e compactado de simplicidade que governa o
no formato tar e gzip. Pode- Slackware.
mos extrair seu conteúdo As instruções de empacota-
com o comando tar zxvf ou mento mostradas neste artigo
usar uma outra ferramenta servem para a maioria dos
da turma do pkgtool, o softwares, mas sabemos que
explodepkg. No diretório toda regra tem sua exceção:
install/, que foi criado alguns programas, como o
durante a descompactação, qmail ou o courrier-imap,
devemos remover o arquivo Figura 5: O utilitário makepkg em ação. usam métodos não padroniza-
description e criar nele um dos de instalação. Como este
arquivo chamado slack-desc. Veja mais Pronto. Agora temos um pacote que é um assunto no mínimo tão extenso
sobre sua estrutura no Quadro 1. não existe na árvore oficial do Slackware quanto este artigo, vamos deixá-lo para
E para reempacotar o programa? O pronto para ser instalado. Na verdade ele uma próxima edição. Até lá, treine os co-
checkinstall é um bom utilitário para a já foi até instalado pelo checkinstall, que mandos aqui mostrados e veja como o
criação de pacotes, mas a ferramenta é um pouco intrometido. Porém pode- gerenciamento de pacotes no Slackware
certa para isso é o makepkg. Este, mos removê-lo facilmente com o util- pode ser simples e muito eficiente. ■
porém, espera a estrutura criada pelo itário removepkg e instalar o novo pacote
checkinstall, neste caso o(s) diretório(s) com o installpkg. Depois disto, verifique INFORMAÇÕES
de instalação e o diretório install/. Como o arquivo /var/log/packages/pacote, e [1] Página oficial do Slackware:
esta estrutura já foi descompactada pelo você verá que a lista de todos os http://www.slackware.com/
explodepkg, podemos utilizar o makepkg arquivos instalados e a descrição do seu [2] Swaret: http://www.swaret.org/
para finalizar a geração do pacote. novo pacote estão lá. [3] slapt-get:http://software.jaos.org/
[4] SlackUpdate:
QUADRO 1: O ARQUIVO SLACK-DESC http://128.173.184.249/slackupdate/
[5] Listas de discussão oficiais:
Um arquivo slack-desc é composto por informações sobre o pacote (nome, versão, a arquitetura e o
http://www.slackware.com/lists/
release, separados por hífen), terminadas por “:”, seguidas da descrição do pacote. Na descrição
você pode colocar um pequeno resumo da função do pacote, data de criação e um endereço de con- [6] Checkinstall:
tato com o autor, para que dúvidas ou problemas possam ser relatados. Exemplo: http://asic-linux.com.mx/~izto/checkinstall/

Sulamita Garcia inte-


ressou-se por compu-
tadores ao trabalhar
SOBRE A AUTORA

como auxiliar num


escritório onde não a
deixavam chegar per-
to de um. É formada
em Ciências da Com-
putação pela UFSC, onde conheceu o
Linux e não largou mais. Participa do
projeto LinuxChix e mantém o site de
Alta Disponibilidade na UnderLinux,
possuindo também certificação LPIC I.
Trabalha atualmente na Cyclades
Brasil como Software Designer.

www.linuxmagazine.com.br Agosto 2004 55


SYSADMIN MediaWiki

Instalando e mantendo o MediaWiki

Autoria Coletiva
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

W
iki significa rápido em hava-
iano e a tecnologia wiki,
baseada na web, estabeleceu-
se de forma extremamente rápida. Ward
Cunningham teve a idéia em 1995
quando estava procurando um método
para colecionar exemplos de tarefas
comuns de programação entre um grupo ado; se não, o usuário ganha acesso a cria uma lista, texto cercado por sinais
de desenvolvedores. A idéia simples era uma caixa de edição onde ele pode criar de igualdade transforma-se num título.
permitir modificações de cada página do uma nova página com o título especifi- No momento existem mais de 100 fer-
wiki no próprio navegador. Colchetes cado (veja a Figura 1). ramentas [1] wiki disponíveis. A Media-
são tudo o que você precisa para trans- Uma sintaxe de fácil compreensão Wiki [2] é um exemplo popular. Ela
formar um trecho de um texto em um facilita o trabalho de formatação. Digitar fornece o suporte tecnológico para a
link. Se a página já existe, o link é cri- um asterisco no começo de uma linha enciclopédia livre, Wikipedia, o modelo
de conduta para muitos outros wikis
Jornada ao mundo dos Wikis (veja “Jornada ao Mundo dos Wikis”).
O Mediawiki não está restrito às enciclopé- cos. Este projeto pode se transformar em um No seu primeiro ano de vida, a
dias. Além da Wikipedia, sua comunidade arquivo central para roteiros de palestras Wikipedia usou o wiki Usemod, escrito
também lançou o Wiktionary, http://www. para o ensino universitário. em Perl. Mas a rotina provou ser muito
wiktionary.org, em dezembro de 2002. Este Enciclopédia da Desinformação exigente para o Usemod, que ameaçou
dicionário fornece a definição em inglês de entrar em colapso sob a carga de mi-
A Wikipedia tem uma lista [10] de outros
várias palavras e suas traduções em vários lhares de artigos e visitantes.
Mediawikis. Entre os exemplos dignos de
outros idiomas, enviadas por usuários de Isso levou os wikipedianos a desen-
nota está a enciclopédia da desinformação,
todo o mundo. volver a ferramenta MediaWiki em PHP,
Disinfopedia, em http://www.disinfopedia.
Citações e livros escolares org. O co-autor do Mediawiki, Evan usando um back-end em MySQL. Habili-
O Wikiquote, http://www.wikiquote.org, é Prodomou, mantém um guia de viagens dades em PHP são úteis se você precisa
uma coleção categorizada de citações; Já o chamado Wikitravel em http://www. criar ou modificar um wiki, mas mesmo
Wikisource, http://www.wikisource.org, adi- wikitravel.org, e a base de conhecimento e se você não “fala” PHP a MediaWiki
ciona material de fontes originais para suple- documentação Open Source do autor deste ainda permite a você criar um wiki fun-
mentar a Wikipedia, disponibilizado sob artigo, chamada OpenFacts, está disponível cional e fácil de usar.
domínio público ou uma licença livre. O pro- em http://openfacts.berlios.de. Já os fãs de
jeto Wikibooks, em http://www.wikibooks.org, Star Trek vão se deliciar com o Memory Alpha Estável ou Experimental
não é relacionado à Wikipedia em se (http://www.memory-alpha.org), lotado de
O MediaWiki está disponível em dois
tratando de conteúdo, mas fornece material informações sobre o universo no qual as
“sabores”. A versão estável pode ser
didático livre sobre uma variedade de tópi- séries e filmes são baseados.
baixada na página oficial [2] do projeto.

56 Agosto 2004 www.linuxmagazine.com.br


MediaWiki SYSADMIN

O script de instalação do MediaWiki


cria três usuários no MySQL e lhes dá os
privilégios de acesso à base de dados
necessários. O sistema usa o usuário
especificado 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 que
permite aos sysops executar consultas
SQL para, por exemplo, localizar e dar as
boas-vindas aos usuários recentemente
registrados. O administrador do MySQL
também deve adicionar a conta
$wgDBadminuser e sua senha ao
arquivo AdminSettings .php. Esta conta
tem permissão de escrita e é usada por
scripts em tarefas relacionadas à insta-
lação e manutenção do sistema.
Para instalar o wiki, certifique-se de
estar logado como root e execute o
igura 1: A janela de edição do Mediawiki tem uma barra de ferramentas em Javascript para ajudar os ini- comando php install.php. Em algumas
ciantes na formatação de seus artigos. Colchetes duplos ([[]]) indicam um link para uma outra página. distribuições Linux, o interpretador de
comandos pode se chamar php4 em vez
A versão em desenvolvimento também tings.php. A Tabela 1 mostra as variáveis de php. Entre outras coisas, o script lhe
deve funcionar, mas contém recursos do arquivo LocalSettings.php que devem pede a senha de root do MySQL e cria a
experimentais. Você pode baixá-la direta- ser modificadas. base de dados, tabelas e usuários do
mente usando o CVS: MySQL. Por último, ele se oferece para
Escolha de Idioma criar duas contas de usuário no wiki,
cvs -d:pserver:anonymous@cvs.U A Wikipedia suporta mais de 50 idiomas, uma chamada sysop (o operador do sis-
sourceforge.net:/cvsroot/U e é um dos wikis mais amplamente tema) e outra chamada developer (dese-
wikipedia login traduzidos. Isso permite que você crie volvedor). Isto é recomendado. Sem
cvs -z3 -d:pserver:anonymous@U um wiki em Árabe, Chinês, Japonês, estas contas, você terá de criar tais usu-
cvs.sourceforge.net:/cvsroot/U Hebreu, Hindi, Russo ou Vietnamita, ários e atribuir a eles os privilégios de
wikipedia co phase3 inclusive com suporte a Unicode. Para acesso manualmente, mais tarde.
isto, tudo o que o operador do wiki pre- Para configurar seu servidor web, adi-
O diretório phase3 contém o software, cisa fazer é configurar as variáveis cione .phtml como extensão válida para
que você pode atualizar a qualquer $wgInputEncoding e $wgOutputEncoding arquivos PHP ao arquivo de configu-
momento com o comando cvs update. O para UTF-8. ração do Apache, httpd.conf:
MediaWiki requer o Apache 1.3.27,
MySQL 4.0.13 e PHP 4.3.2, incluindo o
interpretador 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, ou
usar a biblioteca gd, encontrada em ver-
sões atuais do PHP. O ImageMagick tem
a vantagem de suportar muito mais for-
matos de imagem que a gd.
O script install.php, encontrado no
diretório raiz da árvore de código fonte,
inicia a instalação. Antes disso, você vai
precisar ajustar alguns detalhes da con-
figuração. O administrador deve copiar
os exemplos de configuração, LocalSet-
tings.sample e AdminSettings.sample, Figura 2: Um artigo típico da Wikipedia mostra que os wikis não precisam ser feios. Índices são gerados
para LocalSettings.php e AdminSet- automaticamente, a partir dos títulos de cada seção.

www.linuxmagazine.com.br Agosto 2004 57


SYSADMIN MediaWiki

AddType application/x-httpd-phpU
.php .phtml

No diretório upload, criado pela insta-


lação (onde o MediaWiki guarda os
arquivos enviados), a execução de
scripts em PHP e exibição de páginas
HTML deve ser proibida:

<Directory /caminho/para/U
diretório/upload>
AllowOverride None
AddType text/plain .html U
.htm .shtml
php_admin_flag engine off
</Directory>

Você terá que habilitar algumas variáveis


globais para o diretório com os scripts.
Adicionar php_value register_globals 1 à
declaração Directory na configuração do Figura 3: A visão comparativa (diff view) destaca as diferenças entre duas versões de uma página,
Apache resolve o problema. mostrando alterações e exclusões. Operadores só precisam apontar e clicar para restaurar versões ante-
Como alternativa, você pode modificar riores.
o arquivo php.ini, tipicamente encon-
trado em /etc ou /etc/php4. Instalação Manual de fora e ignore o arquivo AdminSet-
Se você não tiver acesso ao servidor tings.php. Claro, você precisa de um
Fortificando como root, ou se o script de instalação usuário para a base de dados principal.
O script de instalação copia todos os falhar, você pode instalar o MediaWiki Copie quaisquer arquivos .php e .phtml
arquivos PHP para o diretório do servi- manualmente. O primeiro passo é criar a em includes e languages, e os diretórios
dor web. Quanto mais scripts externa- base de dados. Você deve estar ciente de stylesheets e imagens, para o diretório
mente acessíveis você tiver lá, maior o que conflitos de nome com outras principal do servidor web.
risco de que um atacante possa ganhar tabelas podem ocorrer caso você use Agora você pode abrir o arquivo
acesso a funções internas. Isso é particu- uma base de dados já existente. O wiki.phtml em seu navegador para aces-
larmente verdadeiro para register_glo- MediaWiki não usa um prefixo. sar a página principal de seu recém-
bals, já que parâmetros em URLs permi- Importe as tabelas de tables.sql e instalado MediaWiki. Experimente os
tem que você configure variáveis inter- index.sql no diretório de manutenção: vários recursos (veja o quadro Noções
nas dos scripts. básicas de MediaWiki). Se o servidor
Somente os arquivos realmente essen- mysql -u root -p nomedabasededaU web não reconhecer a extensão .phtml,
ciais devem ficar no diretório do servidor dos < nomedoarquivo.sql renomeie o arquivo para index.php.
web, ou seja, aqueles terminados em Nesse caso, você também vai precisar
.phtml, imagens e folhas de estilo (.css). Você irá precisar modificar um conjunto editar as variáveis $wgScript e $wgRedi-
O melhor a fazer é mover qualquer mínimo de parâmetros no arquivo rectScript. Um exemplo pode ser encon-
arquivo terminado em .php para um LocalSettings.php; deixe o usuário SQL trado em DefaultSettings .php.
diretório separado, fora da raiz de docu-
mentos, logo após a instalação. Após Tabela 1: Configuração Básica
mover os arquivos, substitua os links Variável Ambiente Local
para ./LocalSettings.php nos arquivos $IP Diretório local no servidor para onde você copiou o wiki,por exemplo /var/www/wiki.
.phtml por links para LocalSettings.php e $wgServer Endereço do servidor antes da primeira barra na URL,por exemplo
adicione o caminho para esse arquivo à http://www.meuwiki.com
diretiva include_path no arquivo php.ini. $wgScriptPath Subdiretório com os arquivos .php,por exemplo,wiki. Deixe vazio (“”) se os arquivos
Note que na atual versão instável, que estiverem no diretório principal do servidor web.
já pode ter se tornado estável quando $wgEmergencyContact Endereço de email do administrador,a ser exibido em caso de problemas.
você estiver lendo este artigo, os $wgDBserver Nome da base de dados do MySQL

arquivos .phtml são considerados obso- $wgDBuser e $wgDBpassword Usuário do MySQL para uso normal da base de dados

letos – Neste caso, copie index.php e $wgDBsqluser e $wgDBsqlpassword Usuário do MySQL para execução de comandos SQL através da interface web. Só
possui permissão para leitura.
redirect.php para o diretório do servidor
$wgLanguageCode Código de dois dígitos para o idioma a ser usado,por exemplo en para Inglês, pt
web, e copie todos os outros arquivos
para Português.
.php para um diretório seguro.

58 Agosto 2004 www.linuxmagazine.com.br


MediaWiki SYSADMIN

Privilégios de usuário documento (veja a Figura 3). O histórico Os operadores do wiki devem definir
A maioria dos wikis permite que suas de mudanças guarda as alterações em com cuidado as opções padrão, encon-
páginas sejam editadas por usuários uma página desde sua versão original, e tradas no array $wgDefaultUserOptions
anônimos. Isto gera dúvidas quanto a também permite que você recupere ver- En no arquivo Language.php, ou sua
como o administrador vai lidar com con- sões antigas da página e as republique se variante localizada. Opções como quick-
teúdo indesejável ou mesmo vandal- necessário. Além disso, usuários tem à bar (0 = sem barra de navegação, 1 =
ismo. O MediaWiki tem alguns mecanis- sua disposição a função User Contribu- barra à esquerda, 2 = à direita) são
mos de defesa: você pode restringir a tions, que permite que todo o conteúdo importantes. editiondbclick fará com que
leitura ou edição de conteúdo a grupos criado por um usuário específico seja uma janela de edição seja aberta após
específicos. As variáveis $wgWhiteListE- exibido. Operadores podem desfazer as um duplo-clique na página. showtoc gera
dit e $wgWhiteListRead no arquivo alterações listadas, permitindo a cor- automaticamente um índice para pági-
LocalSettings.php o ajudam a fazer isso. reção de atos de vandalismo em segun- nas com mais de três seções, e showtool-
O array $wgWhiteListAccount define os dos, sem interrupção do serviço. bar habilita a caixa de ferramentas em
grupos que possuem permissão de Se uma disputa sobre o conteúdo de Javascript no topo da janela de edição
leitura ou escrita: uma página surgir, um sysop pode pro- (veja a Figura 1).
tegê-la temporariamente. Administra- A opção editsection mostra um link
$wgWhiteListAccount=array(U dores também podem banir encren- chamado Edit (editar) ao lado do título
--user" => 0. --sysop" => 1. U queiros recorrentes através do bloqueio de cada seção da página. Isso permite a
--developer" => 1) de seus endereços IP. Infelizmente, o edição direta de seções específicas, e é
endereço IP de usuários conectados via particularmente útil em páginas muito
Este ajuste restringe as modificações aos dial-up muda frequentemente, e eles cos- longas, já que elimina a necessidade de
operadores de sistema e desenvolve- tumam agir de forma anônima. navegar até a janela de edição. Por outro
dores. A linha seguinte adiciona um Por este motivo, por padrão um blo- lado, links deste tipo podem arruinar seu
novo tipo de usuário, chamado editor: queio por endereço IP só dura 24 horas layout, cabe a você decidir o que é mais
(opção $wgIPBlockExpiration). O vandal- importante. Uma alternativa é habilitar a
$wgWhiteListAccount=array(U ismo é uma questão supervalorizada, opção editsectiononrightclick, que faz
--editor" => 1. --user" => 0. U questões de cunho social são mais com que um clique com o botão direito
--sysop" => 1. --developer" =>U importantes. Que tipo de páginas e com- do mouse no título de uma seção tenha o
1) portamento o wiki irá permitir? Ope- mesmo efeito. Contudo, em nossos
radores devem definitivamente pensar testes isto fez com o que o navegador
Depois de criar o tipo de usuário, o ope- sobre estas políticas. Konqueror caísse ocasionalmente.
rador pode lhe dar privilégios de leitura
ou escrita ao ajustar o valor do campo
user_rights na base de dados do usuário
para editor.
Até o momento, o MediaWiki não tem
uma ferramenta genérica para gerencia-
mento de privilégios. Isto significa que é
necessário formular uma consulta SQL
para 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 Media


Wiki tem um tipo extra de usuário
chamado bureaucrat (burocrata). Buro-
cratas usam uma página especial para
indicar outros usuários como sysops.
Para poder fazer isso, o usuário precisa
ter privilégios de burocrata e sysop.
Um histórico de mudanças permite
que você monitore os acontecimentos
recentes em seu wiki. O MediaWiki pos-
sui o recurso diff, que destaca as dife- Figura 4: Vendo as mudanças recentes no wiki. O link Recent changes leva diretamente à uma visão
renças entre duas versões de um comparativa com a versão atual.

www.linuxmagazine.com.br Agosto 2004 59


SYSADMIN MediaWiki

Contexto array $wgNamespaceNamesPt no arqui- diatamente aplicadas a quaisquer outras


A Wikipedia se deparou rapidamente vo LanguagePt.php, por exemplo, eles páginas que usem {{msg}} para acessá-
com a questão da separação das infor- também serão removidos da interface la. O comando {{subst:greeting}} adi-
mações sobre o wiki, suas políticas, ou com o usuário. ciona o texto especificado à sua posição,
discussões sobre artigos da enciclopédia. Um recurso do Usemod que o Media- mas sem o recurso de atualização auto-
Por exemplo, há um artigo sobre FAQs, e Wiki manteve mesmo após a migração mática da mensagem.
o FAQ oficial da Wikipedia. Para separar foi a sub-página. Por exemplo, um artigo Note que páginas no contexto Media-
adequadamente os dois, o MediaWiki chamado Linux pode ter uma sub-página Wiki não podem ter caracteres não-
introduziu os contextos, que são defini- chamada Linux/Dicas do Kernel. A padrão ou espaços em seus títulos.
dos no arquivo Language.php ou sua página Dicas do Kernel ganha automati- Como cada texto do programa é recupe-
tradução no idioma local. Por padrão, há camente um link levando de volta à rado da base de dados, você só deve usar
um contexto principal, um para dis- página Linux. Sub-páginas podem ser este recurso em conjunto com a opção
cussões múltiplas, outro para imagens, habilitadas individualmente para cada memcached, descrita mais adiante.
um para páginas de usuários, um espe- contexto através da variável $wgName-
cial (special) e o especialíssimo contexto spacesWithSubpages. Operando um Wiki
MediaWiki. Artigos fora do contexto O contexto MediaWiki, que é habili- Manter um MediaWiki por um longo
principal sempre terão um prefixo. [[Dis- tado através da variável $wgUseData- período de tempo é na verdade menos
cussion:Mainpage]] aponta para a página baseMessages, permite que os usuários estressante que acertar a instalação. Em
de discussão que pertence à página prin- traduzam todos os elementos de texto do um mundo perfeito, um operador de
cipal. [[User:Troll]] leva à página pessoal software do wiki. Os nomes das va- wiki só precisaria delegar os privilégios
do usuário Troll. riáveis de texto estão armazenados no de sysop e developer. Os utilitários
Se você não pretende manter um wiki arquivo Language.php. mysqldump ou phpMyAdmin são reco-
gigantesco, pode evitar o problema do mendados para o backup da base de
meta-contexto. Por padrão, ele assume o Atalhos para blocos de texto dados. Ao importar grandes conjuntos de
valor da variável $wgSitename (por O conteúdo de quaisquer páginas criadas dados, como os artigos da Wikipedia [5],
exemplo, Wikipedia) no arquivo Default- neste contexto pode ser inserido em rode logo a seguir o script mainte-
Settings.php. Como exemplo, o FAQ da qualquer lugar dentro do wiki. Por exem- nance/rebuildall.php, no diretório de
Wikipedia, parte do contexto principal, plo, para criar um texto de boas-vindas instalação, para evitar que consultas
seria armazenado em [[Wikipedia:FAQ]]. padrão, crie uma página chamada como What Links Here falhem.
Isto resolve o conflito ao qual nos referi- MediaWiki:greeting. A tag {{msg:greet- O MediaWiki tem várias opções de
mos anteriormente, mas dificulta as ing}} vai inserir o conteúdo desta men- ajuste fino – há exemplos no arquivo
coisas em sites pequenos. Se os contex- sagem em outras páginas. Quaisquer DefaultSettings.php. Assegure-se de co-
tos quatro e cinco forem removidos do alterações na página MediaWiki são ime- piar quaisquer modificações que tenha

Noções básicas de MediaWiki


O principal elemento de navegação no eral deste tipo de página. Basta seguir o link com o texto, outros tipos de arquivo recebem
MediaWiki é a barra na lateral esquerda da para abrir uma janela de edição vazia. Digite um link para download.
tela (veja Figura 1). Recent changes é um dos seu comentário e, quando terminar, clique Reconhecendo relações
links mais importantes para os visitantes em Save page para adicioná-lo à página.
Uma das razões para a mudança para uma
regulares do wiki. Ela mostra as páginas nas Uma página e seu histórico solução centrada em base de dados é que a
quais os colaboradores estão trabalhando no
Para adicionar uma página, simplesmente equipe Wikipedia precisava de capacidades
momento (veja Figura 4).
crie um link em uma página já existente, por avançadas de busca. Por exemplo, o Media-
Usuários registrados podem clicar no link exemplo, [[Minha nova página]], e clique no Wiki usa páginas especiais para mostrar
Watch this page para adicionar uma página à texto em vermelho. O link Page history o leva páginas novas ou orfãs, ou seja, páginas que
sua lista de observação. Esta lista mostra as a uma página que mostra as versões anteri- não são referenciadas por nenhum link.
mudanças feitas no decorrer da última se- ores da página atual (veja a Figura 4), e tam- Funções extras listam artigos em ordem
mana às páginas nela presentes, o que per- bém pode ser usado para restaurá-las. Para alfabética, ou por tamanho.
mite que os colaboradores monitorem as fazer isso, selecione uma versão (clique na A página especial Most wanted articles dá
alterações às páginas às quais adicionaram data), edite a página exibida e salve-a. O link uma visão geral das palavras chave mais
conteúdo. Move page permite que você Current revision também é útil, pois mostra usadas em buscas, mas que não retornaram
renomeie uma página. O título anterior per- as diferenças entre uma versão qualquer da uma página. O recurso What links here
manece válido, e usuários que estejam página e a atual. mostra as páginas com links para a página
seguindo links para a página serão redire- atual. Related changes mostra a lista de
Upload permite que você envie um arquivo
cionados ao novo link. mudanças nos artigos para os quais uma
ao servidor.Transferências são marcadas no
O link Discussion aponta para a discussão livro de registro, e você pode embutir um página aponta, permitindo que você moni-
sobre a página atual. Uma página chamada arquivo em uma página com o comando tore tópicos específicos.
Linux teria uma discussão chamada Discus- [[Image:arquivo.jpg]], para imagens, ou Se quiser saber mais, o manual oficial do
sion:Linux, por exemplo. Um link chamado [[Media:arquivo.zip]] para outros arquivos. O MediaWiki [4] fornece detalhes sobre o uso e
Post a comment está disponível na barra lat- MediaWiki exibe as imagens em conjunto administração do sistema.

60 Agosto 2004 www.linuxmagazine.com.br


MediaWiki SYSADMIN

feito para LocalSettings.php, $wgLinkCacheMemcached. A


para evitar que elas sejam opção $wgCompressRevisions
sobrescritas durante uma atua- comprime versões antigas das
lização do software. páginas com gzip, o que ajuda a
O MediaWiki tem a opção economizar bastante espaço em
$wgMiserMode para wikis mai- disco no servidor.
ores. Ativá-la irá desabilitar
operações que consomem mais A seguir: Wikitex
tempo, como a geração da lista Dê um pulo no site Wikitextrial
dos artigos mais longos. Habili- [7] para dar uma espiada na
tar a opção $wgUseFileCache é interface Wikitex escrita por
considerado bom-senso. Isso Peter Danenberg. Embora ainda
servirá páginas HTML estáticas não faça parte do código oficial,
aos usuários anônimos, o que no futuro ela permitirá que o
resulta em um considerável MediaWiki use múltiplos back-
ganho de velocidade. ends. Por exemplo, o GNU Lily-
Se você está disposto a pond [8], que traduz uma
dedicar uma quantidade con- sintaxe simples em layouts para
siderável de tempo e esforço partituras cuidadosamente for-
aos ajustes de seu wiki, pode matadas. Também será possível
querer experimentar as opções usar várias macros Latex para
memcached e zlib. Memcached gerar fórmulas para matemática
reduz o acesso à base de dados Figura 5: A interface Wikitex permite ao MediaWiki mostrar partituras, e química, ou imagens de tabu-
ao manter cópias de dados de formulas químicas e matemáticas e até mesmo partidas de xadrez. leiros de xadrez para ilustrar
usuários e informações sobre estratégias de jogo (veja a Figu-
links. Zlib comprime versões antigas das como cache para os aplicativos locais. O ra 5). Novos usuários podem, a princí-
páginas. Isto assume que você tenha Memcached não tem um recurso de au- pio, achar o conjunto de novos recursos
compilado o PHP com as opções tenticação, e usuários locais tem acesso confuso, mas a comunidade MediaWiki
––enable-sockets e ––with-zlib. Digite irrestrito. Evite rodar o memcached em está sempre disposta a ajudar. Se você
<?phpinfo()?> em uma página PHP de um sistema com múltiplos usuários mantém um MediaWiki, assine a lista de
teste para descobrir. locais. Sem um firewall, ou o parâmetro discussão mediawiki-l [9], ou venha
-l, usuários externos podem acessar o bater um papo no canal #mediawiki no
Memcached servidor e capturar senhas. servidor irc.freenode.net. ■
O daemon deve rodar em segundo plano Agora você pode habilitar as seguintes
com as opções -d -l 127.0.0.1 -p 11000 -m opções: $wgCompressRevisions, $wgUse- INFORMAÇÕES
64 ativadas. Isso aloca 64 MB de RAM MemCached, $wgSessionsInMemached e [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
Figura 6: A página de histórico de alterações possibilita acompanhar o desenvolvimento de um artigo.

www.linuxmagazine.com.br Agosto 2004 61


SYSADMIN Comunicação entre Processos

Ponha ordem em seu sistema usando a...

Linguagem de Sinais
Um 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

para comunicação entre processos (IPC Para obter o resultado desejado, você
– inter-process communication). Cada precisa digitar kill -9, dessa forma
vez que você digita o comando kill para emitindo um sinal KILL. A menos que
encerrar um processo desnecessário, você tenha escolhido um zombie
você está na verdade enviando um sinal (“zumbi”, veja o quadro), ou um
a este processo (veja Figura 1). A Figura processo que está aguardando por uma
2 mostra uma lista dos sinais definidos operação de I/O, e que portanto reside
para kill. Esta lista, também contida no no espaço do kernel, o processo é obri-
cabeçalho do arquivo /usr/include/bits/ gado a se encerrar.
sgnum.h vale para todos os programas.
Se você tentar encerrar um processo Encerrando Programas
sem fornecer qualquer parâmetro adi- Alguns outros sinais são muito impor-
cional, o comando emitirá o sinal 15 tantes – ainda que não pareça tão óbvio
(TERM, terminar). Entretanto, alguns à primeira vista. A maioria dos leitores já

U
m processo é iniciado, completa processos simplesmente ignoram este pressionou [Ctrl]+[Z] para interromper
seu serviço, coloca tudo em sinal, ou já podem ter se encerrado. um programa, como um editor de textos.
ordem e termina. Se o trabalho é Neste caso, o sinal TERM não é usado. O shell reage mostrando o seguinte:
muito complexo, o proces-
so pode levar um certo [2] + Stopped vi U
tempo – semanas, ou até myfile
mesmo meses, para com-
pletá-lo. Tome por exem- Você pode reiniciar o edi-
plo um servidor Web, que tor digitando o comando fg
geralmente residirá na me- (foreground, primeiro pla-
mória até que uma versão Figura 1: O usuário mas executa os comandos ps e grep para procurar pelos proces- no). O comando jobs lhe
atualizada do sistema seja sos do Opera, e então executa o comando kill PID, para dizer a esses processos eles diz o estado de todos os
lançada; o mesmo também que devem terminar. processos controlados atu-
se aplica a muitos outros almente pelo shell:
“daemons”. Isto não quer
dizer que o ambiente para [1] - Running emacs &
este tipo de software será [2] + Stopped vi U
sempre o mesmo. Após myfile
modificar um arquivo de
configuração, o adminis- [Ctrl]+[Z] envia o sinal
trador precisa fazer que o 19, STOP. O comando fg
daemon note que modifi- continua o processo inter-
cações foram efetuadas, o rompido, emitindo o sinal
que envolve tipicamente 18, CONT (continua). O
alguma forma de comuni- sinal 18 também é usado
cação entre processos. no comando bg, que envia
um processo para back-
Sinais Figura 2: O Linux reconhece 64 sinais diferentes, os quais possuem um nome e um ground (segundo plano),
Sinais são uma das técni- número. O freqüentemente usado kill -9, também pode ser expresso como: kill - do mesmo jeito que adi-
cas mais bem conhecidas SIGKILL ou kill -KILL. cionar um & à frente de

62 Agosto 2004 www.linuxmagazine.com.br


Comunicação entre Processos SYSADMIN

Figura 3a: O SSH aguarda pacientemente que os processos-filho terminem Figura 3b: Processos demorados em background precisam ser iniciados com o
antes de fechar a conexão. Digitar ~ força o fechamento. comando nohup, se quiser que eles sobrevivam ao comando ~.

um comando. Se você quiser parar tem- primeiros 100 PIDs são usados pelos processo atual. A segunda coisa que o
porariamente um processo em back- processos do próprio kernel. Os demais Bash faz é fornecer atalhos para os
ground (porque ele está consumindo identificadores são usados pelos progra- nomes de processos, [1] e [2], neste
muitos recursos, por exemplo), e con- mas executados pelo usuário. caso. Utilize o símbolo de porcentagem
tinuá-lo mais tarde, pode usar os coman- Digitar repetidamente kill -18 21967, antes do número para acessar estes atal-
dos kill -19 e kill -18. sem errar, é cansativo. O Bash oferece hos. No exemplo anterior, o comando fg
O exemplo acima demonstra uma duas possibilidades de simplificação. A %1 envia o Emacs para primeiro plano.
notação simplificada para os números de primeira é que ele sabe os PIDs dos Além de [Ctrl]+[Z] (suspender),
processos, oferecida pelo bash como um processos atuais e anteriores. Eles são alguns shells também executam uma
atalho. Normalmente cada processo no marcados com sinais de mais e menos, suspensão “atrasada” de um processo,
Linux tem um PID (Process ID - identifi- respectivamente, na lista de processos. [Ctrl]+[Y]. Enquanto o comando para
cador de processo), entre 1 e 32767, Se você utilizar o comando fg, para suspender imediatamente um processo
onde 1 é reservado para o init, o manipular um processo, mas não especi- envia um sinal STOP, o [Ctrl]+[Y]
primeiro de todos os processos. Os ficar um PID, o comando é aplicado ao espera até que o processo termine de ler
SYSADMIN Comunicação entre Processos

dados do terminal. Isto permite que um O que realmente aconteceu é que o localizar o PID, algumas distribuições
processo seja manipulado imediata- SSH não travou, simplesmente notou Linux incluem o comando killall, que lhe
mente após aceitar uma entrada. uma tarefa em segundo plano. O SSH permite enviar um sinal qualquer a
estava esperando que este processo todos os processos com o mesmo nome
Desconexão terminasse para então encerrar a que você informar:
Um outro sinal remonta à época dos ter- conexão. Quando a conexão é interromp-
minais seriais. O sinal número 1 é ida, um sinal HUP é enviado ao killall -1 syslogd
chamado de HUP ou hangup (desco- processo, encerrando-o.
nexão). Se você utiliza um modem para A Figura 3b, mostra o jeito certo de Este comando aceita uma série de
acessar um sistema Unix e a conexão é fazer isto. O comando nohup protege um parâmetros que podem ser consultados
interrompida, o seu shell recebe um sinal processo em segundo plano de um sinal com o comando man killall
HUP e pode se recompor. Por exemplo, HUP. O SSH nota isto e continua a
um editor pode criar um backup e então esperar, mas desta vez a conexão pode Sinais definidos pelo usuário
encerrar sua execução. ser encerrada sem afetar o processo em Alguns outros sinais, como 10 (USR1), e
Conexões via modem são raras atual- segundo plano. O utilitário dbdump 12 (USR2), estão disponíveis para tarefas
mente, mas o sinal HUP mantém sua continuará em execução, e apresentará definidas pelo usuário. Por exemplo: se o
utilidade. Encerrar uma conexão SSH é seus resultados na próxima vez que o arquivo de configuração do Apache for
um dos usos, e também uma “pega- usuário mas se conectar ao sistema. Esta modificado, você pode forçar o daemon
dinha” muito comum. sintaxe do dbdump é mais elegante: a reler o arquivo enviando um sinal
Imagine o cenário da Figura 3a. O HUP. Entretanto, isto significa que quais-
usuário mas acessa via SSH uma outra nohup sudo -u mysql dbdump U quer processos filhos do Apache serão
máquina para executar algumas tarefas </dev/null & abandonados. Se, ao invés disso, você
de gerenciamento remoto e inicia um enviar um sinal USR1 ao processo princi-
processo demorado. Como ele não quer Isto significa que o processo não está pal do Apache, ele irá aguardar até que
esperar pelos resultados, adiciona o car- conectado ao terminal e o SSH terminará todos os trabalhos tenham terminado
actere & ao final da linha de comando após o usuário se desconectar do sis- antes de interromper e reiniciar os
para enviar automaticamente o processo tema, sem que ele tenha que digitar ~. processos-filhos.
para background (segundo plano) antes para encerrar a conexão. O uso de sinais é amplamente difun-
de encerrar a sessão. Infelizmente, isso dido e parte essencial do cotidiano de
parece não funcionar, e o ssh aparenta Modificando Configurações todo administrador de sistemas. Mas
estar “travado”. Para o usuário, parece Um uso muito comum do sinal HUP é restrições com o número de sinais limi-
não haver alternativa a não ser pres- para avisar a um daemon de que foram tado e o fato de que, por segurança, ape-
sionar ~, o caractere de escape do SSH, feitas modificações em seu arquivo de nas o super-usuário pode enviar sinais
para encerrar a conexão. configuração. aos processos que não lhe pertençam
O daemon syslog [2], é um exemplo justificam a existência de mecanismos
Zombies típico. Normalmente ele registra apenas alternativos, que serão examinados em
Um processo que gera um outro é conhe- alertas e mensagens de erro, para poupar um futuro artigo na Linux Magazine. ■
cido como um processo pai, e o relaciona- espaço no disco rígido e dores-de-cabeça
mento entre os dois é referido como do administrador. Mas após instalar um Marc André Selig
pai/filho. O processo que chama é o pai, e o novo pacote de software, é necessário trabalha como cien-
SOBRE O AUTOR

chamado é o filho. Se o processo filho ter- mais do que isso. tista assistente na
Universidade de Trier,
mina antes do seu pai, o pai envia um sinal Se o software não funciona como
na Alemanha, e
CLD ou CHLD (child). É esperado que o esperado, o administrador pode querer o como médico no hos-
processo pai confirme a conclusão dos seus registro de mensagens adicionais e infor- pital Schramberg.
filhos. Se o pai falha neste procedimento, o mações de debug para ajudar na solução Quando encontra
filho é identificado na tabela de processos do problema. Para isso, é necessário adi- algum tempo livre, seu interesse
como um zombie (zumbi) [1]. Afinal, como o atual é a criação de sistemas de base
cionar uma linha ao arquivo de configu-
kernel vai saber se e quando o pai vai veri- de dados baseados na Web em várias
ração do syslog, /etc/syslog.conf, para plataformas UNIX.
ficar o estado de saída do filho? A entrada do dizer ao daemon que estas informações
processo na tabela tem que ser mantida, devem ser registradas:
para cobrir esta possibilidade.
INFORMAÇÕES
Até lá, a maioria dos recursos de sistema já *.* -/var/log/everything [1] Artigo na Wikipedia sobre processos
terão sido liberados. O processo filho origi-
zumbi: http://en.wikipedia.org/wiki/
nal não existe mais, e o comando kill -9 não Você precisa enviar um sinal HUP para Zombie_process
terá efeito sobre ele. O processo “zumbi”só que o syslog reconheça a mudança. ps -ef
desaparece quando o processo pai termina [2] Marc André Selig,“The System Logger”,
| grep syslog mostra o PID, e o comando
ou quando procura saber o estado de saída Linux Magazine, Edição 40, Março de
kill -1 PID, se encarrega de encerrar o
do processo filho. 2004, página 64.
daemon. Se você não tem tempo para

64 Agosto 2004 www.linuxmagazine.com.br


Coluna do Charly SYSADMIN

Diário do SysAdmin: PHP Directory Index

Rostinho Bonito
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

E
u não sou uma pessoa fútil, afinal, O PHP Directory Indexer não é difícil
eu não trabalho no mercado da de instalar. Ao desempacotar o arquivo,
moda. Entretanto, de tempos em são criados 2 diretórios, docs e icons, e
tempos eu me olho no espelho e decido dois arquivos chamados inc_indexer.php
dar um trato no meu visual. e indexer.php. O diretório docs traz prati-
Algo estranho, porém similar, acontece camente tudo o que você pode esperar,
comigo quando eu olho uma lista de incluindo um guia de instalação em In-
diretórios através de um navegador (veja glês e Português (de Portugal, diga-se de cp /usr/local/indexer/*.php U
Figura 1). Para minha “Coleção de Inver- passagem). Já o diretório icons tem um /srv/www/htdocs/
no” deste ano eu decidi utilizar o PHP novo conjunto de ícones que eu então
Directory Index [1]. Confira a Figura 2: copiei para o diretório icons do Apache, para copiar os arquivos para o diretório
arrumadinho, não? O pacote funciona com o comando abaixo: apropriado. Agora eu posso modificar o
com o Apache 1.3 e 2.0 [2], e requer parâmetro DirectoryIndex no httpd.conf:
somente o mod_php4 (instruções de cp -r /usr/local/indexer/U
instalação e configuração detalhadas po- icons/* /srv/www/icons/ DirectoryIndex index.php indexU
dem ser encontradas em [3]). A chave é .html index.htm /indexer.php
o parâmetro DirectoryIndex no arquivo Obviamente o Apache necessitará de
de configuração Apache, o httpd.conf: permissão de leitura para esses arquivos Não se esqueça de colocar a barra, pois o
– para resolver isto, meu servidor utiliza arquivo está no diretório raiz do servidor
DirectoryIndex index.php U a conta nobody. web. O indexer vai funcionar logo após a
index.html index.htm reinicialização do Apache. Para saber
Modificando o mais sobre alterações na aparência do A-
Quando o usuário navega em um dire- DocumentRoot pache, leia o arquivo inc_indexer.php. ■
tório que contém um desse arquivos, o O próximo passo é copiar os dois ar-
navegador abre o arquivo automatica- quivos PHP para o diretório PHP, o INFORMAÇÕES
mente. Se o diretório não possui um parâmetro DocumentRoot no httpd.conf o [1] PHP Directory Indexer:
arquivo índice, o Apache apresenta uma informará qual é. No meu caso a linha é http://indexer.adamastor.org/?cat=menu
listagem do conteúdo do diretório como DocumentRoot "/srv/www/htdocs". En- [2] Apache: http://www.apache.org/
mostrado na Figura 1. tão executei o comando :
[3] Instalação do mod_php4 no Apache:
http://www.php.net/manual/pt_BR/
install.apache.php

Charly Kühnast gerencia


SOBRE O AUTOR

Sistemas Unix em um
data-center em Moers,
próximo ao famoso rio
Reno, na Alemanha. Seu
trabalho inclui verifi-
cação de segurança e
disponibilidade dos fire-
walls e também é o responsável pela
Figura 1: O formato padrão da listagem de Figure 2: A utilização do “PHP Directory Indexer”
DMZ (demilitarized zone).
diretórios do Apache é muito pobre. dá ao seu site um toque de elegância.

www.linuxmagazine.com.br Agosto 2004 65


PROGRAMAÇÃO Perl Object Environment

Lidando com interfaces Gtk e consultas à Web em Perl

Trabalho de Equipe
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

O
s aplicativos com uma interface complexo. Seções críticas precisam ser o efeito de “scroll” suave que queremos
gráfica são geralmente baseados protegidas contra o acesso paralelo para na interface. A função getonequote (sím-
em eventos. O programa tem um assegurar a integridade dos dados, evi- bolo) envia um pedido HTTP ao servidor
loop principal, utilizado para esperar por tando desta forma erros de difícil cor- Yahoo, espera por uma resposta e então
eventos como os cliques de um mouse e reção. Se você já teve que analisar um retorna os resultados.
entrada de dados através do teclado. É arquivo core com 200 threads ativas, Nós queremos manter o display fun-
importante que o programa processe es- sabe muito bem do que estou falando. cionando enquanto o programa espera
tes eventos sem nenhum atraso e retorne Há uma alternativa que evita estes por uma resposta – e, de acordo com a
rapidamente ao loop principal. Isto inconvenientes – a multitarefa coopera- lei de Murphy, podemos ter certeza abso-
impede que o usuário note a indisponi- tiva com o POE [2], desenvolvido princi- luta de que outra janela será arrastada
bilidade temporária da interface. palmente por Rocco Caputo. O ambiente sobre ele neste exato momento. Neste
No artigo deste mês estaremos ana- é implementado como uma máquina de caso, o programa terá que redesenhar a
lisando um programa, um stock ticker, estados que executa exatamente um área que foi oculta. Tal processo é co-
que consulta e exibe o valor de uma processo em uma única thread, porém nhecido como refreshing.
determinada ação na Bolsa de Valores. há um “kernel” no espaço de usuário, Infelizmente, devido à demora na
Periodicamente, este programa conecta- que permite a realização de múltiplas resposta à solicitação HTTP, o aplicativo
se à página de finanças do Yahoo!, atua- tarefas quase que simultaneamente. não recebe a ordem para redesenhar sua
lizando os valores previamente seleci- janela, e conseqüentemente deixa um
onados (veja Figura 1). Dependendo da Acompanhando horroroso “buraco” cinza no desktop –
conexão de rede esta operação pode, Programadores Perl que querem consul- certamente uma visão nada agradável.
incluindo a resolução de nome pelo tar o preço de ações costumam usar o
servidor DNS, levar alguns segundos até módulo Yahoo::FinanceQuote, encon- A alternativa assíncrona
se completar. Seria interessante que a trado na CPAN: Seria mais elegante transmitir o pedido à
interface do aplicativo se mantivesse web e retornar para redesenhar a janela,
funcionando durante este período. use Finance::YahooQuote; sem ter que esperar pelos resultados.
Os desenvolvedores já podem usar téc- my @quote = U Quando a resposta do servidor Yahoo!
nicas como o multiprocessamento ou getonequote($symbol); chegar, ela deveria causar algum tipo de
multithreading para alcançar este obje- alerta. Isto significa uma rápida atualiza-
tivo. Entretanto, ambas técnicas fazem Infelizmente, o módulo trabalha de ção da janela com os valores, e o retorno
com que o programa fique muito mais forma síncrona, o que torna difícil obter ao loop principal do programa.

66 Agosto 2004 www.linuxmagazine.com.br


Perl Object Environment PROGRAMAÇÃO

Isto é exatamente o que o POE faz. estado wake_up a cada 60 segundos (por • Um parâmetro de formato (=f) com os
Fornece um kernel onde cada aplicativo meio de um alerta) ou quando alguém nomes dos campos solicitados: s (sym-
sessões, e máquinas de estado se movem clica no botão Update na interface. Isto bol), l1 (valor da ação) e c1 (mudança
entre estados, trocando mensagens. A lança outra máquina de estados tipo no valor, em percentagem, desde o
atividade de entrada e saída de dados é POE::Component:: Client::HTTP, e imedi- último dia de operação da bolsa)
assíncrona. Ao invés de abrir atamente devolve o controle • Um parâmetro símbolo (symbol) que
um arquivo ou uma conexão do programa ao kernel. contém uma lista, separada por vírgu-
e esperar pelos dados, você O “PoCoCli::HTTP” é um las, dos símbolos das empresas em
pode simplesmente dizer ao componente do framework cujas ações estamos interessados, por
kernel: “Ei! Eu quero ler POE, uma máquina de estados exemplo YHOO, MSFT, TWX.
algumas informações. Você que define sua própria seção O servidor responde com:
pode me avisar quando elas (chamada useragent na Lista-
estiverem disponíveis?” gem 2, linha 73), aceita pedi- "YHOO",45.38,+0.35
dos à web no estado request e "MSFT",27.56,+0.19
Dados em Alta então retorna ao framework "TWX",18.21,+0.75
Velocidade Figura 1: Nosso aplica- POE até receber uma resposta
Embora as operações de lei- tivo GTK para con- completa via HTTP. Neste Nosso aplicativo GTKTicker aceita a
tura e escrita não sejam total- sulta de valores de ponto, useragent pede ao ker- resposta linha a linha, separa os valores
mente assíncronas (de uma ações contata perio- nel que avise a sessão que a nas vírgulas e envia a informação para a
forma resumida, o POE sim- dicamente os servi- chamou, ticker, para entrar em interface gráfica.
plesmente usa as funções dores do Yahoo!. um estado chamado yhoo_
syswrite () ou sysread (), exe- response, que foi previamente Configuração no diretório
cutando as chamadas do sistema no passado à useragent. $HOME
modo conhecido como non-blocking), O kernel diz à seção ticker para fazer As linhas 13 e 14 da Listagem 2 especifi-
qualquer informação é processada em exatamente isso, e a seção aceita a res- cam que o arquivo .gtkicker no diretório
velocidade máxima. posta HTTP, que já estava à espera, e pessoal do usuário é o arquivo de símbo-
O aspecto cooperativo do POE se atualiza a janela antes de devolver o con- los a ser usado pelo ticker. As linhas 30 a
baseia no fato de que as sessões com- trole ao kernel, sem nenhum atraso. Na 37 interpretam este arquivo linha a linha
petem entre si, mas de forma não linha 69, o componente POE::Compo- (veja o loop while na linha 32), des-
egoísta. Se uma tarefa não ocupa total- nent::Client::HTTP é executado pela fun- cartando toda linha iniciada por #, con-
mente a CPU, a sessão tem que devolver ção spawn(), a qual especifica que o siderada como comentário (linha 33). O
o controle ao kernel. Uma única parte texto gtkticker/0.01 deve aparecer na loop for implícito no final da linha 35:
não cooperativa em um programa pode string user agent e que pedidos devem
ter impacto no sistema inteiro. expirar após 60 segundos. ... for /(\S+)/g;
A multitarefa em uma única thread
facilita o desenvolvimento do programa Manual do Yahoo executa a expressão à direita em todas as
– você não precisa se preocupar com As linhas 10 a 12 na Listagem 2 definem palavras da linha, e coloca o símbolo da
travas, não há surpresas com race condi- o endereço do serviço de cotação de va- empresa na variável $_. Isto permite que
tions, e mesmo que um erro ocorra, é lores de ações do Yahoo! (Yahoo! uma única linha tenha múltiplos símbo-
fácil localizá-lo. POE coopera com o loop Finance). A interface deste serviço los, separados por espaços. A função
principal de vários ambientes gráficos e recebe dois parâmetros: push (linha 34 da Listagem 2) coloca os
reconhece automaticamente Perl/TK e símbolos no array @SYMBOLS.
gtkperl integrando-os perfeitamente
Isto permite ao kernel designar fatias Returns immediately
de tempo aos eventos da interface, da yhoo_response
mesma forma que uma sessão explicita-
Stock Widgets
mente definida. Esta é a resposta para refreshed Yahoo reply
‘Update’ or alert (after
nosso problema com o refresh. available wake_up?
60 seconds)
Kernel event sent to
Yahoo
Alertando o Kernel
O programa na Listagem 2 usa a
máquina de estado POE:: Session como
GTK interface initialized Returns immediately
mostrado na Figura 2. A fase de inicia- _start
lização, _start, gera a interface GTK e
registra o apelido ticker para nos permitir
identificar a seção facilmente mais tarde. Figura 2: A máquina de estados do GTKTicker. Após o estado de inicialização, _start, o controle é devol-
A seguir o controle é devolvido ao ker- vido ao kernel. A cada 60 segundos a máquina entra no estado wake_up, e chama uma outra máquina
nel. A máquina de estados entra no de estados responsável por realizar a solicitação HTTP e devolver o controle ao kernel

www.linuxmagazine.com.br Agosto 2004 67


PROGRAMAÇÃO Perl Object Environment

Apesar de estar usando o framework $poe_kernel->post("ticker", U estado _start. Este, por sua vez, registra
POE, o GTKTicker emprega funções sín- "wake_up"); o apelido da sessão como ticker e então
cronas comuns de entrada/saída para ler pula para my_gtk_init(). Esta função,
o arquivo de configuração, já que o através da variável $poe_kernel expor- que começa na linha 98, constrói a inter-
arquivo é curto e o kernel POE não está tada pelo POE. A linha 55 inicia o loop face gráfica em GTK.
em execução neste momento. principal do kernel,
Interfaces gráficas com GTK
Que começe a dança! $poe_kernel->run(); O módulo Gtk encontrado na CPAN foi
A linha 39 da Listagem 2 define a escrito por Marc Lehmann. Na verdade
máquina de estados do ticker. A função o qual permanece em execução até que este módulo foi substituído pelo Gtk2,
inline_states mapeia funções aos esta- seja desativado. É isto! mas esta nova versão ainda tem alguns
dos. O kernel irá executar estas funções A construção dos objetos POE::Session pequenos problemas com o POE. Mas
quando a máquina entrar no estado cor- mostrada anteriormente tem um efeito não se preocupe, pois o “obsoleto”
respondente. A linha 53 declara o estado colateral. Ela executou a rotina start() módulo baseado no Gtk1 ainda fun-
wake_up da sessão ticker ao kernel: definida na linha 58, que é mapeada ao ciona, e muito bem.

Listagem 2: Gtkticker
001 #!/usr/bin/perl 042 _stop => sub { 083 HTTP::Request->new(
002 ############################# 043 INFO "Shutdown" }, 084 GET => $YHOO_URL .
003 # gtkticker 044 yhoo_response => 085 join ",", @SYMBOLS);
004 # Mike Schilli, 2004 045 \&resp_handler, 086
005 # (m@perlmeister.com) 046 wake_up => 087 $STATUS->set(
006 ############################# 047 \&wake_up_handler, 088 "Fetching quotes");
007 use warnings; 048 } 089
008 use strict; 049 ); 090 $poe_kernel->post(
009 050 091 'useragent',
010 my $YHOO_URL = 051 my $STATUS; 092 'request',
011 "http://quote.yahoo.com/d?". 052 093 'yhoo_response',
012 "f=sl1c1&s="; 053 $poe_kernel->post( 094 $request);
013 my $RCFILE = 054 "ticker", "wake_up"); 095 }
014 "$ENV{HOME}/.gtkticker"; 055 $poe_kernel->run(); 096
015 my @LABELS = (); 056 097 #############################
016 my $UPD_INTERVAL = 60; 057 ############################# 098 sub my_gtk_init {
017 my @SYMBOLS; 058 sub start { 099 #############################
018 059 ############################# 100
019 use Gtk; 060 101 my $w = Gtk::Window->new();
020 use POE qw( 061 DEBUG "Starting up"; 102 $w->set_default_size(
021 Component::Client::HTTP); 062 103 150,200);
022 use HTTP::Request; 063 $poe_kernel->alias_set( 104
023 use Log::Log4perl qw(:easy); 064 'ticker'); 105 # Create Menu
024 use Data::Dumper; 065 my_gtk_init(); 106 my $accel =
025 066 107 Gtk::AccelGroup->new();
026 Log::Log4perl->easy_init( 067 $STATUS->set("Startup"); 108 $accel->attach($w);
027 $DEBUG); 068 109 my $factory =
028 069 POE::Component::Client::HTTP 110 Gtk::ItemFactory->new(
029 # Read config file 070 ->spawn( 111 'Gtk::MenuBar',
030 open FILE, "<$RCFILE" or 071 Agent => 112 "<main>", $accel);
031 die "Cannot open $RCFILE"; 072 'gtkticker/0.01', 113
032 while(<FILE>) { 073 Alias => 'useragent', 114 $factory->create_items(
033 next if /^\s*#/; 074 Timeout => 60, 115 { path => '/_File',
034 push @SYMBOLS, $_ 075 ); 116 type => '<Branch>',
035 for /(\S+)/g; 076 } 117 },
036 } 077 118 { path =>
037 close FILE; 078 ############################# 119 '/_File/_Quit',
038 079 sub upd_quotes { 120 accelerator =>
039 POE::Session->create( 080 ############################# 121 '<control>Q',
040 inline_states => { 081 122 callback =>
041 _start => \&start, 082 my $request = 123 [sub { Gtk->exit(0) }],

68 Agosto 2004 www.linuxmagazine.com.br


Perl Object Environment PROGRAMAÇÃO

Um objeto da classe Gtk::Window re- Construindo Menus [Alt]+[F] ou [Alt]+[Q]. O parâmetro


presenta a janela principal do aplicativo O menu é criado pela classe Gtk::Item- callback especifica qual função o Gtk irá
que está sendo construído. No topo Factory, que a princípio é usada para chamar sempre que o usuário selecionar
desta janela é possível encontrar um criar a barra de menus Gtk::MenuBar. um item ou pressionar as teclas de ata-
menu principal, que nos dá acesso a ou- Cada entrada no menu, e seus sumenus lho correspondentes.
tros menus. Em especial, há neste menu correspondentes, é criada pelo método
uma opção denominada Quit. Esta create_items(). O parâmetro path especi- Gerenciador de layout
opção, que tem a finalidade de encerrar fica a posição de um item no menu, por Há dois métodos diferentes para ordenar
o programa, utiliza uma rotina co- exemplo, /_File/_Quit define que o item os widgets: Gtk::VBox e Gtk::Table. O
nhecida como Gtk->exit(0). Há também Quit estará abaixo de File na barra de Gtk::VBox é uma caixa responsável por
o objeto Gtk::AccelGroup, que permite menu. Os sublinhados presentes antes alinhar verticalmente os itens nele conti-
que o usuário pressione as teclas de File e Quit têm a função de ressaltar a dos. A função pack_start() posiciona os
[Ctrl]+[Q] para finalizar o programa. primeira letra destes dois nomes, per- elementos de cima para baixo enquanto
Além disso, o objeto adiciona atalhos de mitindo que o usuário possa acessar a função pack_end() os coloca de baixo
teclado para os itens nos menus. itens do menu através de atalhos, como para cima. Veja o exemplo a seguir:

Listagem 2: Gtkticker
124 }); 165 $row, $row+1); 206 $resp->content()) {
125 166 } 207
126 my $vb = Gtk::VBox->new( 167 } 208 my($symbol, $price,
127 0,0); 168 209 $change) =
128 my $upd = Gtk::Button->new( 169 $w->add($vb); 210 split /,/, $_;
129 'Update'); 170 211
130 171 # Destroying window 212 chop $change;
131 $vb->pack_start( 172 $w->signal_connect( 213 $change = "" if
132 $factory->get_widget( 173 'destroy', sub { 214 $change =~ /^0/;
133 '<main>'), 0, 0, 0); 174 Gtk->exit(0)}); 215
134 175 216 $symbol =~ s/"//g;
135 # Button at bottom 176 # Pressing update button 217 $LABELS[$count][0]->
136 $vb->pack_end($upd, 177 $upd->signal_connect( 218 set($symbol);
137 0, 0, 0); 178 'clicked', sub { 219 $LABELS[$count][1]->
138 179 DEBUG "Sending wakeup"; 220 set($price);
139 # Status line on top 180 $poe_kernel->post( 221 $LABELS[$count][2]->
140 # of buttons 181 'ticker', 'wake_up')} 222 set($change);
141 $STATUS= Gtk::Label->new(); 182 ); 223 $count++;
142 $STATUS->set_alignment( 183 $w->show_all(); 224 }
143 0.5, 0.5); 184 } 225
144 $vb->pack_end($STATUS, 185 226 $STATUS->set("");
145 0, 0, 0); 186 ############################# 227
146 my $table = 187 sub resp_handler { 228 1;
147 Gtk::Table->new( 188 ############################# 229 }
148 scalar @SYMBOLS, 3); 189 my ($req, $resp) = 230
149 190 map { $_->[0] } 231 #############################
150 $vb->pack_start($table, 191 @_[ARG0, ARG1]; 232 sub wake_up_handler {
151 1, 1, 0); 192 233 #############################
152 193 if($resp->is_error()) { 234 DEBUG("waking up");
153 for my $row (0.. 194 ERROR $resp->message(); 235
154 @SYMBOLS-1) { 195 $STATUS->set( 236 # Initiate update
155 for my $col (0..2) { 196 $resp->message()); 237 upd_quotes();
156 my $label = 197 return 1; 238
157 Gtk::Label->new(); 198 } 239 # Re-enable timer
158 $label->set_alignment( 199 240 $poe_kernel->delay(
159 0.0, 0.5); 200 DEBUG "Response: ", 241 'wake_up', $UPD_INTERVAL);
160 push @{$LABELS[$row]}, 201 $resp->content(); 242 }
161 $label; 202
162 203 my $count = 0;
163 $table->attach_defaults( 204
164 $label, $col, $col+1, 205 for(split /\n/,

www.linuxmagazine.com.br Agosto 2004 69


PROGRAMAÇÃO Perl Object Environment

$vb->pack_start($menu_bar, U A janela principal também tem uma Após completar estes passos prepa-
$expand, $fill, $padding); ação determinada – os usuários podem ratórios, wake_up_handler() usa a
clicar no botão com o “X” na parte supe- função delay() do kernel para enviar um
Este exemplo posiciona uma barra de rior direita da janela para finalizar a apli- alerta. Isso faz com que um evento
menus no topo da VBox. Na linha 132, o cação. O código seria: wake_up ocorra na sessão ticker quando
GTKTicker usa a função $factory-> o número de segundos definido em
get_widget(‘<main>‘) para acessar o $w->signal_connect('destroy', $UPD_INTERNAL (60 segundos neste
objeto da barra pelo seu nome. O sub {Gtk->exit(0)}); caso) tiver passado. A partir daí, o ticker
parâmetro $expand, usado na função irá automaticamente atualizar os valores
pack_start(), especifica se a área ocu- A sub-rotina finaliza o programa. Após a cada 60 segundos, sem que seja
pada pelo widget deverá crescer caso o definir os widgets, a função show() necessário pressionar o botão Update.
mouse seja usado para redimensionar a (linha 183) os exibe na janela principal. É fascinante ver o quão suave é a atu-
janela. Nesse caso, fill especifica se os alização da tela. Mesmo mexendo nos
widgets também deve crescer, o que per- O kernel contra-ataca menus enquanto o aplicativo executa
mitirá que botões e controles aumentem No estado yhoo_response, o kernel salta uma atualização automática através de
de tamanho de forma estrondosa. Final- para função na linha 187, resp_handler. uma conexão de rede lenta, a interface
mente, $padding determina o menor Por definição, quando isto acontece o permanece intacta.
número de pixels que deverá existir para POE::Component::Client::HTTP armaze-
separar verticalmente o widget de seus na pacotes com a solicitação e a resposta Problemas na instalação
vizinhos. Nosso GTKTicker exibe men- em ARG0 e ARG1. O POE usa este modo É melhor usar o CPAN para instalar o
sagens de status no widget Gtk:: Label ligeiramente estranho de passar parâ- POE e os módulos necessários, como
logo acima do botão Update. A função metros após a introdução de novas fun- POE::Component::Client::HTTP. Se o
set_alignmet() usa a seguinte sintaxe ções que representam constantes numé- módulo POE::Component::Client:DNS for
ricas, tais como KERNEL, HEAP, ARG0, instalado, as consultas ao servidor DNS
$STATUS->set_alignment U ARG1. Os responsáveis pelo POE espe- serão realizadas de forma assíncrona.
(0.5, 0.5); ram que os programadores as usem para Caso contrário, a função gethostby-
indexar o array de parâmetros das fun- name() pode causar um pequeno atraso.
para alinhar o texto horizontal e vertical- ções, como @_. Por exemplo, $_[KER- A instalação do Gtk a partir do CPAN
mente. Caso queira experimentar, utilize NEL] sempre retornará o objeto kernel, o causou alguns probleminhas em meu
na horizontal o valor 0.0 para alinhar o que ajuda a manter o índice para o qual sistema. Mas basta executar:
texto à esquerda, e o valor 1.0 para ali- KERNEL aponta transparente.
nhar o texto à direita. Os pacotes de solicitação e resposta touch ./Gtk/build/U
Ao contrário do Gtk::VBox, o Gtk:: mencionado acima são apenas referên- perl-gtk-ref.pod
Table fornece aos programadores uma cias a dois arrays, cujos elementos inici- perl Makefile.PL U
ferramenta para convenientemente dis- ais contém objetos HTTP::Request ou --without-guessing
por widgets em uma tabela. A função HTTP::Response. O comando map na
attach_defaults() recebe cinco parâme- linha 190 os extrai para $req e $resp. seguido de make install no diretório de
tros: o widget que será alinhado e duas Se ocorre um erro de HTTP, a linha instalação para resolvê-los. ■
coordenadas de linha e coluna, entre as 195 gera uma mensagem apropriada no
quais o widget será colocado. Veja o widget de status e a função retorna. Se INFORMAÇÕES
exemplo abaixo: não, o array bidimensional global de
widgets label é atualizado. Os widgets [1] Código deste artigo: http://www.linux-
$table->attach_defaults exibem o símbolo da empresa, o valor magazine.com/Magazine/Downloads/42/Perl/
($label, 0, 1, 1, 2); atual de cada ação e a variação como [2] POE: http://poe.perl.org
uma percentagem. No caso da variação [3] Jeffrey Goff,“A Beginner’s Introduction to
$label será colocado entre a primeira ser zero, ela é simplesmente ignorada. POE”, 2001: http://www.perl.com/pub/a/
linha (“entre 0 e 1”) e a segunda coluna 2001/01/poe.html
(“entre 1 e 2”) da tabela chamada $table Acorde! [4] Matt Sergeant,“Programming POE”, talk
Um evento wake_up no kernel chama a at TPC 2002: http://axkit.org/docs/
Ação! função wake_up_handler() definida a presentations/tpc2002
Você pode designar ações para os wid- partir da linha 232 (veja a Listagem 2). [5] Gtkperl: http://gtkperl.org
gets do tipo Gtk::Button, e o Gtk execu- Ela chama a função upd_quotes(), imple- [6] Tutorial de Gtkperl:
tará a ação quando um usuário pres- mentada a partir da linha 79. Esta função http://personal.riverusers.com/
sionar o botão. A função signal_con- define um objeto HTTP::Request e usa ~swilhelm/gtkperl-tutorial/
nect(), na linha 177 da Listagem 2, um evento para enviá-lo ao componente [7] Eric Harlow,“Developing Linux Applica-
especifica que Gtk deve enviar o evento POE::Component::Client::HTTP. O estado tions with GTK+ and GDK”: New
wake_up ao kernel quando o usuário alvo da sessão ticker é então designado Riders,1999,ISBN 0735700214
clicar no botão Update. como yhoo_response.

70 Agosto 2004 www.linuxmagazine.com.br


Ferramentas do KDE LINUX USER

Toque e organize sua coleção de músicas

JuK, o Rei do iê-iê-iê


A maioria dos media players têm uma grande desvantagem, eles não possuem playlist. O menu “drop-down” traz as
principais funções: New permite criar
uma ferramenta eficiente para administrar as playlists. No caso do JuK esse é uma playlist nova ou especificar um lista
existente em uma dada pasta. Você pode
exatamente um dos seus pontos mais fortes. Vamos dar uma olhada neste manipular o conteúdo das listas usando
a técnica de arrastar e soltar.
componente do novo KDE 3.2. POR DANIEL MOLKENTIN
Se quiser habilitar a visualização com-
pacta, clique com o botão direto do

C
D’s estão por fora – vida longa A interface lembra bastante o iTunes, mouse e selecione View Modes/Compact.
para a música digital! É verdade da Apple. Clique com o botão direito do Ou selecione Tree view para organizar
que uma coleção de músicas pre- mouse sobre uma coluna para especi- suas listas por álbum, artista ou mesmo
cisa de manutenção e o pacote kdemulti- ficar quais items devem (ou não) ser gênero. Cada playlist, com exceção da
media do KDE 3.2 traz uma nova mostrados na playlist. Collection List, pode ser salva no formato
ferramenta que faz exatamente isso, o m3u. Clique com o botão direito do
JuK [1] audio player. É fácil entender por mouse sobre ela e selecione Save as.
que ele administra tão bem sua lista de
músicas. Seu autor, Scott Wheeler [2], Divirta-se
originalmente o projetou para gerenciar O painel ao lado direto da janela do JuK
faixas (tracks) e metadados (título, esconde alguns truques: Por exemplo, o
artista, álbum, etc), e o chamou de Qtag- campo Search permite que você refine a
ger. A função de “tocar” as músicas foi seleção de faixas de uma dada playlist.
adicionada depois. O JuK suporta os for- Você pode salvar os resultados da busca
matos MP3, Ogg Vorbis e o Free Lossless como uma playlist dinâmica. Qualquer
Audio Codec, FLAC [3]. Figura 1: Playlists à esquerda, faixas à direita. faixa que satisfaça os termos é automati-
camente adicionada à lista.
Monte sua lista Gerenciamento Para selecionar a próxima faixa a ser
Quando você inicia o programa, é apre- Para adicionar faixas, você pode sele- tocada, sem interromper a que está
sentada somente uma lista vazia cioná-las individualmente clicando em tocando, basta clicar com o botão direto
(Playlist) do lado esquerdo. Essa lista File / Open ou informar ao JuK para adi- do mouse sobre a faixa e selecionar Play
chamada Collection list contém todas as cionar todo o conteúdo de uma pasta next. Se você pressionar a tecla [Shift] e
músicas (tracks) conhecidas pelo JuK. (File / Open folder), sempre que você fizer uma seleção múltipla, é possível
Você pode adicionar suas próprias abrir o programa. Cada vez que você ini- criar uma lista estática com as faixas
playlists mais tarde (veja Figura 1). Se ciar o JuK, o programa mostrará uma selecionadas.
você não precisar deste recurso, pode lista completa com as músicas existentes Se você fechar a janela principal, o
ocultar essa área simplesmente arras- nesse diretório e nos subdiretórios, e ícone do JuK aparece na área de notifi-
tando o divisor o máximo possível para a também as últimas adições à coleção. cação do KDE e uma janela pop-up se
esquerda com o mouse. Se você possui uma extensa coleção de abre para informar qual será a próxima
Os controles de reprodução, funda- músicas, o JuK pode demorar alguns música da lista. Para mostrar novamente
mentais, estão localizados na barra de segundos para carregar todas as infor- a janela principal, basta clicar simples-
ferramentas e podem ser posicionados mações, tais como os metadados para mente com o botão direito do mouse
na lateral ou no rodapé da janela, se todas as faixas, na primeira vez em que sobre o ícone do programa. ■
desejado. A barra de status na parte de você a acessar. Felizmente, isto não
baixo da janela apresenta informações impede que você continue usando o INFORMAÇÕES
sobre a playlist ou sobre a faixa atual. prgrama enquanto isso. Graças à um
Clicar no botão com a seta toca a faixa “cache” inteligente, estas informações 1] JuK: http://developer.kde.org/~wheeler/
atualmente selecionada na playlist. Se são armazenadas e reaproveitadas nas juk.html
você clicar no indicador que mostra o próximas vezes, o que tomará bem [2] Scott Wheeler: KDE Scripting with DCOP.
tempo decorrido, o JuK passa a exibir o menos tempo. Linux Magazine, Número 36, Novembro
tempo restante para o final da música. Se o JuK encontrar um aquivo .m3u 2003, p46
Clique novamente para voltar o modo (possivelmente criado pelo XMMS), seu [3] FLAC: http://flac.sourceforge.net/
normal de visualização. conteúdo será apresentado como uma

www.linuxmagazine.com.br Agosto 2004 75


LINUX USER Extensões para o Mozilla

Amplie os horizontes do seu navegador

O Sorriso do Lagarto
A
lguma vez você já deu uma pas- Extensões são pedacinhos de software que se “encaixam” em um programa,
sadinha em uma página na Inter-
net como a themes.mozdev.org adicionando novos recursos ou alterando certas funções. Elas são um dos pon-
para trocar o tema padrão do seu Mozilla
por algo mais simples ou colorido? Pois tos fortes dos softwares do projeto Mozilla, e permitem que eles se adaptem
saiba que existe um equivalente para as
ao gosto e à necessidade de qualquer usuário. POR CAIO BEGOTTI
extensões: a Extension Room [1], um
lugar com uma enorme galeria de exten-
sões (“add-ons”) para os vários soft- Tabbrowser DownloadWith
wares do projeto Mozilla, tanto para o A extensão Tabbrowser [3] aumenta Se você, como muitas outras pes-
próprio, como até para a dupla Firefox e ainda mais os recursos do sistema de soas, têm ódio mortal do
Thunderbird. Algumas extensões são navegação com abas do Mozilla. Com ela gerenciador de downloads
verdadeiros clássicos e acabaram por ser você pode reorganizar as abas existentes do Mozilla (ou Firefox),
incorporadas ao código oficial dos pro- simplesmente arrastando-as para a essa extensão é a
gramas, como a navegação com abas. A posição desejada. Você também pode salvação da lavou-
seguir, mostramos algumas extensões alterar a posição da barra de abas, ra. Ela permite
que podem ser muito úteis no dia-a-dia. movendo-a para outras partes da janela que um progra-
de navegação, reabrir abas que haviam ma externo qual-
Checky sido fechadas, configurar o posiciona- quer seja configu- Michael Sult,
A extensão Checky [2] é uma interface mento de abas que serão abertas e até rado para funcionar como ge- www.sxc.hu

bastante útil para quem cria conteúdo mesmo selecionar as abas usando o renciador de downloads padrão.
para a Internet, usada para validação e botão de rolagem do seu mouse. E não importa qual seja: desde o divino
análise de código. Com ela é possível Quer mais? Com a Tabbrowser é pos- wget, passando pelo Kget e prozilla e até
validar arquivos HTML, XHTML, CSS, sível impedir a abertura dos links de mesmo o Download Accelerator Plus
XML, SGML, RDF e RSS, junto à W3C uma aba, alterar a legenda delas, definir (DAP) ou o GetRight.
WAI, Section 508 ou P3P. Pode-se ainda um intervalo no qual as abas devem Vale mencionar que essa extensão foi
validar conteúdo específico para alguns recarregar a página exibida, alterar a cor originalmente criada por um brasileiro,
programas, como o Lynx, e muito mais. de uma aba, exibir o código fonte de um chamado Gustavo Bittencourt, e que
São mais de 40 serviços acessíveis com documento em uma nova aba ao invés atualmente seu desenvolvimento tam-
um toque de tecla – já que atalhos de de uma nova janela e, obviamente, sal- bém conta com a participação de vários
teclado permitem validar qualquer docu- var o estado das abas, para não ter de colaboradores estrangeiros.
mento em diversos serviços ao mesmo refazer toda a configuração mais tarde. Caso você se interesse em criar suas
tempo. Dentre os serviços disponíveis, Tantos recursos têm um preço: pode próprias extensões, visite a página do
destacam-se os oferecidos pelo W3C ser que o seu navegador fique um pouco XUL Brasil [5], grupo interessado no
(“World Wide Web Consortium”, que instável, mas os benefícios compensam. desenvolvimento de interfaces em XUL
define normas e padrões para a Inter- Existem várias outras extensões com (XML User Interface Language), a mes-
net), e a dupla Delorie e Colorfilter, que recursos similares ao Tabbrowser, e até ma linguagem usada pelo Mozilla e suas
analisa o esquema de cores usado em mesmo uma para os que odeiam as abas, extensões. Divirta-se! ■
seu documento e diz se pessoas com chamada Tab Killer.
problemas visuais conseguirão enxergá-
los, e até mesmo gera folhas de estilo INFORMAÇÕES
próprias para certos tipos de daltonismo.
[1] Extension Room:
Caio Begotti <enter- http://extensionroom.mozdev.org/
SOBRE O AUTOR

caio@uol.com.br> é fasci- [2] Checky: http://checky.mozdev.org/


nado pelas tecnologias
[3] TabBrowser:
que fazem parte do KDE e
participa, entre outros, dos http://tabbrowser.mozdev.org/
projetos Open Source Web [4] DownloadWith:
Design (http://www. http://downloadwith.mozdev.org/
oswd.org/) e Mozilla Brasil (http://
[5] XUL Brasil: http://xul.im.ufba.br/
www.mozilla.org.br/~cbegotti/).
Figura 1: Janela de configuração do DownloadWith.

76 Agosto 2004 www.linuxmagazine.com.br


LINUX USER Problemas no KDE 3.2

Usabilidade do KDE3.2 (no Suse9.0)

Nós Estamos Quase Lá!


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

O
KDE3.2 é melhor que seu prede- Os exemplos que citamos aqui são ape- no servidor FTP da SuSe [1]. Todas as
cessor. Esta afirmação tem sido nas uma seleção arbitrária, e o sistema versões apresentaram os sintomas des-
verdadeira a cada nova versão de relato de bugs do KDE (http://bugs. critos neste artigo.
do KDE. Entre várias outras novidades kde.org/) fornece ampla oportunidade
temos o KWallet, um gerenciador de sen- para uma pesquisa mais detalhada. Cabe Problemas com Correio
has e credenciais, o conjunto de aplica- aos leitores decidirem por si mesmos se Eletrônico (e-mail)
tivos para organização de informações os novos recursos do KDE3.2 valem o A primeira coisa que muitos usuários
pessoais (PIM) Kontact, o jukebox JuK esforço para superar os obstáculos. – olham é o funcionamento do leitor de e-
(veja artigo na p.75), o Kopete para men- apesar de tudo, pessoas diferentes pos- mail, e a nova versão do KMail causa
sagens instantâneas e o Kig para geo- suem necessidades diferentes, e para boa impressão. Infelizmente, essa boa
metria, só para citar alguns. Todos estes muitos não seria a primeira vez que impressão inicial logo é desfeita por um
ilustres programas foram incorporados teriam que tolerar alguns bugs. bug que faz com que as mensagens que
aos pacotes do núcleo do desktop Nosso laboratório usou o SuSe Linux passam por filtros caiam em um buraco
(core packages). Os programas já exis- 9.0 – usuários de outras distribuições negro. E isto não aconteceu só com as
tentes contam um grande conjunto de podem ser mais afortunados e livrarem- mensagens filtradas: de tempos em tem-
novas características, correções de prob- se de alguns dos problemas que tivemos. pos as mensagens baixadas não apare-
lemas e melhorias de usabilidade. Usamos o KDE 3.2 nas versões Beta cem na caixa de entrada ou em um
Entretanto, nem sempre os usuários 3.1.94, 3.1.95, e a versão 3.2 encontrada subdiretório designado como mailbox. O
estão procurando por novidades. Huma- mesmo problema ocorreu quando nós
nos são criaturas de hábitos, e é Werner Harrichhausen, usa Linux há usamos um filtro POP.
geralmente mais importante para os usu- mais de seis anos. Ele tem seu próprio O projeto KDE disponibilizou uma cor-
O AUTOR

ários que seus programas favoritos tra- negócio baseado em Linux chamado reção [3] para o problema em 5 de
balhem como sempre fizeram. Esta é a Bin-OSProjekte, e atualmente fevereiro, entretanto o patch ainda não
aprende C/C++ em um curso à dis-
motivação deste artigo, procurar entre a se encontrava nos pacotes oficiais do
tância. É um grande fã do “The
selva de programas existentes lá fora as KDE para o SuSe 9.0 [1], nem nos
Sweet”e gosta de ficar na compa-
armadilhas nas quais um usuário desa- pacotes mais atualizados do KDE/SuSe
nhia da esposa e de seus três gatos.
visado pode cair após uma atualização. 9.0 de 3 de fevereiro [2].

78 Agosto 2004 www.linuxmagazine.com.br


Problemas no KDE 3.2 LINUX USER

Centro de Informações seguida init 5. O KDE3.2 recusou-se a


O KMail não é mais um aplicativo iso- funcionar até que o servidor X fosse der-
lado, ele agora é parte do Kontact Infor- rubado e reiniciado.
mation Center, que inclui também o Felizmente, há uma forma de con-
KNode, um leitor de news, o KOrganizer, tornar o problema em algumas ocasiões.
gerenciador de tarefas e calendário, o Antes de executar o KBear no KDE 3.2,
KDE Address Book, livro de endereços, apague a pasta criada por ele em /home/-
notas post-it virtuais, cortesia do KNotes, username/.kde/apps/. A pasta será recri-
e algumas outras ferramentas. ada na próxima vez que você executar o
Infelizmente, o KOrganizer parece não programa. O ponto negativo é que este
estar feliz em ser um programa no meio Figura 1: O recurso que elimina a necessidade de truque não é totalmente confiável: ele
de muitos, e tende a “sumir” com os memorizar milhares de senhas pode gerar falsas não funcionou nas versões Beta, embora
dados de sua agenda de tempos em tem- esperanças. tenha funcionado com os pacotes já
pos. Você precisa recarregar o arquivo prontos do KDE 3.2 para o SuSe 9.0.
.ics para recuperá-los. E da próxima vez Se você inicia o KNode, o KWallet
que você abrir o programa sob o Kontact, pede que você digite sua senha nova- Tudo funcionando?
onde estão seus dados? Adeus outra vez. mente, mais a senha para o leitor de Nós experimentamos problemas simi-
Este problema não ocorre quando você notícias. Ok, tenha calma. Mas na pró- lares onde o servidor X congelou algu-
inicia o KOrganizer sozinho. xima vez que você iniciar o KNode o mas vezes, entretanto estes travamentos
O KOrganizer também perde os rótulos programa pede que você digite as mes- aparentemente ocorriam de forma ale-
coloridos aplicados a seus compromissos mas senhas novamente, tanto para o atória, e não pudemos determinar a
ou grupos de compromissos. Neste caso KWallet como para o leitor de notícias. causa exata. O fato de que diversos pro-
o bug ocorre com ou sem o Kontact. Você pode acabar tendo que repetir isso gramas caíram ocasionalmente, embora
eternamente. Este problema também sem efeitos tão devastadores, nos deixa
Senha?! acontece ocasionalmente quando você boquiabertos e perguntado porque a
Alguns dos outros novos membros na tenta acessar sua caixa postal no KMail. equipe do projeto KDE não aguardou a
multidão que é o KDE também apresen- A única solução que pudemos encontrar conclusão de mais testes antes de
tam problemas. O KWallet, por exemplo. foi parar de usar o KWallet. declarar a versão 3.2 como estável. Seria
Esta ferramenta oferece facilidade no porque a data oficial de lançamento já
gerenciamento de senhas para acesso à Deixe-me entrar! havia sido ultrapassada e eles não
Internet. A princípio uma boa idéia, Usamos os mesmos métodos para saber ousaram adiá-la por mais tempo? Ou
como evidenciado por funções seme- se o KWallet agiria da mesma forma com uma eventual falta de comunicação, por
lhantes encontradas nos navegadores o KBear [4], programa de FTP, e há uma parte dos beta-testers, dos bugs encon-
Opera e Mozilla. boa razão para fazer o teste. Assim que trados fez com que o projeto acreditasse
Quando você executa o programa, um você executar este pacote (que não faz estar maduro o suficiente para ser dis-
pequeno ícone com a aparência de uma parte dos pacotes básicos do KDE) no tribuído em larga escala?
carteira é exibido no canto inferior dire- KDE 3.2 e acessar um servidor FTP, o Mesmo assim, nossa opinião é de que
ito do painel. Você pode clicar no ícone desktop inteiro congela (nós testamos as o KDE3.2 é realmente um gigantesco sal-
para exibir uma janela vazia, e então versões 2.1-395 e 2.1-413). to à frente. Infelizmente, qualquer um
selecionar File/New digital wallet… Nossa tentativas reiniciar o servidor X que precise do Linux trabalhando com a
(Arquivo/Nova carteira digital) para com [Ctrl+Alt+Backspace] falharam. A precisão de um relógio suiço deve man-
abrir a janela de configuração. Você deve única esperança era ir a um console em ter-se afastado do KDE 3.2.0. Nesse caso,
então digitar uma senha mestra, como modo texto (no SuSe9.0, digite [Ctrl+ você deve considerar o upgrade para a
mostrado na Figura 1. F1]) para, como root, digitar init 3, e em versão 3.2.3, já disponível. ■

GLOSSÁRIO INFORMAÇÕES
PIM Suíte: Uma coleção integrada de progra- base são obrigatórios. Qualquer outro pro- [1] Pacotes do Suse Linux KDE 3.2:
mas para gerenciamento de seus dados pes- grama (o “kdeedu”, pacote de ferramentas ftp://ftp.suse.com/pub/suse/i386/ supple-
soais, como mensagens do email, livro de educacionais ou o “kdegraphics”de ferramen-
mentary/KDE/update_for_9.0
endereços e lista de tarefas Uma (teorica- tas gráficas, por exemplo) é opcional. Algu-
mente) grande vantagem sobre os programas mas distribuições tendem a dividir os pacotes [2] Download oficial do KDE:
que trabalham de forma individual é a possi- do núcleo em vários pacotes menores para ftp://ftp.kde.org/pub/kde/stable/3.2/
bilidade do compartilhamento de dados facilitar a manipulação.
entre os programas, o que agiliza a busca [3] Patch do KMail:
Patch: Um pedaço de software que corrige
pelas informações. bugs, ou adiciona novos recursos, a um pro- ftp://ftp.kde.org/pub/kde/stable/3.2/src/
Pacotes do Núcleo (Core Packages): O ambi- grama. No caso do Software Livre/Open kdepim-3.2.0-HOT_FIX_FOR_KMAIL.patch
ente desktop KDE é organizado por áreas de Source, geralmente o patch precisa ser [4] KBear: http://kbear.sourceforge.net/
aplicação e distribuído através de múltiplos inserido no código-fonte do programa, que
pacotes, dos quais somente o kdelibs e o kde- em seguida deve ser recompilado. [5] Projeto KDE: http://www.kde.org

www.linuxmagazine.com.br Agosto 2004 79


LINUX USER Desktópolis

Xpad

Tome Nota!
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

C
ompromissos, tarefas, endereços, Xpad não atrapalha nem tira sua visão A nota virtual é uma janela que você
anotações e números de telefone – da tela do computador, e não causa pode mover como qualquer outra.
há todo tipo de uso para estas no- indisposição com os defensores das Quando você acessa uma janela do
tas práticas e “pegajosas”. Disponíveis causas ambientais. Xpad, surge uma barra de ferramentas
em muitas cores e tamanhos diferentes, na parte de baixo da nota. Mantendo o
elas figuram em todos os lugares – Instalando o Xpad botão esquerdo do mouse pressionado
alguns incomuns, como monitores, Usuários do Mandrake podem simples- você pode mover a janela para qualquer
mesas, e até mesmo luminárias, mente instalar o pacote rpm do Xpad. Já lugar em seu desktop. Arraste o canto
esperando pacientemente por alguém usuários de outras distribuições podem inferior direito desta barra para aumen-
que execute a tarefa nela anotada e então tentar a sorte com o próprio pacote do tar ou diminuir o tamanho das notas
a despache para a lixeira. Mandrake, que foi instalado sem proble- (veja a Figura 2).
Uma história de sucesso na vida real, mas no Red Hat Linux 9.0 ou, falhando Se outra janela esconder a barra de fer-
as notas amarelas seriam uma adição útil isto, você sempre pode instalar o pro- ramentas você pode manter a tecla Con-
ao desktop de qualquer computador. Ao grama a partir do código fonte. trol [Ctrl] pressionada e clicar sobre a
menos esta era a idéia de Michael Terry Se você pretende compilar o código- nota para movê-la para outra posição.
quando lançou o projeto Xpad (http://- fonte, necessitará das bibliotecas e dos Para redimensionar a janela, segure
xpad.sourceforge.net/), com o objetivo pacotes de desenvolvimento do GTK+ 2, novamente o [Ctrl], mas desta vez pres-
de criar uma alternativa virtual ao Post- XFree86 e libgdk-pixbuf. Os pacotes de sione o botão direito do mouse. A tecla
It. Ao contrário da versão em papel o desenvolvimento são geralmente identi- [Alt] pode ser usada ao invés do [Ctrl].
ficados por sufixos como -devel ou -dev. Use a janela do Xpad como qualquer
Depois de instalar todos os pacotes outro editor de texto, escrevendo as
extras necessários, digite o comando a notas com seu teclado. As anotações não
seguir no terminal para descompactar o saem do espaço definido por você. Se
código fonte: você precisar escrever mais texto do que
o tamanho da janela, o programa exibe
tar -xjf xpad-1.13.tar.bz2 uma barra de rolagem, entretanto, isto
significa perder a vantagem da leitura
Entre no diretório xpad-1.13 que foi imediata do conteúdo da nota.
criado durante a descompactação. Feito Adicionar outras notas é provavel-
isso, digite ./configure e make para con- mente, a melhor solução. Para isso,
figurar e compilar o programa. Assegure- clique no ícone no lado esquerdo da
se de estar como root e digite make
install para instalar o programa em um
diretório abaixo da árvore /usr/local.
Figura 1: Um guia rápido dá as boas-vindas ao
usuário de primeira viagem. Post-its para seu Desktop
O Xpad roda em quase todos os gerenci-
Desktópolis adores de janelas. Para usá-lo na
Só você pode decidir o visual do seu desktop. primeira vez digite xpad & em um termi-
Em Desktópolis nós lhe convidamos a em- nal, e ele logo mostra um guia rápido
barcar regularmente em uma viagem pelos (veja a Figura 1) que explica os passos
gerenciadores de janelas e ambientes desk- básicos. Ao fechar esse guia, o Xpad cria
top, onde conheceremos utilidades, inutili- imediatamente um lembrete quadrado Figura 2: Quando o foco é colocado sobre a janela
dades e “brinquedos bonitinhos”. de 200 pixels de lado em seu desktop. do Xpad, uma barra de ferramentas aparece.

80 Agosto 2004 www.linuxmagazine.com.br


Desktópolis LINUX USER

barra de ferramentas, aquele com a fonte (font face) permite que você que o programa adicione barras de rola-
aparência de uma folha de papel em escolha o tipo e o tamanho das letras e gem às notas. Isto permitirá que a janela
branco. Se você estiver tendo dificul- em “Border” (bordas) você pode definir do programa aumente se você precisar
dades para encontrar uma nota especí- a cor e a larguara da borda. anotar mais texto do que o tamanho
fica, possivelmente outra janela está O campo “padding” especifica a dis- padrão permite. Allow Window Manager
sobre ela, ocultando-a. Clique com o tância entre o texto e as bordas da Decorations permite que o gerenciador
botão direito em qualquer janela do janela. O Xpad aplica imediatamente as de janelas aplique suas próprias bordas
Xpad, e selecione Notes/Show All (mos- alterações, permitindo ver em tempo real às janelas do Xpad.
tre todas as notas), para exibir todas elas o resultado da mudança, o que garante a Window Manager Close Action permite
em primeiro plano. melhor legibilidade de suas que você especifique o que
Você pode eliminar as notas clicando notas (veja a figura 3). deve ser feito quando você
no ícone da lixeira na barra de ferramen- encerrar o Xpad. Ele pode,
tas. Já botão à direita da barra de ferra- Mudando as Figura 6: Ícone do por exemplo, fechar e salvar
mentas, com o ícone de uma porta, configurações Xpad na bandeja de todas as janelas automatica-
encerra o Xpad. Não são todos os que gostam sistema do KDE. mente (Close and save all
da cor amarela tradicional, e a pads), ou salvar e fechar
Arquivos Xpad fonte padrão poderia ser um pouco apenas a nota atual (Close and save
Como uma alternativa viável ao similar maior para os usuários com maior re- pad), ou ainda, descartar a nota,
em papel, o Xpad salva suas notas solução de vídeo. Ao invés de mudar jogando-a no lixo sem avisar (Destroy
quando você sai do programa. Para isso cada lembrete individualmente, uma pad (no confirmation)).
o Xpad armazena o tamanho, a posição e tarefa trabalhosa, simplesmente altere o A aba Toolbar permite configurar as
o conteúdo de qualquer nota ativa, regis- padrão para atender às suas exigências. preferências da barra de ferramentas.
trando todos estes dados no arquivo Selecione Editar/Preferências (Edit/Pre- Você pode desativar a opção de auto-
~/.xpad. Os arquivos com o prefixo info ferences) no menu para poder alterar as ocultação para mantê-la na tela todo o
contém dados sobre a opções de configuração no tempo.Se você preferir trabalhar sem ela,
aparência e tamanho de centro de controle do Xpad. pode desmarcar a opção Enable toolbar
todas as suas notas. As primeiras quatro abas da (ativar barra de ferramentas); as funções
Na próxima vez que janela: Cor do texto, cor de estão disponíveis no menu drop-down.
você abrir o Xpad, ele fundo, bordas e fonte já nos A seção Toolbar Buttons permite que
vai restaurar os dados de são familiares. Utilizamos as você especifique quais botões deverão
sua última sessão. O pro- mesmas para alterar a config- ser exibidos na barra de ferramentas
grama possui um meca- uração individual de cada (veja a Figura 4). Ao mover o ponteiro
nismo muito útil para se lembrete, conforme mostra- do mouse sobre qualquer um dos botões,
proteger da perda de da- Figura 3: Nota com fundo mos anteriormente. uma descrição do mesmo é exibida. O
dos em casos de trava- laranja, fonte azul e borda A aba de opções (Options) botão com o ícone de um pincel é ex-
mento ou queda do de 7 pixels. permite que você altere várias tremamente útil, pois permite que você
sistema: ele salva auto- configurações gerais. Marque exiba ou oculte o conteúdo de uma nota.
maticamente suas notas enquanto você a opção Pads Start Sticky para exibir O botão com o ícone da chave de
está trabalhando, e não apenas quando qualquer nova nota em todos os seus fenda e martelo possibilita rápido acesso
você sai do programa. desktops virtuais. Selecione Pad/Sticky às configurações. Você pode mover bo-
para fazer isto com apenas uma nota. tões para a seção Unused Buttons (bo-
Destacando Notas Desabilite Allow Scrollbars para evitar tões sem uso) ou levá-los de volta à
Importantes seção Used Buttons (botões usados) da
Uma forma de destacar as notas mais barra de ferramentas. Use o mesmo pro-
importantes é alterar sua aparência. O cesso para mudar a ordem dos botões ou
Xpad possibilita uma configuração dife- removê-los individualmente.
rente para cada nota. Para abrir o menu Ao clicar no botão com a seta verde os
de configuração selecione Pad/Properties usuários do KDE terão uma surpresa:
em qualquer janela do Xpad. Em todas as notas são movidas para o painel
primeiro lugar, desabilite os ajustes de acesso rápido do seu desktop (veja a
globais – global settings – para que o Figura 5). Para exibí-las novamente,
programa não utilize a aparência padrão basta clicar sobre o ícone no painel.
para esta nota. Em nossos testes o Gnome (2.2 e 2.4)
Quatro abas permitem que você defina apresentou problemas com esta função.
a aparência das notas. Use o seletor de As janelas do Xpad desapareceram como
cores para escolher a cor do texto (text esperado, mas ao clicar no ícone nada
color). A cor do fundo (background) é Figura 5: Seleção dos botões que serão exibidos acontece, e as notas simplesmente se re-
selecionada da mesma forma. A aba na barra de ferramentas. cusam a reaparecer. ■

www.linuxmagazine.com.br Agosto 2004 81


LINUX USER Papo de Botequim

Curso de Shell Script

Papo de Botequim
Você não agüenta mais aquele seu porque, em inglês, Shell significa con-
cha, carapaça, isto é, fica entre o u-
amigo usuário de Linux enchendo o suário e o sistema operacional, de
forma que tudo que interage com
seu saco com aquela história de que o o sistema operacional, tem que
passar pelo seu crivo.
sistema é fantástico e o Shell é uma

ferramenta maravilhosa? A partir


O ambiente Shell
Bom já que para chegar ao
desta edição vai ficar mais fácil en- núcleo do Linux, no seu ker-
nel que é o que interessa a
tender o porquê deste entusiasmo... todo aplicativo, é necessária a
filtragem do Shell, vamos enten-
POR JULIO CEZAR NEVES der como ele funciona de forma a
tirar o máximo proveito das inú-
meras facilidades que ele nos oferece.

D
iálogo entreouvido em uma mesa O Linux, por definição, é um sistema
de um botequim, entre um multiusuário – não podemos nunca nos
usuário de Linux e um empur- esquecer disto – e para permitir o acesso
rador de mouse: O ambiente Linux de determinados usuários e barrar a en-
• Quem é o Bash? Para você entender o que é e como fun- trada de outros, existe um arquivo cha-
• É o filho caçula da família Shell. ciona o Shell, primeiro vou te mostrar mado /etc/passwd, que além de fornecer
• Pô cara! Estás a fim de me deixar como funciona o ambiente em camadas dados para esta função de “leão-de-chá-
maluco? Eu tinha uma dúvida e você do Linux. Dê uma olhada no gráfico cara” do Linux, também provê informa-
me deixa com duas! mostrado na Figura 1. ções para o início de uma sessão (ou
• Não, maluco você já é há muito tem- Neste gráfico podemos ver que a ca- “login”, para os íntimos) daqueles que
po: desde que decidiu usar aquele sis- mada de hardware é a mais profunda e é passaram por esta primeira barreira. O
tema operacional que você precisa formada pelos componentes físicos do último campo de seus registros informa
reiniciar dez vezes por dia e ainda por seu computador. Em torno dela, vem a ao sistema qual é o Shell que a pessoa
cima não tem domínio nenhum sobre camada do kernel que é o cerne do vai receber ao iniciar sua sessão.
o que esta acontecendo no seu com- Linux, seu núcleo, e é quem põe o hard- Lembra que eu te falei de Shell, fa-
putador. Mas deixa isso prá lá, pois ware para funcionar, fazendo seu geren- mília, irmão? Pois é, vamos começar a
vou te explicar o que é Shell e os com- ciamento e controle. Os programas e entender isto: o Shell é a conceituação
ponentes de sua família e ao final da comandos que envolvem o kernel, dele de concha envolvendo o sistema opera-
nossa conversa você dirá: “Meu Deus se utilizam para realizar as tarefas para cional propriamente dito, é o nome
do Shell! Porque eu não optei pelo que foram desenvolvidos. Fechando tudo genérico para tratar os filhos desta idéia
Linux antes?”. isso vem o Shell, que leva este nome que, ao longo dos muitos anos de exis-

Quadro 1: Uma rapidinha nos principais sabores de Shell


Bourne Shell (sh): Desenvolvido por Stephen do sh e a elas agregou muitas outras. A com- C Shell (csh): Desenvolvido por Bill Joy, da
Bourne do Bell Labs (da AT&T, onde também patibilidade total com o sh vem trazendo Universidade de Berkley, é o Shell mais uti-
foi desenvolvido o Unix), foi durante muitos muitos usuários e programadores de Shell lizado em ambientes BSD. Foi ele quem intro-
anos o Shell padrão do sistema operacional para este ambiente. duziu o histórico de comandos. A
Unix. É também chamado de Standard Shell Boune Again Shell (bash): Desenvolvido ini- estruturação de seus comandos é bem simi-
por ter sido durante vários anos o único, e é cialmente por Brian Fox e Chet Ramey, este é lar à da linguagem C. Seu grande pecado foi
até hoje o mais utilizado. Foi portado para o Shell do projeto GNU. O número de seus ignorar a compatibilidade com o sh, partindo
praticamente todos os ambientes Unix e dis- adeptos é o que mais cresce em todo o por um caminho próprio.
tribuições Linux. mundo, seja por que ele é o Shell padrão do Além destes Shells existem outros, mas irei
Korn Shell (ksh): Desenvolvido por David Linux, seja por sua grande diversidade de falar somente sobre os três primeiros, tratan-
Korn, também do Bell Labs, é um supercon- comandos, que incorpora inclusive diversos do-os genericamente por Shell e assinalando
junto do sh, isto é, possui todas as facilidades comandos característicos do C Shell. as especificidades de cada um.

82 Agosto 2004 www.linuxmagazine.com.br


Papo de Botequim LINUX USER

tência do sistema operacional Unix, redirecionamento, que pode ser de


foram aparecendo. Atualmente existem
Com que Shell eu vou? entrada (stdin), de saída (stdout) ou dos
Quando digo que o último campo do arqui-
diversos sabores de Shell (veja Quadro 1 erros (stderr), conforme vou explicar a
vo /etc/passwd informa ao sistema qual é o
na página anterior). seguir. Mas antes precisamos falar de...
Shell que o usuário vai usar ao se “logar”, isto
deve ser interpretado ao pé-da-letra. Se este
Como funciona o Shell campo do seu registro contém o termo prog, Substituição de Variáveis
O Shell é o primeiro programa que você ao acessar o sistema o usuário executará o Neste ponto, o Shell verifica se as even-
ganha ao iniciar sua sessão (se quiser- programa prog. Ao término da execução, a tuais variáveis (parâmetros começados
mos assassinar a língua portuguesa sessão do usuário se encerra automatica- por $), encontradas no escopo do
mente. Imagine quanto se pode incremen-
podemos também dizer “ao se logar”) no comando, estão definidas e as substitui
tar a segurança com este simples artifício.
Linux. É ele quem vai resolver um monte por seus valores atuais.
de coisas de forma a não onerar o kernel
com tarefas repetitivas, poupando-o para volvidos (inclusive o próprio programa), Substituição de Meta-
tratar assuntos mais nobres. Como cada e retorna um erro caso o usuário que Caracteres
usuário possui o seu próprio Shell inter- chamou o programa não esteja autor- Se algum meta-caracter (ou “coringa”,
pondo-se entre ele e o Linux, é o Shell izado a executar esta tarefa. como *, ? ou []) for encontrado na linha
quem interpreta os comandos digitados e de comando, ele será substituído por
examina as suas sintaxes, passando-os $ ls linux seus possíveis valores.
esmiuçados para execução. linux Supondo que o único item no seu
• Êpa! Esse negócio de interpretar co- diretório corrente cujo nome começa
mando não tem nada a ver com inter- Neste exemplo o Shell identificou o ls co- com a letra n seja um diretório chamado
pretador não, né? mo um programa e o linux como um pa- nomegrandeprachuchu, se você fizer:
• Tem sim: na verdade o Shell é um in- râmetro passado para o programa ls.
terpretador que traz consigo uma po- $ cd n*
derosa linguagem com comandos de Atribuição
alto nível, que permite construção de Se o Shell encontra dois campos separa- como até aqui quem está manipulando a
loops, de tomadas de decisão e de ar- dos por um sinal de igual (=) sem espa- linha de comando ainda é o Shell e o
mazenamento de valores em variáveis, ços em branco entre eles, ele identifica programa cd ainda não foi executado, o
como vou te mostrar. esta seqüência como uma atribuição. Shell expande o n* para nomegrandepra-
• Vou explicar as principais tarefas que o chuchu (a única possibilidade válida) e
Shell cumpre, na sua ordem de exe- $ valor=1000 executa o comando cd com sucesso.
cução. Preste atenção, porque esta
ordem é fundamental para o entendi- Neste caso, por não haver espaços em Entrega da linha de comando
mento do resto do nosso bate papo. branco (que é um dos caracteres reserva- para o kernel
dos), o Shell identificou uma atribuição e Completadas todas as tarefas anteriores,
Análise da linha de comando colocou 1000 na variável valor. o Shell monta a linha de comando, já
Neste exame o Shell identifica os carac- com todas as substituições feitas e
teres especiais (reservados) que têm sig- Resolução de chama o kernel para executá-la em um
nificado para a interpretação da linha e Redirecionamentos novo Shell (Shell filho), que ganha um
logo em seguida verifica se a linha pas- Após identificar os componentes da li- número de processo (PID ou Process
sada é um comando ou uma atribuição nha que você digitou, o Shell parte para IDentification) e fica inativo, tirando
de valores, que são os ítens que vou a resolução de redirecionamentos. uma soneca durante a execução do pro-
descrever a seguir. O Shell tem incorporado ao seu elenco grama. Uma vez encerrado este processo
de habilidades o que chamamos de (e o Shell filho), o “Shell pai” recebe
Comando novamente o controle e exibe um
Quando um comando é digi- “prompt”, mostrando que está pronto
tado no “prompt” (ou linha de Shell para executar outros comandos.
comando) do Linux, ele é divi-
dido em partes, separadas por
Programas e Comandos Cuidado na Atribuição
espaços em branco: a primeira Núcleo ou Kernel Jamais faça:
parte é o nome do programa,
cuja existência será verificada; Hardware $ valor = 1000
bash: valor: not found
em seguida, nesta ordem, vêm
Neste caso, o Bash achou a palavra valor iso-
as opções/parâmetros, redire-
lada por espaços e julgou que você estivesse
cionamentos e variáveis.
mandando executar um programa chama-
Quando o programa identifi-
do valor, para o qual estaria passando dois
cado existe, o Shell verifica as parâmetros: = e 1000.
permissões dos arquivos en- Figura 1: Ambiente em camadas de um sistema Linux

www.linuxmagazine.com.br Agosto 2004 83


LINUX USER Papo de Botequim

Decifrando a Pedra de Roseta $ echo \* esperando pelo teclado (Entrada Padrão)


Para tirar aquela sensação que você tem $ echo * e como também não citei a saída, o que
quando vê um script Shell, que mais eu teclar irá para a tela (Saída Padrão),
parece uma sopa de letrinhas ou um con- Viu a diferença? criando desta forma – como eu havia
junto de hieróglifos, vou lhe mostrar os • Aspas (“): exatamente iguais ao após- proposto – um programa gago. Experi-
principais caracteres especiais para que trofo, exceto que, se a cadeia entre mente!
você saia por aí como Champollion deci- aspas contiver um cifrão ($), uma
frando a Pedra de Roseta. crase (`), ou uma barra invertida (\), Redirecionamentop da Saída
estes caracteres serão interpretados Padrão
Caracteres para remoção do pelo Shell. Para especificarmos a saída de um pro-
significado. Não precisa se estressar, eu não te dei grama usamos o símbolo “>” ou o
É isso mesmo, quando não desejamos exemplos do uso das aspas por que “>>”, seguido do nome do arquivo pa-
que o Shell interprete um caractere você ainda não conhece o cifrão ($) ra o qual se deseja mandar a saída.
específico, devemos “escondê-lo” dele. nem a crase (`). Daqui para frente - Vamos transformar o programa ante-
Isso pode ser feito de três maneiras difer- veremos com muita constância o uso rior em um “editor de textos”:
entes, cada uma com sua peculiaridade: destes caracteres especiais; o mais
• Apóstrofo (´): quando o Shell vê uma importante é entender seu significado. $ cat > Arq
cadeia de caracteres entre apóstrofos,
ele retira os apóstrofos da cadeia e não Caracteres de O cat continua sem ter a entrada especi-
interpreta seu conteúdo. redirecionamento ficada, portanto está aguardando que os
A maioria dos comandos tem uma entra- dados sejam teclados, porém a sua saída
$ ls linuxm* da, uma saída e pode gerar erros. Esta está sendo desviada para o arquivo Arq.
linuxmagazine entrada é chamada Entrada Padrão ou Assim sendo, tudo que esta sendo tecla-
$ ls 'linuxm*' stdin e seu dispositivo padrão é o teclado do esta indo para dentro de Arq, de for-
bash: linuxm* no such file U do terminal. Analogamente, a saída do ma que fizemos o editor de textos mais
or directory comando é chamada Saída Padrão ou curto e ruim do planeta.
stdout e seu dispositivo padrão é a tela Se eu fizer novamente:
No primeiro caso o Shell “expandiu” o do terminal. Para a tela também são
asterisco e descobriu o arquivo linux- enviadas normalmente as mensagens de $ cat > Arq
magazine para listar. No segundo, os erro oriundas dos comandos, chamada
apóstrofos inibiram a interpretação do neste caso de Saída de Erro Padrão ou Os dados contidos em Arq serão perdi-
Shell e veio a resposta que não existe o stderr. Veremos agora como alterar este dos, já que antes do redirecionamento o
arquivo linuxm*. estado de coisas. Shell criará um Arq vazio. Para colocar
• Contrabarra ou Barra Invertida (\): i- Vamos fazer um programa gago. Para mais informações no final do arquivo eu
dêntico aos apóstrofos exceto que a isto digite (tecle “Enter” ao final de cada deveria ter feito:
barra invertida inibe a interpretação linha – comandos do usuário são ilus-
somente do caractere que a segue. trados em negrito): $ cat >> Arq
Suponha que você, acidentalmente,
tenha criado um arquivo chamado * $ cat Redirecionamento da Saída
(asterisco) – o que alguns sabores de E-e-eu sou gago. Vai encarar? de Erro Padrão
Unix permitem – e deseja removê-lo. E-e-eu sou gago. Vai encarar? Assim como por padrão o Shell recebe os
Se você fizesse: dados do teclado e envia a saída para a
O cat é um comando que lista o con- tela, os erros também vão para a tela se
$ rm * teúdo do arquivo especificado para a você não especificar para onde eles de-
Saída Padrão (stdout). Caso a entrada vem ser enviados. Para redirecionar os
Você estaria na maior encrenca, pois o não seja definida, ele espera os dados da erros, use 2> SaidaDeErro. Note que en-
rm removeria todos os arquivos do stdin (a entrada padrão). Ora como eu tre o número 2 e o sinal de maior (>)
diretório corrente. A melhor forma de não especifiquei a entrada, ele a está não existe espaço em branco.
fazer o serviço é: Vamos supor que durante a execução
Redirecionamento Perigoso de um script você pode, ou não (depen-
$ rm \* Como já havia dito, o Shell resolve a linha e dendo do rumo tomado pela execução
depois manda o comando para a execução. do programa), ter criado um arquivo
Desta forma, o Shell não interpreta o Assim, se você redirecionar a saída de um chamado /tmp/seraqueexiste$$. Como
asterisco, evitando a sua expansão. arquivo para ele próprio, primeiramente o não quer ficar com sujeira no disco
Faça a seguinte experiência científica: Shell “esvazia”este arquivo e depois manda rígido, ao final do script você coloca a
o comando para execução! Desta forma, linha a seguir:
para sua alegria, você acabou de perder o
$ cd /etc
conteúdo de seu querido arquivo.
$ echo '*' rm /tmp/seraqueexiste$$

84 Agosto 2004 www.linuxmagazine.com.br


Papo de Botequim LINUX USER

caprichamos, né? Então ao invés de sair


Dados ou Erros? redigindo o mail direto no “prompt”, de
Etiquetas Erradas
Preste atenção! Não confunda >> com 2>. O forma a tornar impossível a correção de Um erro comum no uso de labels (como o
primeiro anexa dados ao final de um arqui- fimftp do exemplo anterior) é causado pela
uma frase anterior onde, sem querer,
vo, e o segundo redireciona a Saída de Erro presença de espaços em branco antes ou
você escreveu um “nós vai”, você edita
Padrão (stderr) para um arquivo que está após o mesmo. Fique muito atento quanto a
um arquivo com o conteúdo da mensa-
sendo designado. Isto é importante! isso, por que este tipo de erro costuma dar
gem e após umas quinze verificações
uma boa surra no programador, até que seja
sem constatar nenhum erro, decide
detectado. Lembre-se: um label que se preze
Caso o arquivo não existisse seria envi- enviá-lo e para tal faz:
tem que ter uma linha inteira só para ele.
ado para a tela uma mensagem de erro.
Para que isso não aconteça faça: $ mail chefe@chefia.com.br < U
arquivocommailparaochefe nada a partir deste ponto até encontrar
rm /tmp/seraqueexiste$$ 2> U o ‘label’ fimftp. Você não entenderia
/dev/null e o chefe receberá uma mensagem com o droga nenhuma, já que são instruções
conteúdo do arquivocommailparaochefe. específicas do ftp”.
Para que você teste a Saída de Erro Pa- Outro tipo de redirecionamento “muito Se fosse só isso seria simples, mas
drão direto no prompt do seu Shell, vou louco” que o Shell permite é o chamado pelo próprio exemplo dá para ver que
dar mais um exemplo. Faça: “here document”. Ele é representado por existem duas variáveis ($Usuario e
<< e serve para indicar ao Shell que o $Senha), que o Shell vai resolver antes
$ ls naoexiste escopo de um comando começa na linha do redirecionamento. Mas a grande
bash: naoexiste no such file U seguinte e termina quando encontra uma vantagem deste tipo de construção é
or directory linha cujo conteúdo seja unicamente o que ela permite que comandos tam-
$ ls naoexiste 2> arquivodeerros “label” que segue o sinal <<. bém sejam interpretados dentro do
$ Veja o fragmento de script a seguir, escopo do “here document”, o que,
$ cat arquivodeerros com uma rotina de ftp: aliás, contraria o que acabei de dizer.
bash: naoexiste no such file U Logo a seguir te explico como esse
or directory ftp -ivn hostremoto << fimftp negócio funciona. Agora ainda não dá,
user $Usuario $Senha estão faltando ferramentas.
Neste exemplo, vimos que quando fize- binary • O comando user é do repertório de
mos um ls em naoexiste, ganhamos uma get arquivoremoto instruções do ftp e serve para passar o
mensagem de erro. Após redirecionar a fimftp usuário e a senha que haviam sido
Saída de Erro Padrão para arquivodeerros lidos em uma rotina anterior a este
e executar o mesmo comando, recebe- neste pedacinho de programa temos um fragmento de código e colocados res-
mos somente o “prompt” na tela. Quan- monte de detalhes interessantes: pectivamente nas duas variáveis:
do listamos o conteúdo do arquivo para • As opções usadas para o ftp (-ivn) $Usuario e $Senha.
o qual foi redirecionada a Saída de Erro servem para ele listar tudo que está • O binary é outra instrução do ftp, que
Padrão, vimos que a mensagem de erro acontecendo (opção -v de “verbose”), serve para indicar que a transferência
tinha sido armazenada nele. para não ficar perguntando se você de arquivoremoto será feita em modo
É interessante notar que estes carac- tem certeza que deseja transmitir cada binário, isto é o conteúdo do arquivo
teres de redirecionamento são cumula- arquivo (opção -i de “interactive”) e não será inteerpretado para saber se
tivos, isto é, se no exemplo anterior finalmente a opção -n serve para dizer está em ASCII, EBCDIC, …
fizéssemos o seguinte: ao ftp para ele não solicitar o usuário e • O comando get arquivoremoto diz ao
sua senha, pois estes serão informados cliente ftp para pegar este arquivo no
$ ls naoexiste 2>> U pela instrução específica (user); servidor hostremoto e trazê-lo para a
arquivodeerros • Quando eu usei o << fimftp, estava nossa máquina local. Se quiséssemos
dizendo o seguinte para o interpreta- enviar um arquivo, bastaria usar, por
a mensagem de erro oriunda do ls seria dor: “Olha aqui Shell, não se meta em exemplo, o comando put arquivolocal.
anexada ao final de arquivodeerros.
Direito de Posse Redirecionamento de
Redirecionamento da O $$ contém o PID,isto é,o número do seu comandos
Entrada Padrão processo. Como o Linux é multiusuário,é Os redirecionamentos de que falamos até
Para fazermos o redirecionamento da En- bom anexar sempre o $$ ao nome dos seus agora sempre se referiam a arquivos, isto
trada Padrão usamos o < (menor que). arquivos para não haver problema de propri- é, mandavam para arquivo, recebiam de
“E pra que serve isso?”, você vai me per- edade,isto é,caso você batizasse o seu ar- arquivo, simulavam arquivo local, … O
guntar. Deixa eu dar um exemplo, que quivo simplesmente como seraqueexiste,a que veremos a partir de agora, redirecio-
você vai entender rapidinho. primeira pessoa que o usasse (criando-o na a saída de um comando para a entra-
então) seria o seu dono e a segunda ganharia
Suponha que você queira mandar um da de outro. É utilíssimo e, apesar de não
um erro quando tentasse gravar algo nele.
mail para o seu chefe. Para o chefe nós ser macaco gordo, sempre quebra os

www.linuxmagazine.com.br Agosto 2004 85


LINUX USER Papo de Botequim

maiores galhos. Seu nome é “pipe” (que $ echo "Existem who | wc -l U $ (pwd ; cd /etc ; pwd)
em inglês significa tubo, já que ele cana- usuarios conectados" /home/meudir
liza a saída de um comando para a Existem who | wc -l usuarios U /etc
entrada de outro) e sua representação é a conectados $ pwd
| (barra vertical). /home/meudir
Hi! Olha só, não funcionou! É mesmo,
$ ls | wc -l não funcionou e não foi por causa das “Quequeiiisso” minha gente? Eu estava
21 aspas que eu coloquei, mas sim por que no /home/meudir, mudei para o /etc,
eu teria que ter executado o who | wc -l constatei que estava neste diretório com
O comando ls passou a lista de arquivos antes do echo. Para resolver este proble- o pwd seguinte e quando o agrupamento
para o comando wc, que quando está ma, tenho que priorizar a segunda parte de comandos terminou, eu vi que conti-
com a opção -l conta a quantidade de li- do comando com o uso de crases: nuava no /etc/meudir!
nhas que recebeu. Desta forma, pode- Hi! Será que tem coisa do mágico
mos afirmar categoricamente que no $ echo "Existem `who | wc -l` U Mandrake por aí? Nada disso. O interes-
meu diretório existiam 21 arquivos. usuarios conectados" sante do uso de parênteses é que eles
Existem 8 usuarios U invocam um novo Shell para executar os
$ cat /etc/passwd | sort | lp conectados comandos que estão em seu interior.
Desta forma, fomos realmente para o
A linha de comandos acima manda a Para eliminar esse monte de brancos diretório /etc, porém após a execução de
listagem do arquivo /etc/passwd para a antes do 8 que o wc -l produziu, basta todos os comandos, o novo Shell que
entrada do comando sort. Este a classi- retirar as aspas. Assim: estava no diretório /etc morreu e retor-
fica e envia para o lp que é o gerenciador namos ao Shell anterior que estava em
da fila de impressão. $ echo Existem `who | wc -l` U /home/meudir.
usuarios conectados Que tal usar nossos novos conceitos?
Caracteres de ambiente Existem 8 usuarios conectados
Quando queremos priorizar uma expres- $ mail suporte@linux.br << FIM
são, nós a colocamos entre parênteses, As aspas protegem da interpretação do Ola suporte, hoje as `date U
não é? Pois é, por causa da aritmética é Shell tudo que está dentro dos seus lim- “+%hh:mm”` ocorreu novamente U
normal pensarmos deste jeito. Mas em ites. Como para o Shell basta um espaço aquele problema que eu havia U
Shell o que prioriza mesmo são as crases em branco como separador, o monte de reportado por telefone. De U
(`) e não os parênteses. Vou dar exemp- espaços será trocado por um único após acordo com seu pedido segue a U
los para você entender melhor. a retirada das aspas. listagem do diretorio:
Eu quero saber quantos usuários estão Outra coisa interessante é o uso do `ls -l`
“logados” no computador que eu admi- ponto-e-vírgula. Quando estiver no Shell, Abracos a todos.
nistro. Eu posso fazer: você deve sempre dar um comando em FIM
cada linha. Para agrupar comandos em
$ who | wc -l uma mesma linha, temos que separá-los Finalmente agora podemos demonstrar o
8 por ponto-e-vírgula. Então: que conversamos anteriormente sobre
“here document”. Os comandos entre
O comando who passa a lista de usuários $ pwd ; cd /etc; pwd ;cd -;pwd crases tem prioridade, portanto o Shell
conectados ao sistema para o comando /home/meudir os executará antes do redirecionamento
wc -l, que conta quantas linhas recebeu e /etc do “here document”. Quando o suporte
mostra a resposta na tela. Muito bem, /home/meudir receber a mensagem, verá que os
mas ao invés de ter um número oito comandos date e ls foram executados
solto na tela, o que eu quero mesmo é Neste exemplo, listei o nome do diretório antes do comando mail, recebendo então
que ele esteja no meio de uma frase. Ora, corrente com o comando pwd, mudei um instantâneo do ambiente no
para mandar frases para a tela eu só pre- para o diretório /etc, novamente listei o momento de envio do email.
ciso usar o comando echo; então vamos nome do diretório e finalmente voltei pa- - Garçom, passa a régua! ■
ver como é que fica: ra o diretório onde estava anteriormente
(cd -), listando seu nome. Repare que Julio Cezar Neves é Analista de Su-
SOBRE O AUTOR

Buraco Negro coloquei o ponto-e-vírgula de todas as porte de Sistemas desde 1969 e tra-
Em Unix existe um arquivo fantasma. formas possíveis, para mostrar que não balha com Unix desde 1980, quando
Chama-se /dev/null.Tudo que é enviado importa se existem espaços em branco fez parte da equipe que desenvolveu
para este arquivo some. Assemelha-se a um antes ou após este caracter. o SOX, sistema operacional, similar
Buraco Negro. No caso do exemplo, como ao Unix, da Cobra Computadores. É
Finalmente, vamos ver o caso dos
não me interessava guardar a possível men- professor do curso de Mestrado em
parênteses. No exemplo a seguir, colo-
sagem de erro oriunda do comando rm, redi- Software Livre das Faculdades Estácio
camos diversos comandos separados por
recionei-a para este arquivo. de Sá, no Rio de Janeiro.
ponto-e-vírgula entre parênteses:

86 Agosto 2004 www.linuxmagazine.com.br


DebConf 4 COMUNIDADE

DebConf 4 – 5º Encontro de Desenvolvedores do Debian

Sarge cai no Samba!


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

A
pós Oslo no ano passado, neste GNU/Linux voltadas para a educação. pelidado pelos desenvolvedores como
ano foi a vez de Porto Alegre ter a Mas o tema que despertou maior inter- “Palavras do Rei”. O último dia foi espe-
honra de servir de sede para a esse foi o trabalho na próxima versão da cialmente caracterizado pelo evento: o
principal conferência da comunidade distribuição, Debian GNU/Linux 3.1, “Dia Sem Fins Lucrativos” (Nonprofit-
Debian. Deste modo, o 5º encontro codinome Sarge. Participantes que que- Day), voltado para os desenvolvedores
(seguindo um antigo costume “hacker” a riam trabalhar nas novas rotinas de que se interessam especialmente pelo
contagem começou do zero, com a Deb- instalação do sistema se “apossaram” de projeto “Debian Nonprofit”, uma abor-
Conf 0) manteve a tradição de ser real- uma sala após alguns dias. E muito em- dagem que tem por objetivo otimizar a
izado uma vez na Europa e no ano bora o coordenador do desenvolvimento distribuição de acordo com as necessi-
seguinte em algum outro continente. A de Sarge não estivesse presente na con- dades de instituições não comerciais.
decisão por Porto Alegre não foi por ferência, a oportunidade foi aproveitada
acaso: o 5º Fórum Internacional de Soft- para discutir os planos para a nova ver- A gente se vê na Finlândia?
ware Livre foi realizado na seqüência. são do sistema e mesmo para versões A DebConf se mostrou novamente um
A Debconf durou oito dias este ano, ao futuras. Além de palestras e workshops componente importante das atividades
contrário do ano passado, quando só houve também oportunidade para deixar da comunidade Debian, sendo ao mes-
levou três dias. Muitos dos desenvolve- o computador de lado e fazer uma mo tempo celeiro de idéias e oficina de
dores chegaram antes do início da con- excursão para Gramado. implementação. O sucesso justifica a re-
ferência, para tomar parte do DebCamp, Na terceira noite do encontro houve alização do evento anualmente. No ano
evento concebido como maratona de um “jantar formal” com o líder mundial que vem, pelo que parece, teremos um
programação, com o objetivo de trazer do projeto Debian, Martin Michlmayr. O “repeteco” na Finlândia, que é para mui-
resultados preliminares antes mesmo do discurso ocorrido antes do jantar foi a- tos a pátria do Linux. ■
início da DebConf. Neste ano, ambos os
eventos 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 como
Hewlett-Packard, Cisco Systems e O’Reil-
ly foi com certeza um dos fatores que
tornou isto possível: sem ele muitos dos
desenvolvedores não teriam como arcar
com os custos de viagem.

Sarge e distribuições
customizadas
A programação do evento foi apertada:
palestras e workshops ocorriam muitas
vezes ao mesmo tempo. Atividades abor-
dando Distribuições Debian Customiza-
das (DDC) despertaram em particular
bastante interesse. Petter Reinholdtsen,
por exemplo, apresentou os projetos Figura 1: Este ano a DebConf no Brasil contou com mais de 150 participantes da comunidade Debian. Em
Skolelinux e Debian-Edu. Ambos os pro- oito dias de conferência os desenvolvedores tiveram a oportunidade de participar de palestras e work-
jetos são customizações do Debian shops, bem como de trabalhar na nova versão do sistema.

www.linuxmagazine.com.br Agosto 2004 87


COMUNIDADE 5º FISL

5º FISL – Fórum Internacional de Software Livre

O Brasil Mostra o Caminho…


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

T
empos estranhos vivemos hoje: ro dia do evento, permitindo assim que aspectos políticos fossem um dos tópicos
enquanto o hemisfério norte entra seus participantes do mundo todo pu- mais discutidos durante as conversas e
em batalhas hercúleas na fronteira dessem planejar sua participação no palestras. Conseqüentemente uma das
das patentes de software e se preocupam fórum. De acordo com o ponto de vista maiores surpresas do evento se aven-
com o rumo do futuro da tecnologia, por de Martin Konold, do projeto KDE, o turou no terreno político.
nossas bandas tupiniquins decidimos FISL já é maior que o Linux-Kongress, na
avisar que as regras estão mudando, e Alemanha, que atualmente é o maior Qual é seu nome, Linux?
ninguém pode mais nos parar agora. O evento de Software Livre na Europa. E é Uma boa surpresa veio através de um
que começa a se realizar aqui é sonho claro, as presenças de grandes nomes painel idealizado e coordenado pelo gaú-
dos primeiros idealizadores do movi- mundiais do Software Livre e também cho Leonardo Vaz, como resultado de
mento de Software Livre. Creative Commons estiveram presentes, um movimento crescente iniciado por
E os grandes sinais desta mudança entre eles o cada vez mais brasileiro ele. O movimento em si tem a meta de
foram vistos no Fórum Internacional de John Maddog Hall, o “X.org-Man” Jim parar as brigas internas da comunidade
Software Livre em Porto Alegre, em sua Gettys e o idealizador da Creative Com- de Software Livre com o intuito de evitar
quinta edição (http://www.softwarelivre. mons, Lawrence Lessig. uma assalto político ao mesmo, e para
org/forum2004). A expectativa do início do fórum era unir as diversas “tribos”.
Sob olhares impressionados, os diver- grande e compreensível. Após o grande Você conhece bem todas elas: for-
sos participantes estrangeiros do fórum evento de capacitação promovido pelo madas pelos grupos de usuários de dis-
assistiram a um evento composto de governo em Brasília, onde oficialmente o tribuições bem como comunidades de
mais de 4500 participantes registrados, tempo de migração brasileira foi inici- desenvolvedores, unidos com o objetivo
provindos de 35 países e composto de ado, havia um medo inerente do pro- de acabar com uma rivalidade estúpida,
mais de 100 palestras e painéis durante blema de continuidade deste programa. bem como imprensa especializada e pro-
um período de 4 dias, de 2 a 5 de Junho. Mas esta mudança se mostrou real e sóli- fessores universitários.
Colaborando com o grande momento, a da dentro do FISL, um ponto de união Este painel colocou diversos represen-
DebConf 4, realizada na semana prévia entre a comunidade com uma meta co- tantes de todos estes movimentos no
do evento, também em Porto Alegre, teve mum. Considerando este um ano eleito- mesmo patamar, e no melhor espírito
seu último dia se sobrepondo ao primei- ral, ninguém se mostrou surpreso que hacker, pediu à grande platéia (sentada

Figura 1: O dia começando no Fórum. Figura 2: E o palco ainda não estava completo…

88 Agosto 2004 www.linuxmagazine.com.br


5º FISL COMUNIDADE

inclusive no chão devido à falta de


espaço) o fim de tais divergências. Um
sentimento 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 forma
religiosa, foi um dos temas centrais. O
painel surpreendentemente mostrou aos
participantes que talvez GNU/Linux não
seja exatamente o meio correto de se
denominar o sistema operacional. Por
quê? Porque se fôssemos admitir que o
sistema deveria ter seu nome adequado
às suas licenças, teríamos algo como
GNUApacheBSDXFreeMIT…/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ções Figura 3: A comunidade bagunçada e unida.
políticas ser uma realidade necessária, o
medo vem da possibilidade de que se sem diferenças. A definição seria Geek chão com os notebooks no colo. Não po-
fale mais do que se faça, o que indireta- encontra Político que encontra Hacker, deria haver espírito mais família.
mente representaria um retrocesso em todos na mesma roda de chimarrão.
face da situação atual. Coisas que só um fórum internacional Entrevistas, entrevistas e
Mas o tema central foi como evitar a poderia fazer, como ver a “embaixada mais entrevistas…
desunião atual da comunidade. A cons- temporária” da Alemanha no estande do É desnecessário dizer que um evento
tante e desnecessária rivalidade entre KDE. Onde até mesmo os brasileiros que deste porte traz atenção da mídia. Porém
grupos, oriunda de ataques indiretos, chegavam por lá sabiam Alemão (coisas desta vez não apenas a mídia regular de
causa divergências onde a união seria do Sul), se juntando aos alemães pre- tecnologia, mas televisões e jornais na-
necessária. No painel, foi possível ver sentes, tanto do projeto quanto alguns cionais e internacionais, incluindo desta-
membros de várias destas comunidades da DebConf que estacionaram por ali ques como o pessoal do “Vitrine”, da TV
falando em uma só voz. A mensagem é (nota do repórter: até o editor chefe da Cultura, que estavam extasiados com o
de competição colaborativa (e depois Linux Magazine Brasil que estacionou que viam. Foram gravadas diversas en-
sair e beber uma cerveja juntos). por lá também tinha seus cacoetes de trevistas e reportagens no seu estilo
Alemão). Ou mais: fazer festa com um divertido e aberto, e, para surpresa deles,
Não há lugar como o $HOME grupo de usuários Linux da Argentina encontraram um grupo extremamente re-
E funcionou: No pavilhão dos Grupos de em dia de jogo oficial de futebol entre os ceptivo, o que demonstrou claramente
Usuários (GUS), um espaço democrático dois países, algo que todo brasileiro sabe que a lenda de um “micreiro” não ser
para grupos de usuários de distribuições ser quase uma disputa religiosa. sociável não é necessariamente real.
e projetos de desenvolvimento, o que se Talvez um dos grandes fatores envolvi- E eles não eram a única equipe de TV
via era um clima de festa e união. Mem- dos nesta integração foi aquele jeitinho por ali: cerca de 10 ou mais equipes
bros do projeto KDE eram interpelados brasileiro de arrumar tudo: a despeito de foram vistas, incluindo um curioso docu-
para tirar fotos na frente do banner do uma tentativa frustrada de algumas pes- mentário feito por uma equipe ameri-
projeto Gnome. E, imagine só, tudo isso soas da organização, nenhum dos estan- cana, encomendado por uma emissora
acontecendo no melhor bom humor e es- des seguiu um determinado padrão. privada especializada em tecnologia
pírito de comunidade. Praticamente todos os grupos chegavam (algo não muito comum por aqui). Adi-
Existia trânsito livre entre os estandes, e faziam a pergunta básica do receituário cionalmente, tivemos o lançamento de
não importando de qual projeto ou em- “geek”: “Onde está o ponto de rede?”. duas revistas que têm como tema o Soft-
presa. Raramente se via um estande ocu- Assim que era obtida a resposta, cada ware Livre e o Linux (uma delas você
pado somente por seus integrantes ou grupo se largava à vontade no estande, tem o prazer de estar lendo agora), e
visitantes, sempre havia algum “alien” às vezes dividindo-o com outro grupo, uma grande cobertura da mídia não es-
em volta. Até mesmo o pessoal do gover- retirando divisórias, enfim, uma grande pecializada, considerada um marco indi-
no (carinhosamente chamados “.gov”, festa. Para não perder o costume, alguns cador de quão longe o movimento de
no idioma nativo de internet ) estava cabos de rede perdidos foram tomados Software Livre já chegou no Brasil. Ques-
passeando por lá, às vezes parando para como “reféns” e o que se via era um tionados alguns sobre o motivo de, neste
bater um papo, sem constrangimento, monte de pessoas felizes sentadas no momento em especial, estar dando co-

www.linuxmagazine.com.br Agosto 2004 89


COMUNIDADE 5º FISL

Figura 4: Nerd também é Cultura… Uma das várias entrevistas. Figura 5: À espera de um ministro…

bertura a um evento deste porte com de sugestão para implantar a licença, Em uma impressionante mudança par-
maior atenção aos detalhes (já houveram não esperava que alguém que por tantos cial de ponto de vista, um dos mais
outros similares), a resposta mostrava anos esteve ligado à indústria da música, importantes e respeitados analistas eco-
claramente que não há mais apenas a aceitaria tão bem: é de Gil a primeira nômicos do país, Luís Nassif, conhecido
interesses tecnológicos envolvidos, e sim música licenciada pela ReCombo. crítico do modelo de exploração comer-
que está se tratando de um modelo eco- O criador da idéia, o jurista Lawrence cial do Software Livre, falou abertamente
nômico e político de um país. E isso leva- Lessig falou claramente que é impressio- de novas possibilidades de funciona-
nos ao tema central da maior (e mais nante ver uma licença criada para ser a- mento deste modelo.
esperada) palestra do evento. plicada primeiramente no tão chamado Questionado pela Linux Magazine so-
“primeiro mundo”, ser utilizada em pri- bre o porquê da mudança de ponto de
Leia, escute, use, copie, meiro lugar em um país emergente que vista, Nassif respondeu:
reutilize não tem medo de mudar. “Eu ainda não estou convencido sobre
É claro, estamos falando da “Creative Em uma impressionante analogia com a viabilidade econômica do modelo atual
Commons”. Em um movimento arrojado a criação do Piano (“Piano Forté”), John de exportação de Software Livre, porém
do Ministério da Cultura, junto com Fin- “Maddog” Hall mostrou porque é uma após a equipe do Sérgio Amadeu (Dire-
lândia e Japão, o Brasil foi um dos pessoa tão amada pela comunidade: tor-Presidente do ITI, ver página 8) me
primeiros países a adaptar a licença da como historiador e personalidade cati- mostrar como o desenvolvimento do
Creative Commons ao seu sistema legal. vante ele conseguiu, num rápido dis- Kernel e de outros projetos de Software
E foi mais além, um novo adendo à curso interrompido pela chegada do Livre é organizado e estruturado, pude
licença foi criado e batizado aqui. A ministro Gil, correlacionar o modelo de conceber a idéia de viabilidade.”
ReCombo (nome de um grupo musical licenciamento da Creative Commons Quem poderia conceber que um inte-
nacional que trabalha especificamente com a estratégia usada pelo criador do grante do governo poderia convencer um
com montagens). Essa licença realiza o piano para popularizá-lo. Foi aplaudido economista sobre as vantagens modelo
sonho de muitos DJ’s mundo afora: ela de pé por cerca de 2000 pessoas durante de mercado adotado pelo Software Livre?
finalmente cria uma base legal para a quase três minutos. Mas o mundo está mudando, e com
reutilização de conteúdo. Até este mo- E isso, mesmo após a interrupção cau- seus arrebates costumeiros Marcelo Tas
mento divisor de águas, tudo era feito sada pela chegada do ministro, também fechou o painel com a frase mais mar-
em uma espécie de acordo de cavalhei- recebido com muitos aplausos. Vale lem- cante de toda a conferência. Na posição
ros, mas sempre existiu a incerteza legal. brar que esta é a primeira vez que um de quem teve contato com a Internet e a
Sim: nós mudamos isso! ministro de estado vem a um fórum de computação muito cedo devido à sua
A Fundação Getúlio Vargas ajudou a Software Livre. Porém, para decepção profissão, ele disse:
capitanear o projeto e a dar-lhe o emba- dos fãs (e repórteres) presentes, depois “Olhem todo mundo. Eu estou aqui,
samento legal. O mentor do projeto aqui, de um longo e sonolento discurso, o mi- em 2004, em um evento de informática,
Ronaldo Lemos da Silva Júnior, se encar- nistro praticamente não pôde parar para sentado com economistas, advogados e
regou ele mesmo de se aproximar do cumprir seus compromissos de entre- músicos, em frente de uma platéia enor-
atual ministro da cultura, Gilberto Gil, vistas e fotos. Mas antes de sua saída, me que parece que saiu de um show de
levando-o a comprar a idéia. Durante a dois importantes integrantes da mesa Rock’n’Roll, falando sobre liberdade de
palestra, Ronaldo contou que, quando se passaram as mensagens que definiram o direitos autorais e nosso ministro da cul-
aproximou do ministro na sua tentativa que foi este fórum. tura é Gilberto Gil !!!” ■

90 Agosto 2004 www.linuxmagazine.com.br


Educação Livre COMUNIDADE

Educação Livre em Santo André

Liberdade para Aprender


E
m dezembro de 2002, havia um O Software Livre é por excelência a plataforma ideal na educação assistida por
certo descontentamento da equipe
do Centro Público Onze de Junho, computador. O Centro Público de Formação Profissional de Tecnologia da Infor-
em Santo André, com o sistema de en-
sino e os cursos oferecidos por ela a tra- mação em Software Livre é um caso bem sucedido do seu uso.
balhadores municipais desempregados,
POR CIBELE PÓVOA LUPIS, ERNANI MOREIRA E MARCO SINHORELI
em diversas áreas, em algumas escolas
profissionalizantes municipais. Por outro
lado, havia também muita vontade de
fazer e oferecer coisas melhores e dife-
rentes à população da cidade.
Uma das decisões tomadas naquela
época foi a especialização das escolas
municipais em Centros Públicos, dividi-
dos por área de atuação profissional.
Nascia o Centro Público de Formação
Profissional de Tecnologia da Informação
em Software Livre [1], mantido com re-
cursos municipais, dirigido e coordenado
por um convênio entre a Secretaria de
Educação e Formação Profissional da
Prefeitura Municipal de Santo André e a
Escola Sindical São Paulo da CUT.
Bo
Engatinhando bb
ie
Os
bo
A escola de informática não poderia ser rn
e,
w
w
apenas um centro de treinamento, mas w.
sx
c.h
sim um lugar que, além de propiciar a u

aprendizagem da informática pelos alu-


nos, levasse em consideração a experiên-
cia de vida deles e apontasse caminhos
para encontrar alternativas de emprego
ou renda. A equipe deveria se apoiar no
ensino de conceitos computacionais de Software Livre para uma A adoção de um sistema operacional
forma ampla, para que os alunos não Educação Livre livre possibilitaria fomentar entre nossos
passassem pela experiência de esquecer A proposta educacional do centro sem- alunos a discussão sobre o mundo da
tudo o que aprenderam um mês depois pre buscou priorizar a conquista da auto- tecnologia da informação, disponibili-
de terminar o curso por não possuir nomia intelectual por parte do aluno, zando um elemento prático a mais para
computador em casa. ensinando-o a aprender como aprender. discutir com os alunos o tipo de globali-
Outra decisão importante daquela épo- Também sempre foi parte da prática edu- zação construída nas últimas décadas, e
ca, e que viria a ser fundamental no cacional discutir com os alunos não só que, no caso específico da informática,
futuro, foi estudar e compreender um conteúdo técnico, mas também assuntos gerou a chamada “exclusão digital”.
novo sistema operacional, bem popular relativos a Trabalho e Cidadania. Nessa Ao tomar contato com as idéias e as
então: o Linux. A equipe descobriu que perspectiva, entre outras coisas, são criti- possibilidades do mundo do Software
na verdade o Linux não era a única coisa cados os monopólios, o individualismo e Livre, a equipe começou a vislumbrar
que deveria ser estudada, e um novo a ganância desenfreada, motivadoras de grandes possibilidades educacionais, o
mundo começou a surgir: o mundo do uma arrasadora onda de desemprego e que não ocorria com os softwares utiliza-
Software Livre e suas idéias, licenças e de desagregação social no país. A neces- dos até então, todos proprietários.
demais definições. Era um mundo bem sidade de solidariedade e ações que Outra vantagem percebida imediata-
diferente do já conhecido e, ao mesmo transcendam o indivíduo também sem- mente era o baixo custo, que possibili-
tempo, bem próximo do desejado. pre foram conteúdos privilegiados. tava oferecer mais cursos e itinerários

www.linuxmagazine.com.br Agosto 2004 91


COMUNIDADE Educação Livre

formativos na escola. A equipe decidiu, nada melhor que o Software Livre, que Hoje percebe-se que argumentos como
então, se preparar para incorporar o Soft- por excelência é construído para incenti- esses são produto de uma falta de conhe-
ware Livre ao seu sistema de ensino. var esta característica em seus usuários. cimento tanto do Software Livre, que em
Os nomes dos cursos foram modifica- Para o usuário que aprende em Linux, nada deixa a desejar quando comparado
dos: ao invés de ter o nome do software operar uma máquina sob a plataforma ao software proprietário, como do pró-
que seria objeto de ensino, por exemplo Microsoft é bastante plausível. Já o prio mercado de trabalho, onde as opor-
“Word”, eles passaram a ser chamados inverso não pode ser garantido. tunidades para quem sabe operar um
pela tarefa realizada pelo programa, co- A utilização do Software Livre na ad- sistema Linux aumentam cada vez mais.
mo “Editor de Textos”, a fim de dissociar ministração pública e em empresas é Também mostram a existência de uma
o curso de uma determinada plataforma. grande, e estará se intensificando a curto profunda confusão no que diz respeito
e médio prazo, o que já justificava bas- ao que é ensinar. Se a idéia fosse sim-
É difícil mudar tante a opção por seu ensino. plesmente adestrar os alunos a apertar
No início do ano seguinte (2003) foi rea- O que faltava era vencer as dificul- botões, estes argumentos até fariam sen-
lizado um planejamento para o ensino dades, sobretudo as de ordem técnica. tido, mas como a intenção nunca foi
do Software Livre. Todos os instrutores Embora o centro contasse com profis- essa, conforme já dissemos anterior-
receberam um treinamento básico sobre sionais que já conheciam e utilizavam mente, o centro estava no caminho certo.
Linux antes do início das aulas, foi cri- Linux, eles não tinham ainda a experiên- Por fim o maior de todos os desafios
ada uma sala de estudo, vários manuais cia adequada na utilização do sistema, foi a própria equipe. O preconceito e o
foram disponibilizados, “Install-Fests” de modo que, algumas vezes, a simples medo de mudanças faziam com que
(instalações, trocas de experiências e instalação de uma distribuição em um muitas pessoas ficassem simplesmente
debates) sobre GNU/Linux foram reali- computador gerava frustrações e dúvidas aterrorizadas com a idéia de que na me-
zadas e foi aberto um processo de dis- a respeito da estratégia. tade restante daquele ano, os alunos
cussão que culminaria com a inclusão do teriam que ter aulas de Linux. Foi neces-
ensino do GNU/Linux a todas as turmas sário pensar em estratégias de convenci-
a partir de agosto daquele ano, sem no mento e mais cursos de formação para
entanto abandonar o ensino na pla- dar mais segurança ao profissionais, so-
taforma Windows, mas com a perspec- bretudo aos profissionais de ensino.
tiva da migração total para Software Ainda existe muita resistência no uso
Livre a longo prazo. do GNU/Linux em vários locais e isso é
Mas todo o esforço realizado, e toda a vivenciado no centro. As pessoas acham
boa intenção no uso de Software Livre, que o GNU/Linux é muito difícil, e que
era justificado diante da mudança que somente “hackers” são capazes de ope-
estava em curso? Será que o GNU/Linux rá-lo. Mas com o uso, medos e receios
não seria muito difícil de ser operado, e Figura 1: Fachada do Centro Público. vão sendo dissipados e substituídos pela
portanto de difícil aprendizagem? Será vontade de aprender mais, de se apri-
que os alunos, ao aprenderem esta nova Na maioria das vezes, o insucesso na morar e descobrir novos recursos.
plataforma, não estariam despreparados incursão pelo Linux se devia à letargia
para o mercado de trabalho, uma vez intelectual à qual todos foram expostos Mudança contra a vontade
que a maioria dos computadores em uso ao utilizar durante anos o sistema opera- Assim, a instalação do GNU/Linux nas
nas empresas operam sob a plataforma cional proprietário dominante. Tudo máquinas foi planejada e iniciada. Um
Microsoft Windows? vinha de bandeja e quando não havia estudo revelou uma oportunidade muito
A resposta a estas perguntas deu à pro- mais jeito para resolver um problema a interessante e barata de reaproveitamen-
posta de trabalho do centro plenas con- solução era formatar o HD e reinstalar to dos recursos já existentes: a utilização
dições não só de oferecer uma educação um backup do sistema. Um perito em de um projeto norte-americano, livre,
de qualidade, mas também de oferecer Software Livre foi contratado para mos- com o qual computadores relativamente
um ensino com bastante requinte técnico trar o caminho para o sucesso, o que aju- antigos podem operar em rede sem a
e de última geração. Além disso ela con- dou muito no avanço da proposta. necessidade de disco rígido local. A exe-
ta com uma plataforma que permite a Outro problema eram os comentários cução dos softwares ocorre, de forma
expansão do aprendizado de forma autô- feitos por muitas pessoas, de que o cen- remota, em um computador que dispõe
noma, possibilitando ao aluno aprimorar tro público estaria dando “um tiro no de hardware mais potente, e com auxílio
seus conhecimentos em informática. próprio pé”, e outro na cabeça dos alu- de um programa chamado “Linux Termi-
Outro fator a ser mencionado é que o nos, pois seria muito difícil que eles fos- nal Server Project” (LTSP).
ambiente gráfico do GNU/Linux é bas- sem empregados, já que além de pobres, No mês de junho de 2003 algumas
tante similar ao do Microsoft Windows. excluídos e com escolaridade defasada, estações de trabalho baseadas nesta
Como a intenção não era oferecer uma seriam também profissionais formados solução já estavam sendo testadas. A
educação baseada em “decoreba” de para utilizar um sistema operacional pra- previsão era de que no segundo semestre
conceitos e comandos, e sim desenvolver ticamente desconhecido e quase sem uso de 2003 ela fosse testada em máquinas
habilidades e a capacidade de aprender, no mercado de trabalho. antigas, obtidas através de doações de

92 Agosto 2004 www.linuxmagazine.com.br


Educação Livre COMUNIDADE

empresas, ou no próprio parque de Como está o Centro hoje? aluno, além de aprender a ser um u-
máquinas da Prefeitura de Santo André, De agosto de 2003 até agora, o resultado suário de informática, também adquire
permitindo a avaliação do desempenho tem sido fantástico. Houve também difi- o conhecimento escolar necessário à
real deste projeto. Como faltavam alguns culdades: as máquinas utilizadas como conclusão do ensino fundamental e
ajustes, e não havia ainda muita clareza servidores não foram projetadas para is- médio. Este curso tem duração de um
sobre como conseguir as doações, deci- to, e mesmo os terminais, por serem bem ano, com aulas diárias.
diu-se continuar este estudo ao longo do antigos, vez por outra apresentavam pro- • Informática para formação de usuários
segundo semestre, com implantação na blemas. No entanto, a solução escolhida Nestes cursos, os alunos aprendem os
prática depois que testes comprovassem permitiu o aumento no número de alu- tradicionais programas de escritório.
seu funcionamento adequado. nos atendidos, bem como a ampliação São usados principalmente o Open-
Com a solução definida e o cronogra- das opções de cursos de informática. Office.org e o Mozilla. Há também a
ma de testes planejado, possivelmente já O importante é poder oferecer cursos apresentação de um panorama das
no início do ano de 2004 seria possível com sólida base tecnológica e em sinto- diversas áreas da informática. O curso
começar a trabalhar com o LTSP. No nia com as necessidades do mercado de completo é composto por dois módu-
entanto, o cronograma teve de ser modi- trabalho, principalmente para pessoas los (básico e avançado), cada um com
ficado em função de um assalto à escola desempregadas e/ou de baixa renda. duração de um semestre, com aulas
ocorrido em 22 de julho de 2003, quando Todo o processo de seleção de alunos é quatro vezes por semana.
foram roubadas 36 máquinas. A equipe informatizado (em Software Livre, é • Formação de Formadores
suspendeu as aulas por uma semana, foi claro) e os critérios de seleção priorizam Composto de um único módulo e des-
atrás de máquinas velhas em “lixões” de a escolha de pessoas que apresentam tinado a professores de alfabetização e
informática, implantou o sistema LTSP maior necessidade social (tal como me- educação de jovens e adultos que uti-
às pressas, montou a rede física e deu nor renda familiar, por exemplo). lizam a informática para o ensino. A
início aos testes. Mesmo tropeçando em duração neste caso é semestral, com
um sistema a priori instável, as aulas duas aulas por semana.
tiveram início com 30 máquinas (três • Cursos Profissionalizantes
laboratórios). As 20 máquinas que resta- Destinados ao ensino de alguma pro-
ram do roubo tiveram o GNU/Linux ins- fissão da área de informática, também
talado em seus discos rígidos. com duração semestral. Os cursos ofe-
A menção aos “lixões” pode causar recidos são: Programação e Banco de
estranheza, afinal de contas, computa- Dados (MySQL, HTML e GCC); Web
dores antigos normalmente são capazes Design (The Gimp e HTML); Insta-
de rodar somente versões obsoletas do lação, Configuração e Manutenção de
Microsoft Windows. No entanto, é muito Micros e Periféricos; Administração de
fácil convertê-los em estações de tra- Figura 2: Aula de informática no Centro Público. Redes; Manipulação de Som, Imagem
balho LTSP com a remoção do disco e Vídeo (os dois últimos em fase de
rígido, do leitor de CD-ROM e da Atualmente estão sendo mantidas qua- planejamento). O curso de Instalação,
unidade de disquete, e adicionando uma tro linhas didáticas, todas baseadas ex- Configuração e Manutenção de Micros
placa de rede capaz de aceitar uma ROM clusivamente em Software Livre: e Periféricos é o único que ensina tam-
de boot remoto. Com uma configuração • Informática combinada à elevação do bém a plataforma Windows, uma vez
como esta, um Pentium 90Mhz com nível de escolaridade que é necessário que um profissional
16MB de RAM já pode ser considerado São cursos para pessoas com defasa- formado por este curso saiba dar
uma boa estação de trabalho. gem na escolaridade, nos quais o manutenção também aos problemas
decorrentes desta plataforma.
Custo LTSP x Sistema Convencional
A seguir fizemos um pequeno quadro com- Licenças do Windows e Office R$ 1.500,00
Moral da história
parativo de custos* para duas configurações Total para uma estação R$ 3.500,00 Os alunos, ao contrário do que muita
possíveis, sendo a primeira, a configuração Total para 10 estações R$ 35.000,00 gente poderia imaginar, aceitaram muito
utilizada até junho de 2003, e a segunda, uti- bem as mudanças. Gostaram das várias
Conjunto de 10 estações LTSP em rede:
lizada depois, com o LTSP: opções de desktop, do acesso à Internet,
Hardware2 R$ 415,00
dos vários cursos diferentes, com longa
Conjunto de 10 máquinas, sem rede, com um Hardware do Servidor3 R$ 3.800,00
sistema Microsoft:
duração. E ficaram também encantados
Software R$ 0,00
com um pingüim engraçadinho, que gos-
Hardware1 R$ 2.000,00 Total para 10 estações R$ 7.950,00
ta de enfrentar desafios que parecem im-
1 Processador AMD Duron 1.1 Ghz, HD de 20 GB, 128 MB de RAM, Monitor,Teclado, Mouse, etc. possíveis de ser vencidos. ■
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. INFORMAÇÕES
*Custos de caráter apenas ilustrativo. [1] http://www.publicolivre.org.br/

www.linuxmagazine.com.br Agosto 2004 93


COMUNIDADE Planeta GNU

Planeta GNU

Software Livre
não é Grátis!
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

É
muito comum as pessoas acharem Para que um software seja livre, ele No Software Livre, preferimos fazer o
que Software Livre é sinônimo de precisa estar disponível em alguma contrário. Não gostamos de ensinar o
software gratuito. Esta afirmação licença livre. A Free Software Foundation usuário somente a utilizar uma determi-
está errada. Quando falamos de Software tem a licença GPL (General Public nada ferramenta. Preferimos ensiná-lo a
Livre, estamos nos referindo à liberdade. License) [1], que é a base para a maioria pensar. Nós procuramos ensinar que
Liberdade para utilizar o software para do Software Livre disponibilizado na uma planilha de cálculos é uma planilha
qualquer propósito, liberdade para redis- Internet. A GPL garante que as liber- de cálculos e desempenha papéis bem
tribuí-lo (cobrando uma taxa ou não), dades citadas acima serão mantidas. específicos para resolução de um deter-
liberdade para fazer modificações que minado problema. Não nos limitamos a
atendam às necessidades individuais e Educação com Software Livre uma única ferramenta, queremos que o
liberdade para redistribuir estas modifi- Este é um tema que acaba sendo usuário entenda o real objetivo de uma
cações. Isto é Software Livre. polêmico para algumas pessoas ligadas a planilha de cáculo.
Com certa frequência, as pessoas con- educação. Nós incentivamos o uso de Se eventualmente ele sentar-se em um
fundem Software Livre com “software Software Livre na educação, alguns pro- outro computador que não tem aquela
gratuito”. Quando se cobra uma taxa fessores dizem que Software Livre não é planilha de cálculo com a qual ele apren-
pelo software, não estamos vendendo “padrão de mercado”. Vamos discutir um deu a trabalhar, mas possui um software
um produto, estamos “trabalhando” com pouco esta afirmação. que faz a mesma coisa, porém de forma
o conhecimento. Programadores de Soft- É muito comum alguma empresa de um pouco diferente, o usuário poderá
ware Livre precisam sobreviver, preci- software proprietário doar licenças para utilizar dos conceitos que foram ensina-
sam pagar suas contas, comida, diver- uma escola. A diretoria acaba pensando dos sobre planilhas de cálculos e em
são, chopp, cinema, etc. Um desenvol- que isto é algo muito bom, pois estarão pouco tempo fazer o que ele precisa,
vedor de Software Livre é como um economizando licenças para ensinar os mesmo que neste software diferente que
médico, um engenheiro e um advogado: alunos a utilizarem softwares que são ele conheceu à cinco minutos.
trabalham com o seu conhecimento. “padrões de mercado”. Mas a diretoria Porém, se pegarmos um usuário
O Software Livre não é apenas um esquece que a empresa que fez a doação mexeu em um software proprietário
movimento técnico para programadores. tem interesses comerciais no meio. No específico a vida toda e o colocarmos em
É um movimento social. A maioria dos primeiro momento, os alunos serão uma máquina com Software Livre, este
desenvolvedores querem que seu co- “treinados” a utilizar seu software e no usuário vai entrar em desespero, porque
nhecimento seja útil para qualquer pes- futuro este aluno, que provavelmente ele não foi ensinado a pensar, mas foi
soa. É uma satisfação muito grande para não vai conhecer outra alternativa, vai ensinado a simplesmente resolver seus
um desenvolvedor quando ele sabe que ser obrigado a adquirir este software, problemas clicando no mouse.
o médico, o engenheiro e o advogado seja através da compra e pagamento da Por este motivo, entendemos que a
acima citados estão utilizando um soft- licença ou pior: através da pirataria. educação deve ser feita com Software
ware que ele desenvolveu. É também O modelo educacional das empresas Livre, mostrando para o usuário que ele
uma enorme satisfação quando alguém proprietárias é “prender” o usuário pode aplicar o conhecimento adquirido
envia um e-mail para o desenvolvedor àquele software e obrigá-lo a sempre re- em qualquer lugar.
informando sobre um bug. Melhor ainda novar as licenças, adquirindo novas ver-
quando envia junto a correção do pro- sões que exigem novo hardware. Estas Software Livre no Brasil
blema, que chamamos de patch. Um empresas não ensinam o usuário a pen- Os brasileiros são muito conhecidos no
desenvolvedor gosta de seu trabalho, sar, mas ensinam a utilizar uma determi- exterior pelos seu trabalho com Software
portanto o faz bem feito. nada ferramenta. Livre. Muitos desenvolvedores colabo-

94 Agosto 2004 www.linuxmagazine.com.br


ram com a comunidade internacional e o licenciado sob a GPL. Dentro de sua
Brasil está ganhando muito respeito. interface é possível acompanhar o pro-
Temos colaboradores no compilador gresso dos alunos, promover atividades,
GCC [2], no kernel do Linux [3], no pro- acompanhar discussões entre o grupo,
jeto GNU [4], e muitos outros que cola- manter FAQs (listas de perguntas fre-
boram de forma direta ou indireta. qüentes), correio eletrônico, controle de
Não é necessário conhecimento téc- acesso, etc. Isto quebra a barreira física
nico para quem quer colaborar. Há tra- entre o professor e aluno, que podem
balho adequado para todos os níveis de trabalhar no horário mais conveniente e
conhecimento, como, por exemplo, es- assim promover o conhecimento. O soft-
crever documentação, testar software ware foi concebido por pessoas que não
procurando e reportando bugs, criação são da área de informática, mas estão
de páginas, trabalho com layouts e assim ligadas à pedagogia e ensino. Por isto
por diante. A cada dia que passa, os não tem toda aquela complexidade no
brasileiros participam cada vez mais da uso encontrada em programas similares,
comunidade internacional. e a interface é bastante intuitiva. ■
O primeiro passo para quem quer
colaborar de alguma forma é identificar Christiano Anderson é
desenvolvedor autôno-
SOBRE O AUTOR

algum projeto de interesse. Isto pode ser


mo de Software Livre,
feito através do Diretório GNU [5]. É participa do Projeto Soft-
importante escolher um projeto onde o ware Livre Brasil (PSL-BR)
interesse pessoal está em jogo, pois e contribui para o projeto
assim qualquer colaboração será muito GNU. Sua principal mis-
são é difundir o Software
mais estimulante. Em seguida é reco-
Livre e sua filosofia, principalmente na
mendável que se conheça todos os pas- educação. Quando não está progra-
sos do projeto, lendo documentação, mando, seu hobby é a astronomia.
fazendo testes, instalando, conhecendo o
funcionamento e principalmente partici-
pando de listas de discussão. Em pouco INFORMAÇÕES
tempo é possível identificar que área do
[1] Licenças GNU: http://www.gnu.org/licenses
projeto está mais carente e começar a
[2] GCC: http://www.gnu.org/software/gcc
enviar colaborações.
[3] Kernel: http://www.kernel.org
TelEduc [4] Projeto GNU: http://www.gnu.org
O TelEduc [6] é um software de edu- [5] GNU Directory:http://www.gnu.org/directory
cação à distância, que tem como alvo a [6] TelEduc: http://teleduc.nied.unicamp.br/
formação de professores. Foi desen- pagina/ index.php
volvido de forma participativa e está

Figura 1: O TelEduc é um ambiente para criação e administração de cursos via Web.

You might also like