30 - Gestao e Produtividade_mai_2007

Page 1

05/2007

ENTREVISTA p.22 O compromisso da Fujitsu com os padrões abertos

FISL 2007 p.18 Usuários, desenvolvedores, empresas e Governo juntos

CEZAR TAURION p.28 A liderança do Linux nos sistemas embarcados

Assinante

A REVISTA DO PROFISSIONAL DE TI

GESTÃO E PRODUTIVIDADE

GESTÃO E PRODUTIVIDADE

ven d a p ro i b i d a 9 771806 942009

Maio 2007

# 30

R$ 13,90 € 7,50

00030 exemplar de

Linux Magazine

# 30

#30 05/07

p.29

COMPIERE

O CÓDIGO ABERTO INVADE O MUNDO DOS ERP/CRM COM BAIXO CUSTO, CONSULTORIAS BEM ESTABELECIDAS E ALTO PODER DE CUSTOMIZAÇÃO

OPENCRX

» Compiere: Implementando a ferramenta de gestão livre do momento p.30 » OpenCRX: toda a força do Java em forma de CRM p.34

SUGARCRM

» Desempenho e adaptalidade com o SugarCRM p.38 » Tendências de mercado: por que um ERP livre? p.42

POSTGRESQL

POSTGRESQL p.55 Como montar um sistema prático para autenticação local de usuários

DIFF

CLONAGEM EFICIENTE p.64

GRAPHVIZ

Backup precisa ser trabalhoso e difícil? O Mondo mostra que não!

MONDO POWERSHELL

VEJA TAMBÉM NESTA EDIÇÃO: » As novidades do Oracle OpenWorld p.26 » Preparação para a LPI: Aula 5 p.48 » Criação de imagens a partir de texto com o Graphviz p.60 » Programação: Os poderes matemáticos do diff p.70 » Desktop nacional: O insigne Insigne Linux p.45

http://supertuxbr.blogspot.com

WWW.LINUXMAGAZINE.COM.BR


http://supertuxbr.blogspot.com


Expediente editorial

Centro de Competência em Redes e Segurança: Achim Leitner: aleitner@linuxnewmedia.de Jens-Christoph B.: jbrendel@linuxnewmedia.de Hans-Georg Eßer: hgesser@linuxnewmedia.de Thomas L.: tleichtenstern@linuxnewmedia.de Max Werner: mwerner@linuxnewmedia.de Correspondentes & Colaboradores Augusto Campos, Cezar Taurion, Charly Kühnast, Corinto Meffe, Daniel Darlen, James Mohr, João Carlos Gomes da Costa, Johannes Plötner, Klaus Knopper, Luciano Siqueira, Ludger Köhler, Mark Schier, Michael Schilli, Miguel Koren O’Brien de Lacy, Steffen Wendzel, Udo Wolter, Werner Thal e Zack Brown. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Osmund Schmidt (Alemanha, Áustria e Suíça) anzeigen@linux-magazine.com Brian Osborn (Outros países) ads@linux-magazine.com Assinaturas: www.linuxnewmedia.com.br assinaturas@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linux-magazin.ro – Romênia Circulação Cláudio Guilherme dos Santos csantos@linuxmagazine.com.br Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por conseqüências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, são fornecidos para publicação ou licenciamento a terceiros de forma mundial não exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Av. Fagundes Filho, 134 Conj. 53 – Saúde 04304-000 – São Paulo – SP – Brasil Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Direitos Autorais e Marcas Registradas © 2004 - 2007: Linux New Media do Brasil Editora Ltda. Distribuição: Distmag Impressão e Acabamento: Parma ISSN 1806-9428 Impresso no Brasil

INSTITUTO VERIFICADOR DE CIRCULAÇÃO

em processo de filiação

Idiomas e sistemas Prezados leitores da Linux Magazine,

Quem tem como primeira língua o português costuma achar que a língua é fácil. Somos alfabetizados nessa língua e pensamos nessa mesma língua. É interessante imaginar o grau de influência que isso exerce sobre nós ao longo de nossas vidas. Já ouvi dizer que os alemães, um povo reconhecidamente organizado e disciplinado, são o reflexo de sua língua – ou seria o contrário? -, fortemente estruturada, mas aberta a construções inusitadas e muitas vezes inovadoras. Por mais exagerada que possa parecer esta afirmação que faço a seguir, existem semelhanças entre o processo de alfabetização e o uso de um computador. Nós aprendemos a pensar em computadores da forma como o computador se apresenta para nós pela primeira vez. A lógica que apreendemos do funcionamento do computador advém do raciocínio que nossa interface com ele nos impõe. Essa interface é o sistema operacional. Se a primeira experiência de um usuário com seu computador ocorrer através do Linux, e assim continuar, inevitavelmente ele será condicionado a pensar em computadores pela ótica desse sistema. Nesse caso, ao utilizar outros sistemas operacionais, o usuário certamente experimentará certa confusão. E sua relação com a máquina será moldada a partir dessa experiência. Os inúmeros projetos de inclusão digital que utilizam Linux já perceberam isso. E a maior concorrente do Linux nos desktops pessoais, a Microsoft, evidentemente também já está ciente. Uma prova clara disso é a recente oferta da empresa, de uma licença de seu sistema operacional mais básico acompanhada de seu conjunto de aplicativos de escritório por apenas três dólares, conforme informado em nossa seção de notícias. Se esse preço parece barato, vamos exercer um pouco de aritmética simples. Uma escola interessada em adquirir 20 dessas licenças promocionais gastará “apenas” 60 dólares, ou 122,10 reais, de acordo com o câmbio atual. Por outro lado, se a escola optar pelo Linux, gastará 100% a menos em licenças, ou seja, nada. Os profissionais encarregados de realizar a implantação dos novos computadores, redes etc. também já são abundantes o suficiente para que esse serviço tenha o mesmo custo que teria em sistemas Windows. Isso significa que atingimos um ponto em que, mesmo sem levarmos em conta a segurança muito maior dos sistemas abertos, nem uma drástica redução do preço da concorrência é suficiente para eliminar as vantagens econômicas do sistema do pingüim. Significa também que é muito provável que vejamos em breve toda uma geração de usuários de computador perfeitamente “fluentes em Linux”, após serem introduzidos ao fabuloso mundo digital através desse sistema. Aos diretores de instituições de ensino e gerentes de TI de órgãos educacionais, é importante esclarecer que o uso de sistemas de código aberto pode propiciar uma profunda ampliação do interesse geral de alguns alunos. Temos que admitir que é verdade que, há alguns anos, era obrigatório que o usuário de Linux já demonstrasse, a priori, certo interesse por computação. Porém, os recentes avanços em usabilidade proporcionados por cada nova versão das interfaces gráficas do Linux permitem que cada usuário atinja seu “ponto ótimo” e lá permaneça. Assim, enquanto a maioria dos alunos certamente não terá interesse em se aventurar pelos meandros do sistema operacional, podendo simplesmente desfrutar de um ambiente gráfico de uso absolutamente descomplicado, aqueles que se interessarem pelo funcionamento interno dos programas terão a liberdade de buscar esse conhecimento ativamente. Parece interessante, para uma escola, educar seus alunos em uma “língua” que lhes permita explorar mais fundo e buscar sozinhos o conhecimento, de forma mais segura e a custos mais baixos que os praticados pelos detentores dos direitos do outro “idioma”. Se ainda levarmos em conta o fato de que o uso dos sistemas abertos cresce em ritmo cada vez maior, essa oferta - do Linux - parece boa demais para ser ignorada. Pablo Hess Editor

EDITORIAL

Diretor Geral Rafael Peregrino da Silva peregrino@linuxmagazine.com.br Editor-chefe Tadeu Carmona tcarmona@linuxmagazine.com.br Editor Pablo Hess phess@linuxmagazine.com.br Revisão Arali Lobo Gomes agomes@linuxmagazine.com.br Assistente de Arte Renan Herrera rherrera@linuxmagazine.com.br Centros de Competência Centro de Competência em Software: Oliver Frommel: ofrommel@linuxnewmedia.de Kristian Kißling: kkissling@linuxnewmedia.de Peter Kreussel: pkreussel@linuxnewmedia.de Marcel Hilzinger: hilzinger@linuxnewmedia.de Andrea Müller: amueller@linuxnewmedia.de

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

3


ÍNDICE

CAPA Empresa de acordo

29

Código Aberto ajuda a trazer eficiência ao fluxo de dados e relacionamentos das empresas. Flexibilidade corporativa

30

O sistema ERP e CRM Compiere é um dos mais famosos entre as alternativas de código aberto. Conheça as características que o tornam uma ótima opção para qualquer empresa – talvez até para a sua. Forte, não gordo

34

O OpenCRX se beneficia dos poderes da plataforma Java, oferecendo um sistema muito poderoso, desde que seus requisitos sejam satisfeitos. Código aberto e doce

38

O eficiente SugarCRM roda sobre a estrutura LAMP e é adaptável ao extremo, devido a seu código aberto. Liberdade de gestão

42

O Código Aberto se firma como opção de fôlego na implementação de sistemas de gestão.

http://supertuxbr.blogspot.com 4

LM30_indice.indd 4

http://www.linuxmagazine.com.br

26.04.07 18:46:35


Linux Magazine 30 | ÍNDICE

COLUNAS Augusto Campos Charly Kühnast Klaus Knopper Zack Brown

Tutorial

10 11 12 13

LPI nível 1: Aula 5 Aprenda os fundamentos de redes, incluindo a configuração de servidores de email e do poderoso Apache.

48

Todos para o banco Se a autenticação local dos usuários é impraticável e o LDAP é complexo demais para as suas necessidades, talvez um banco de dados ofereça o nível ideal de praticidade e funcionalidade.

55

Comando para desenhar A ferramenta de linha de comando Graphviz é capaz de acelerar o processo de criação de imagens, usando apenas texto.

60

NOTÍCIAS Segurança ➧ PHP

14

➧ PostgreSQL ➧ Ekiga ➧ Snort ➧ Ferramentas do Mozilla ➧ ImageMagick Geral ➧ Lançado o Debian 4.0

16

➧ Novell ZENworks fora do OpenSUSE ➧ Intel oferece dispositivo móvel para Internet ➧ Windows e Office por US$ 3,00

SYSADMIN

➧ FLISOL 2007 em todo o país

Ataque dos clones A simplíssima ferramenta Mondo prova que backups não precisam ser difíceis e trabalhosos.

64

Embate das shells A Powershell, da Microsoft, baseia-se no framework .NET. Mas isso supera as funcionalidades do Bash?

68

➧ Lançado o Ubuntu Feisty Fawn ➧ Lançado o Mandriva Linux 2007 Spring ➧ Computador por US$ 53,00 na França Reportagem: FISL

18

CORPORATE Notícias ➧ Sun e Canonical em favor do Java

20

➧ Red Hat planeja crescimento ➧ Lançado o OS Desktop 7.1 ➧ Evento Pré-FISL em SP

PROGRAMAÇÃO

➧ OpenSUSE desativa recurso patenteado pela Microsoft ➧ CEF planeja migrar para Linux ➧ Office do Google mais completo ➧ Dataprev migrando para Linux

Qual é a diferença? O diff busca diferenças entre duas versões de um arquivo. Mostraremos como o programa as encontra sem afetar os recursos do sistema.

70

Evolução na compilação O Acovea imita a evolução de organismos vivos para definir as melhores opções de compilação do GCC.

74

➧ Concurso IBM de mainframes para estudantes ➧ Portal do software público Entrevista: Fujitsu Coluna: Luis Maeda Reportagem: Bossa Conference Reportagem: Oracle OpenWorld Reportagem: Brainshare Coluna: Cezar Taurion

ANÁLISE

22 24 25 26 27 28

UM T N ME O M 5.0

Insigne representante A versão 5.0 (Momentum) do Imagine Linux desenvolvido pela Insigne Free Software. ! ho pen m se de lto a de al ion c a pn to sk e D

X INU L E IGN S IN

45

SERVIÇOS Editorial Emails Linux.local Eventos Índice de anunciantes

03 06 78 80 80

http://supertuxbr.blogspot.com 5

Linux Magazine #30 | Maio de 2007

pt

10 9 / 0

.371 . - 03

DA

7 050 30-

il LT

LM30_indice.indd 5

co eis áfi gr nív o! po rios odo t s i e m pl o s d etá e om cã te pri em o a pod a c tala paco pro res o açã tal istem dos d tem l ins s de ecs esast s s n i S e e s da Ai ci od d

0 01-23

a via

26.04.07 18:46:46


Emails para o editor

u c.h ww . sx

EMAILS

Permissão de Escrita sa

nja

g je

ne

ro

–w

Se você tem dúvidas sobre o mundo Linux, críticas ou sugestões que possam ajudar a melhorar a nossa revista, escreva para o seguinte endereço: cartas@linuxmagazine.com.br. Devido ao volume de correspondência, é impossível responder a todas as dúvidas sobre aplicativos, configurações e problemas de hardware que chegam à Redação, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas nesta seção.

✎ Xgl

Olá, pessoal da Linux Magazine! Sou assinante da revista já há vários anos e continuo gostando muito das matérias, ideais para a proposta da revista. Sou professor universitário de computação há bastante tempo e forte defensor de software livre. Ultimamente, tenho trabalhando bastante com o Fedora Core 6 usando Xgl e Compiz em um Pentium 4 com 1 GB. Agora, a pergunta: Tudo funciona perfeitamente quando estou logado como root: o cubo 3D funciona corretamente, as janelas, os atalhos de teclado e controles de mouse. Entretanto, quando estou logado como usuário comum, o comportamento torna-se diferente: levar o mouse ao canto superior da tela não traz a lista de miniaturas de janela! Também, para vários aplicativos abertos, suas janelas aparecem com a barra de título embaixo do painel superior do Gnome! Isto é realmente irritante, pois sou obrigado a arrastar a janela para a área visível da tela. Procurei informações sobre este comportamento em diversos fóruns e na Internet em geral, mas não encontrei nada útil. Vocês tem alguma informação do porquê deste comportamento estranho do Xgl/Compiz quando logado como usuário normal?? Abraços, Prof. Márcio Henrique Zuchini Universidade São Francisco Itatiba – São Paulo Olá, Marcio, tudo bom? Em primeiro lugar, muito obrigado por sua carta. É muito gratificante receber elogios como os que você fez. Vamos ao problema. Em primeiro lugar, você tem certeza de que está usando o Xgl, e não o AIGLX? O Fedora vem com o AIGLX bem integrado (até porque o AIGLX foi desenvolvido pela própria Red Hat). Independente disso, o problema parece ser a configuração do Compiz. Ao contrário do que possa parecer, a

configuração do Compiz é diferente para cada usuário. Ou seja, se você configurou o Compiz com o usuário root, isso não significa que os usuários comuns usarão as mesmas configurações. As chaves de configuração do Compiz costumam ficar armazenadas no críptico sistema gconf em ~/.gconf/apps/ compiz/. Para copiar as configurações do usuário root para o usuário marcio, por exemplo, o comando seria (como usuário marcio): cp -R /root/.gconf/apps/compiz ~/.gconf/apps/

Nesse processo podem surgir problemas devido às permissões dos arquivos. Caso isso ocorra, é necessário informar ao sistema que os arquivos copiados pertencem ao usuário marcio, com o comando chown, por exemplo. Esperamos que isso funcione! ■

✎Preparação LPI - Cron

Bom Dia a todos. Como muitos outros, sou usuário Linux e leitor da Linux Magazine. Gosto do conteúdo e algumas matérias. Na página 62 da edição de abril 2007, temos o script de backup sendo executado a cada quatro horas (é o que está

http://supertuxbr.blogspot.com 6

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


EMAILS | cartas@linuxmagazine.com.br

escrito). Porém, a sintaxe do crontab nos mostra o intervalo de 4 minutos. Um abraço a todos. Eliezer Felipe Santiago Olá, Eliezer Agradecemos por nos ajudar a tornar a Linux Magazine cada vez melhor. E muito obrigado pela indicação do engano. De fato cometemos esse erro de edição. O artigo original continha um asterisco solitário no início da linha, o que dava à mesma o sentido pretendido. Por favor, desculpe nosso erro, que será publicado como errata na nesta edição da Linux Magazine (maio/2007). ■

✎OTRS

Olá! Realmente, a Linux Magazine tem me trazido muitas perspectivas novas, e informações muito valiosas. Sobre a edição número 28, tenho uma ressalva, a respeito da matéria sobre CRM, que cita o OTRS. Há uma informação de que a instalação é facilitada apenas onde o sistema de pacotes é RPM, e acabei de constatar no próprio site http://www.otrs,org a disponibilidade do pacote deb em um repositório, para utilização com o apt-get, além do portage para Gentoo, disponível via emerge. Obrigado pela atenção. Lourenzo Ferreira Caro Lourenzo Obrigado pela colaboração. Acreditamos que, devido ao rápido desenvolvimento de aplicações e ao trabalho colaborativo, tão comuns aos programas e sistemas de código aberto, os pacotes de padrão deb, além dos pacotes para Gentoo, só foram disponibilizados após o término da matéria. O que, na verdade, para nós é um motivo de contentamento, em vez de tristeza por nossa “lentidão”: uma tal velocidade e pujança nas novidades mostra que o desenvolvimento de Código Aberto caminha para um patamar de profissionalização que nem sempre é visto em seus equivalentes de Código Proprietário. Ver toda essa “vontade de crescer” em um software de CRM, então, é para nós, motivo de dupla alegria: quanto mais o Software Livre ou de Código Aberto se profissionalizar, mais rapidamente ele será capaz de competir, dentro do mercado corporativo, contra gigantes que antes caminhavam isolados.

Mais sobre a adoção de ERP/CRM livres dentro das empresas pode ser conferido na matéria de capa desta edição da Linux Magazine. ■

✎Problemas com Samba

Olá Pessoal, Sou assinante da revista, e estou numa situação desesperadora. Tenho um Samba rodando com a opção vfs audit ativada e tenho o arquivo de log gerado pelo audit do Samba. O que eu estou precisando muito é de um programa que consiga ler este arquivo e gerar um relatório em Web, tipo o SARG para Squid, mas para o SAMBA. Poderiam me ajudar, indicar alguma ferramenta, ou apresentar a alguém que poderia me dar umas dicas ?? SOCORRO!!!! Procurei em toda a WEB e não achei nada. Já estou tentando resolver isso a 6 meses. Muito grato, Jefferson Misael Karagulian Olá Jeferson Antes de tudo, obrigado por assinar a Linux Magazine. Em relação ao seu problema, você já utilizou o smbd_audit? Ele verifica os logs fabricados pelo vfs_audit como se fosse – e acho que é isso que você quer – um tipo de Sarg para o Samba. Esse programa é feito em PHP e necessita de base Perl instalada. Roda um script no cron que coleta o audit.log e armazena em um banco de dados mysql, razão pela qual você também irá precisar de um servidor MySQL instalado. O pacote pode ser baixado no endereço: http://sourceforge. net/projects/smbdaudit/ . ■

Errata Na quarta aula de nosso curso LPI nível 1, à página 62 da Linux Magazine 29 (abril de 2007), há erros de edição. Na seção que descreve o uso do utilitário cron a linha de código correta para a execução do script de backup a cada quatro horas seria: @* */4 * 5,6 1-5 /usr/local/bin/script_backup@ Na mesma matéria, na página 62, a referência à figura 1 deveria ser: “Cada linha do arquivo crontab representa uma tarefa, no formato mostrado pela figura 1”. Na página 64, a referência à figura 2 foi substituída erroneamente por “date.svg”, e o correto seria: “O próprio comando date é usado para alterar o relógio de software (do kernel), conforme a sintaxe descrita pela figura 2”.

http://supertuxbr.blogspot.com 8

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


CRM faz sentido no suporte de informática

COLUNA

Augusto Campos O que um administrador de redes e sistemas pode querer com um sistema de CRM? por Augusto Campos

N

ão deixe o ar corporativo do termo afastá-lo de suas áreas de interesse! As disciplinas e recursos que fazem parte do CRM são bastante interessantes para os administradores de redes e de sistemas, e também para as áreas de suporte de informática em geral. CRM, a sigla internacional para as técnicas de gestão do relacionamento com o cliente, é um conceito que geralmente está na esfera de preocupação do pessoal do marketing corporativo, ou nas áreas administrativas em geral. Mas deveria estar na sua, também. Primeiro, o mais básico: todo administrador de sistemas deve insistir na implantação oficial de um sistema de gestão de suporte que controle todo o ciclo de vida de um chamado ou problema, atribua a ele um identificador único e controle seu trânsito por todas as áreas envolvidas

Diversos softwares livres implementam esse tipo de controle, com variados graus de sucesso. em sua solução. Por exemplo, suponhamos um chamado que tenha sido originado numa área de atendimento telefônico. Suponhamos agora que ele tenha que passar por dois setores diferentes – por exemplo, o de infra-estrutura de autenticação e o de administração de sistemas – para que seja considerado resolvido. Antes que a equipe de atendimento possa informar o cliente sobre a resolução do problema e como ele deve proceder, é importante que o sistema permita a todos os envolvidos consultar o andamento desse chamado, com quem ele está, onde ele parou, quanto tempo levou para ser resolvido etc. Diversos softwares livres implementam esse tipo de controle, com variados graus de sucesso. Procure trouble ticket no Freshmeat.net e você encontrará várias opções, a maioria delas voltadas a áreas de suporte pequenas e médias.

Mas quando a operação de suporte começa a crescer, começa a ser insuficiente limitar-se à gestão da resolução de problemas. Outros conceitos, como Workflow e ERP, entram na jogada, e um dos primeiros cuja ausência tende a ser percebida, por ser ligada diretamente ao cliente (interno ou externo) é o de CRM. Nessa fase, a sua empresa já deveria ter seu próprio sistema de CRM, pois essa tecnologia está ligada umbilicalmente a relacionamentos de marketing e vendas com os clientes. Mesmo assim, às vezes, a organização ainda não dispõe de CRM, ou a integração imediata entre as áreas não é possível, ou mesmo desejável nos moldes em que você preferiria – por exemplo, se o seu suporte atende essencialmente a clientes internos. Nesse caso, é hora de colocar a mão na massa e selecionar (ou desenvolver, ou adaptar) um sistema de gestão de suporte que tenha suficiente ênfase na perspectiva do cliente, com o mesmo tipo de enfoque que um sistema de CRM tradicional (nas esferas operacionais, analíticas e colaborativas) teria, mas com um objetivo diferente: em vez de realizar mais vendas ou prolongar o relacionamento comercial com o cliente, garantir a satisfação do usuário de suporte, prever e antecipar a solução de problemas repetitivos, identificar usuários que devem ser objeto de atendimento especial, e outras atitudes que otimizam o relacionamento com o cliente – das quais uma das principais é a mais básica: fazer com que todo atendente de suporte tenha acesso imediato à ficha completa de cada usuário no momento da abertura do chamado, e incluir nessa ficha recomendações baseadas no histórico do relacionamento com esse usuário em particular. Isso é algo que toda central de telemarketing já tem, e que desejaríamos que o suporte das nossas empresas de celular e banda larga tivessem (e que funcionasse a nosso favor), e que até mesmo as pizzarias com tele-entrega já começam a ter, e que a maioria das centrais de suporte corporativo de informática ainda não oferecem. Pense nisso! ■

O autor Augusto César Campos é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.

http://supertuxbr.blogspot.com 10

http://www.linuxmagazine.com.br


Elimine pacotes órfãos no Debian com o Deborphan

COLUNA

Charly Kühnast Sua última atualização do Debian deixou rastros? Conheça o Deborphan. por Charly Kühnast

T

enho que admitir: minha consciência está me incomodando um pouco. Que me lembre, jamais fiz a revisão de um software específico para uma distribuição. Porém, uma rápida busca em meu grupo local de usuários Linux revelou que o Deborphan é desconhecido até mesmo entre usuários Debian de longa data. Os sistemas Debian passam por várias mudanças de versão ao longo de suas vidas. Se você verificar especificamente os diretórios que contêm as bibliotecas, é impossível não notar que várias delas já passaram há tempos da hora de se aposentar. Por algum motivo, o Debian simplesmente as mantém – nunca se sabe quando elas serão necessárias. Se você gosta de manter a organização, ou simplesmente se seu espaço em disco estiver acabando, o Deborphan[1] oferece a possibilidade de apagar pacotes órfãos. A ferramenta, que reside no repositório normal do Debian, procura pacotes dos quais nenhum outro dependa. Executar deborphan sem qualquer opção de linha de comando mostra uma lista dos softwares órfãos. Caso seja interessante aprofundar a ação da linha de comando, é assim que se faz:

Esse comando evita que o Deborphan restrinja sua busca aos diretórios lib, passando então a verificar cada pacote instalado.

deborphan --all-packages

deborphan --del-keep nome_do_pacote

Figura 1 Apagando pacotes.

Adote um órfão

Se o Deborphan mostrar um determinado pacote órfão que você deseje manter instalado, pode-se usar a função apropriadamente chamada de keep: deborphan --add-keep nome_do_pacote

Com esse comando, o Deborphan vai ignorar o pacote referido em futuras execuções. É possível passar múltiplos nomes de pacotes de uma vez, separando-os por espaços.

Fim da temporada

Para remover um pacote da lista dos mantidos, basta utilizar o comando:

Se for desejável evitar a linha de comando, há duas interfaces para a ferramenta. Uma delas é conhecida como Orphaner, e oferece uma bela lista de pacotes órfãos. É possível selecioná-los individualmente, ou selecionar toda a lista, e mandar o Deborphan apagar os pacotes (figura 1). A outra interface é o Editkeep. Como o nome sugere, o programa mostra uma lista de pacotes marcados para manutenção (figura 2). Para acalmar minha consciência (e para os leitores que não são afeiçoados ao Debian), quero terminar minha coluna com o comunicado de que as distribuições baseadas em pacotes RPM possuem uma ferramenta semelhante, chamada Rpmorphan[2], um clone do Deborphan. ■

Mais Informações [1] Deborphan: http://freshmeat.net/projects/deborphan/ [2] Rpmorphan: http://rpmorphan.sourceforge.net

O autor

Figura 2 Mantendo pacotes.

Charly Kühnast é administrador de sistemas Unix no datacenter Moers, perto do famoso rio Reno, na Alemanha. Lá ele cuida, principalmente, dos firewalls.

http://supertuxbr.blogspot.com Linux Magazine #XX | Mês de 200X

11


Pergunte ao Klaus!

COLUNA

Klaus Knopper Esta coluna é baseada na seção “Ask Klaus!”, publicada na Linux Magazine International. por Klaus Knopper

DHCP maluco

Minha operadora de banda larga me forneceu um modem ADSL Siemens com pppoe embutido. Configurei-o inicialmente com o Windows. A maioria das distribuições em Live CDs e DVDs não conseguiu estabelecer a conexão, mas o Gentoo 2006.1 conseguiu. A diferença parece estar no fato de o Gentoo usar o dhcpcd em vez do pump ou do dhclient. Desde então, já experimentei vários Live CDs com kernel 2.6 e, quando monto minha partição Gentoo e executo seu ./dhcpcd -h `hostname`, eles conectam. Evidentemente, o pump ou dhclient precisa ser parado primeiro. Existe alguma maneira de fazer esses outros clientes funcionarem, já que o dhcpcd está funcionando? O modem está com upnp ativado.

Um fato bem conhecido é que a segurança pela obscuridade jamais funcionou. Resposta: Pode-se experimentar algumas configurações mencionadas na página de manual do pump. Infelizmente, não parece haver um programa específico que sempre funcione bem. Em alguns casos, o pump consegue obter um endereço IP, enquanto o dhclient e o dhcpcd não. O pump eventualmente pode necessitar da ativação da placa de rede com o comando ifconfig eth0 0.0.0.0 up (substituindo eth0 pelo valor adequado ao seu caso). Você também pode tentar algumas configurações no /etc/pump.conf, como a diminuição do número de tentativas, o tempo de espera para a conexão e as informações do servidor de nomes, por exemplo.

Ataques de malware

Por que é tão difícil encontrar artigos sobre segurança no Linux? O Linux é imune a spywares, vírus e ataques de malware? Se não, como faço para proteger meu sistema? Existe algum pacote de antivírus disponível, ou pelo menos um anti-spyware? Resposta: Existem vários portais de segurança relacionados ao Linux e ao Software Livre, além de inúmeras listas de email sobre o assunto. O GNU/Linux, como qualquer sistema complexo, não está livre de falhas e erros, brechas de segurança e possibilidades de contorno de restrições de segurança mal

formuladas. Porém, devido à natureza aberta desse sistema operacional, essas falhas são encontradas e corrigidas com grande rapidez, em vez de ser necessário esperar um “patch day” para tornar seu sistema novamente seguro. Vírus são bem raros (senão inexistentes) no Linux, devido à separação de privilégios absolutamente estrita típica dos sistemas Unix. Cavalos de tróia e worms normalmente precisam de alguma espécie de interação com o administrador para se instalarem, ou ao menos de esquemas de permissão frouxos (como direito total de escrita em arquivos de dispositivos, por exemplo). Alguns worms tentam explorar falhas como estouros de buffer em programas que rodam com permissão de root. Mas os sistemas com níveis de segurança mais elevados, como o SELinux, até conseguem atingir a imunidade. Eu não diria que é impossível invadi-los, mas é, no mínimo, muito difícil, mesmo para os profundos conhecedores do assunto. O certo é que eu não conheço qualquer sistema operacional absolutamente imune, mas um fato bem conhecido é que a segurança pela obscuridade jamais funcionou. A prática típica dos programas de código fechado, de manter secretas as informações sobre fraquezas e falhas, não torna um sistema operacional mais seguro. Ela apenas dá aos crackers uma vantagem injusta, pois eles acabam conhecendo as possibilidades de invasão semanas antes dos administradores de sistemas encarregados de corrigir o problema. Procure atualizações periódicas de segurança na página destinada a esse campo da sua distribuição. (Veja também a seção “Segurança”, nas páginas 18 e 19 para mais detalhes de como obter atualizações de segurança nas variantes mais populares de Linux.). Várias ferramentas ajudam os administradores de sistemas a procurar problemas potenciais e identificar tentativas de invasão (mesmo as que obtiveram sucesso). Recomendo o Nessus (http://www.nessus.org) para procurar portas abertas e serviços de rede vulneráveis rodando em seus computadores, o Tiger (http://www.net.tamu.edu/network/tools/tiger.html) ou o Tripwire (http://www.tripwire.org) para a segurança local e checagens de segurança do sistema de arquivos, e o Snort (http://www.snort.org) como vigia de invasões. Há algumas ferramentas antivírus para Linux. Uma solução muito popular é o antivírus de código aberto ClamAV (http://www.clamav.net). ■

O autor Klaus Knopper é o criador do Knoppix e co-fundador do evento LinuxTag. Atualmente ele trabalha como professor, programador e consultor.

http://supertuxbr.blogspot.com 12

http://www.linuxmagazine.com.br


Crônicas do kernel

COLUNA

Zack Brown Driver melhorado, KVM no git e problemas com licenças e programadores maliciosos. Fique a par do que se passou no último mês na lista do kernel. por Zack Brown

Conserto da licença

Jan Engelhardt andou trabalhando numa correção para a antiga falha do kernel que permitia que autores inescrupulosos de drivers como o LinuxAnt fingissem que seu código estava liberado sob a GPL, quando poderiam, na verdade, ter praticamente qualquer licença. A falha ocorre quando MODULE_LICENSE tem o valor “GPL\0for files in the \”GPL\” directory; for others, only LICENSE file applies”. Devido ao caracter \0, o kernel encontra GPL quando procura a licença, e então o caracter nulo o

faz pensar que a string acabou. Engelhardt recentemente postou um patch que corrige esse comportamento, pois leva em conta o comprimento do texto da licença. Se esse comprimento for diferente daquele de fato lido, então alguém pode estar tentando abusar da falha. O patch levantou uma discussão surpreendente, principalmente a respeito da utilidade do recurso MODULE_LICENSE para forçar uma licença, o que violaria os termos da GPL, sob a qual boa parte do código-fonte do kernel é lançada. Esse argumento na realidade tem uma menor relação com o patch de Engelhardt do que com o código existente de MODULE_LICENSE. Bodo Eggert também criou um patch semelhante ao de Engelhardt, e liberou-o na mesma época. Esse patch também fechava a brecha do \0 com a mesma técnica de medição do comprimento, e ainda acrescentava diversos recursos novos, tais como a permissão para que um módulo tenha múltiplas licenças. Esse recurso, por sinal, rendeu críticas bem mais fortes que aquelas recebidas pela “correção” de Engelhardt, como um sonoro “não” de Alan Cox. Talvez Eggert consiga consertar seu patch para resolver as reclamações de todos, mas, por enquanto, parece que o de Engelhardt é mais simples e está mais perto de ir para o kernel.

Novo driver Intel

James Ketrenos, da Intel, recentemente anunciou um novo driver para o adaptador de rede sem fio PRO/Wireless 3945ABG. Os outros drivers da Intel tinham que incluir um daemon proprietário. Em resposta ao questionamento de Neil Brown a esse respeito, Ketrenos explicou que a Intel realizou algumas melhorias no microcódigo desses dispositivos, e agora apenas uma atualização do microcódigo seria necessária, sem qualquer daemon de código fechado. Diversos desenvolvedores ficaram positivamente impressionados com esse avanço, e também com o próprio driver. É muito bom ver que a Intel está levando algumas questões de Código Aberto tão a sério.

Chamadas de sistema assíncronas Ingo Molnar criou o subsistema Syslet, um mecanismo para realizar chamadas de sistema de forma assíncrona, a partir do espaço do usuário. Qualquer processo do espaço do usuário pode iniciar um syslet, e o syslet terá acesso ao mesmo contexto de tempo de execução que a rotina que o invocou. Na verdade, ele é mais do que simplesmente assíncrono – o usuário pode especificar se a chamada deve ser apenas síncrona, apenas assíncrona, ou começar síncrona e, caso necessário, tornar-se assíncrona depois.

É muito bom ver que a Intel está levando algumas questões de Código Aberto tão a sério. Na verdade, os syslets são pequenos wrappers para chamadas de sistema. Eles existem inteiramente no espaço do kernel, podem modificar variáveis dos usuários, e podem ser vinculados a estruturas complexas. Usando syslets, Molnar mediu acelarações de 33,9% em relação à I/O síncrona com cache, e 19,2% em relação à I/O síncrona sem cache, o que representa um grande avanço. Além disso, a reação aos syslets entre os desenvolvedores do kernel foi bem positiva, de forma que vários deles já se juntaram ao desenvolvimento. Parece que os syslets chegarão ao kernel. Entre as vozes contrárias a isso, Pavel Machek lembra que o wrapper syslet comporta-se como uma verdadeira linguagem de programação com um interpretador dentro do kernel, mas Linus Torvalds deixou claro que isso não será um obstáculo. No entanto, o próprio Torvalds foi um dos mais fortes opositores à idéia, alegando que a interface de Molnar é complicada e difícil para um usuário comum utilizar. Como Molnar não teve qualquer resposta a essas críticas, talvez a interface precise mudar antes que os syslets cheguem ao kernel oficial. ■

O autor A lista de discussão Linux-kernel é o núcleo das atividades de desenvolvimento do kernel. Zack Brown consegue se perder nesse oceano de mensagens e extrair significado! Sua newsletter Kernel Traffic esteve em atividade de 1999 a 2005.

http://supertuxbr.blogspot.com Linux Magazine #XX | Mês de 200X

13


➧ PHP SEGURANÇA

O PHP é uma linguagem de programação que pode ser embutida em códigos HTML, comumente usada em conjunto com o servidor web Apache. Falhas de estouro de buffer foram encontradas na extensão de sessão do PHP, nas funções imap_mail_compose() e imap_mail_compose(). Se longas cadeias de caracteres forem passadas para a função str_replace(), um estouro de inteiros poderia ocorrer na alocação de memória. Se um script utilizar a função imap_mail_compose() para criar uma mensagem MIME na base de um input body de fonte não confiável, ele poderia causar um estouro de fila. Um agressor capaz de acessar uma aplicação PHP afetada poderia acionar essas falhas e possivelmente executar código arbitrário como o usuário apache. (CVE-2007-0906) Ao desserializar dados não confiáveis em plataformas de 64 bits, a função zend_hash_ init() pode ser forçada a entrar em um loop infinito, consumindo recursos de CPU até o alarme de tempo do script abortar a execução do mesmo. (CVE-2007-0988) Se a extensão wddx for utilizada para importar dados WDDX de uma fonte não confiável, alguns pacotes de entrada WDDX podem permitir que um segmento aleatório da memória da fila seja exposto. (CVE-2007-0908) Caso a função odbc_result_all() seja usada para exibir dados de um banco de dados, e os conteúdos da tabela do banco

estejam sob o controle de um agressor, uma vulnerabilidade de formatação de cadeia de caracteres é possível, e pode levar à execução de código arbitrário. (CVE-2007-0909) A leitura de 1 byte de memória sempre ocorrerá antes do início de um buffer, o que poderia ser ativado, por exemplo, por qualquer usuário da função header() em um script. Entretanto, é improvável que isso viesse a ter qualquer efeito. (CVE-2007-0907) Várias falhas no PHP poderiam permitir que agressores alterassem certas variáveis superglobais através de vetores não especificados. (CVE-2007-0910) ■ Referência

no

Mandriva: MDKSA-

2007:048 Referência no Red Hat: RHSA-2007:0076-3 Referência no Slackware: SSA:2007-053-01 Referência no Ubuntu: USN-424-1

➧ PostgreSQL

O PostgreSQL é um sistema gerenciador de bancos de dados (SGBD) objeto-relacional. Uma falha foi encontrada na forma como o PostgreSQL lida com certas funções SQL. Foi descoberto que o banco de dados PostgreSQL não realiza verificações suficientes dos argumentos das funções SQL. Um usuário autenticado conseguiria executar uma seqüência de comandos capaz de derrubar o servidor PostgreSQL, ou possivelmente ler dados de locais de

memória desconhecidos. Um usuário precisaria possuir permissões para descartar e adicionar tabelas ao banco de dados, para conseguir explorar essa falha. (CVE-2007-0555) ■ Referência no Debian: DSA-1261-1 Referência no Mandriva: MDKSA-2007:037-1 Referência no Red Hat: RHSA-2007:0064-2 Referência no Ubuntu: USN-417-3

➧ Ekiga

O Ekiga é uma ferramenta de comunicação com vídeo e áudio pela Internet. Uma falha de formatação de cadeia de caracteres foi encontrada na forma como o programa processa certas mensagens. Se um usuários estiver rodando o Ekiga, um agressor remoto que consiga conectar-se ao programa poderia acionar essa falha e potencialmente executar código arbitrário com os privilégios do usuário. (CVE-2007-1007) ■ Referência no Red Hat: RHSA-2007:0086-3

➧ Snort

O Snort é um programa de detecção de intrusões muito difundido. Ele contém uma vulnerabilidade no algoritmo de conferência de regras que poderia resultar em uma negação de serviço. (CVE2006-6931) ■ Referência no Gentoo; GLSA 200702-03

Postura das principais distribuições Linux quanto à segurança Distribuição

Referência de Segurança

Comentários

Conectiva

Info: distro2.conectiva.com.br/ Lista: seguranca-admin@distro.conectiva.com.br e distro2.conectiva.com.br/lista Referência: CLSA-... 1

Possui uma página específica; não há link para ela na página principal. Os alertas são sobre segurança, mas distribuídos através de emails assinados com a chave PGP da empresa para assegurar sua autenticidade. Contém também links para os pacotes atualizados e para fontes de referência sobre o problema sendo corrigido.

Debian

Info: www.debian.org/security Lista: lists.debian.org/debian-security-announce Referência: DSA-… 1

Alertas de segurança recentes são colocados na homepage e distribuídos como arquivos HTML com links para os patches. O anúncio também contém uma referência à lista de discussão.

Gentoo

Info: www.gentoo.org/security/en/glsa Fórum: forums.gentoo.org Lista: www.gentoo.org/main/en/lists.xml Referência: GLSA: … 1

Os alertas de segurança são listados no site de segurança da distribuição, com link na homepage. São distribuídos como páginas HTML e mostram os comandos necessários para baixar versões corrigidas dos softwares afetados.

Mandriva

A Mandriva tem seu próprio site sobre segurança. Entre outras Info: www.mandriva.com/security Lista: www1.mandrdrivalinux.com/en/flists.php3#2security coisas, inclui alertas e referência a listas de discussão. Os alertas são arquivos HTML, mas não há links para os patches. Referência: MDKSA-… 1

Red Hat

Info: www.redhat.com/errata Lista: www.redhat.com/mailing-lists Referência: RHSA-… 1

A Red Hat classifica os alertas de segurança como “Erratas”. Problemas com cada versão do Red Hat Linux são agrupados. Os alertas são distribuídos na forma de páginas HTML com links para os patches.

Slackware

Info: www.slackware.com/security Lista: www.slackware.com/lists (slackware-security) Referência: [slackware-security] … 1

A página principal contém links para os arquivos da lista de discussão sobre segurança. Nenhuma informação adicional sobre segurança no Slackware está disponível.

Suse

Info: www.novell.com/linux/security Lista: www.novell.com/linux/download/updates Referência: suse-security-announce Referência: SUSE-SA … 1

Após mudanças no site, não há mais um link para a página sobre segurança, contendo informações sobre a lista de discussão e os alertas. Patches de segurança para cada versão do Suse são mostrados em vermelho na página de atualizações. Uma curta descrição da vulnerabilidade corrigida pelo patch é fornecida.

http://supertuxbr.blogspot.com 1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.

14

http://www.linuxmagazine.com.br


Segurança | NOTÍCIAS

➧ Ferramentas do Mozilla O Mozilla Firefox é um navegador web de código aberto, assim como o SeaMonkey, que é também um cliente avançado de email e newsgroups, um cliente IRC e um editor HTML. O Thunderbird é um cliente de email de código aberto. Foram encontradas falhas na forma como o Firefox processa certos códigos JavaScript mal formados. Uma página web maliciosa poderia executar código JavaScript de forma a causar o fechamento do Firefox, ou a execução de código arbitrário. (CVE-2007-0775, CVE-2007-0777) Também foram encontradas falhas de Cross-site scripting (XSS) na maneira como o Firefox processa certas páginas web mal formadas. Uma página maliciosa poderia exibir informações enganosas, resultando na divulgação de informações privadas do usuário. (CVE-2006-6077, CVE-2007-0995, CVE-2007-0996) Uma falha também foi encontrada na forma como o Firefox faz cache de páginas web no disco local. Uma página web maliciosa seria capaz de injetar código HTML malicioso em

uma sessão de navegação caso o usuário recarregasse um site específico. (CVE-2007-0778) Outra falha foi encontrada na maneira como o Firefox exibe certos conteúdos web. Uma página maliciosa poderia gerar conteúdo que poderia sobrepor elementos da interface, enganando o usuário de forma a acreditar que estivesse visitando um site diferente. (CVE-2007-0779) Foram descobertas falhas na forma como o Firefox bloqueia janelas pop-up. Se um usuário abrir um pop-up bloqueado, será possível ler arquivos locais arbitrários ou desferir um ataque do tipo XSS contra o usuário. (CVE-2007-0780, CVE-2007-0800) Falhas de estouro de buffer também foram encontradas no código do Network Security Services (NSS) que processa o protocolo SSLv2. Conectarse a um servidor web seguro malicioso poderia causar a execução de código arbitrário sob o usuário que estivesse executando o Firefox. (CVE-2007-0008, CVE-2007-0009) Uma falha foi descoberta na maneira como o Firefox trata o valor de location.hostname durante algumas ve-

rificações de domínio do navegador, que poderiam permitir que um site malicioso inserisse cookies de domínio para um site arbitrário, ou possivelmente realizasse um ataque do tipo XSS. (CVE-2007-0981) ■ Referência no Ubuntu: USN-428-1 Referência no Red Hat: RHSA-2007:0079-2, RHSA-2007:0077-4

➧ ImageMagick

O ImageMagick é uma ferramenta de exibição e manipulação de imagens para o X Window System, capaz de ler e escrever múltiplos formatos de imagem. Foram encontradas falhas de segurança na forma como o ImageMagick decodifica arquivos DCM, PALM e SGI. Um agressor poderia ser capaz de executar código arbitrário caso conseguisse fazer a vítima abrir um arquivo de imagem especialmente criado. (CVE-2006-5456/CVE-2007-0770, CVE-2006-5868) ■ Referência no Debian: DSA-1260-1 Referência

no

Mandriva: MDKSA-

2007:041 Referência no Red Hat: RHSA-2007:0015-5 Referência no Ubuntu: USN-422-1

�����

������ ������������� ���������

http://supertuxbr.blogspot.com


NOTÍCIAS

➧ Lançado o Debian 4.0 No último dia 8 de abril foi lançado o aguardado Debian 4.0, codinome Etch, quase dois anos após o lançamento da última versão estável, o Sarge. As notas de lançamento, disponíveis em http://www.us.debian.org/releases/stable/ releasenotes, informam que foram adicionados mais de 6500 novos pacotes, ultrapassandose a marca dos 18.200. A atenção ao desktop foi melhorada, com aplicativos como Gnome 2.14, KDE 3.5.5a e Xfce 4.4 representando os diferentes ambientes desktop disponíveis. Infelizmente não se atingiu um acordo entre os desenvolvedores da distribuição e os da Fundação Mozilla, o que ocasiona o uso de nomes

e ícones diferentes dos padrões para o Firefox (chamado de Iceweasel) e o Thunderbird (Icedove). Os desenvolvedores também não foram deixados de lado; GCC 4.1, Python 2.4 e PHP 5.2 estão incluídos nos 21 CDs que compõem a distribuição completa (incluindo a documentação). No campo dos servidores também há várias melhoras, especialmente relativas à atualização dos pacotes. Um grande destaque é o suporte ao padrão SELinux. Dois dias após o lançamento, foi divulgado o novo líder do projeto Debian, eleito pelos próprios desenvolvedores, no clássico processo democrático da organização. Sam Hocevar, o novo líder, um francês de 28 anos que colabora com o Debian desde 2000, incluiu em sua plataforma a promessa de “tornar novamente divertido desenvolver para o Debian”. ■

➧ Novell ZENworks fora do OpenSUSE ➧ Windows e Office Em uma mensagem enviada à lista de discussão dos desenvolvedores do por US$ 3,00 OpenSUSE, Andreas Jaeger comunicou que a próxima versão da distribuição livre na qual se baseia o SUSE Linux Enterprise não terá mais como padrão de administração o ZENworks. Esse software, de autoria da Novell, foi introduzido no OpenSUSE em substituição ao já consagrado YaST. Porém, a insatisfação gerada entre a comunidade de usuários, sobretudo devido à morosidade da solução da Novell, ocasionou a volta ao programa anterior. No comunicado, Andreas afirmou que o ZENworks já possui amplo suporte nas distribuições Enterprise SLED e SLES, e que ele realmente não fará mais parte da distribuição comunitária e livre. O software da Novell, no entanto, continuará sendo desenvolvido com o intuito de manter a interoperabilidade com a alternativa do OpenSUSE. ■

Com o objetivo de combater a ampla adoção do Linux em projetos de inclusão digital e tecnologia na Educação, a Microsoft anunciou recentemente que começará a oferecer pares de licenças do Windows e Office pelo preço de três dólares. Concorrendo com distribuições Linux no projeto de laptop de baixo custo voltado à educação do OLPC, a empresa de Redmond oferecerá essa oferta a partir de setembro. Os softwares cobertos pelo pacote são o Windows XP Starter Edition, Microsoft Office e alguns programas educacionais. Além dos laptops educacionais, a empresa de Bill Gates tem planos de atuar junto ao Governo a fim de viabilizar, com o grande desconto, seu conjunto de softwares também nos computadores do programa PC para Todos. Os descontos são parte de um plano global para evitar a redução do número de usuários do Windows, e serão aplicados a diversos países, e não apenas o Brasil. ■

➧ Intel oferece dispositivo móvel para Internet

➧ FLISOL 2007 em todo o país

A Intel está desenvolvendo um dispositivo móvel para acesso à Internet. Na mesma linha de aparelhos como o Nokia N800 e o sofisticado iPhone, o McCaslin – codinome do aparelho, até o momento – foi anunciado durante o Intel Developers Forum, em Pequim, China, e será equipado com um processador de núcleo duplo, operando entre 600 e 800 MHz, e utilizará o Linux (uma variante do Red Flag Linux, distribuição chinesa) como sistema operacional. No entanto, não há qualquer compromisso da fabricante com o Software Livre no tocante aos aplicativos do aparelho. De fato, a Intel pretende incluir bastante código proprietário em várias camadas do sistema do McCaslin. ■

A edição de 2006 do Festival Latino-Americano de Instalação de Software Livre contou com 27 cidades brasileiras participantes. Este ano, pelo menos 29 cidades do país marcaram “presença” mais uma vez. O interessante do FLISOL é sua característica descentralizada, que mostra o poder da colaboração, característica do Software Livre. Em cada local de realização do evento ocorrem diferentes atividades, além da única obrigatória, o Install Fest. Na cidade de São Paulo, por exemplo, foram ministradas palestras técnicas, enquanto o evento de Aracaju contou com algumas oficinas, e no de Goiânia houve até um show com banda ao vivo. Mais detalhes do FLISOL 2007 estão disponíveis na página do festival, em http://www.installfest.net/ FLISOL2007. ■

http://supertuxbr.blogspot.com 16

http://www.linuxmagazine.com.br


Gerais | NOTÍCIAS

➧ Lançado o Ubuntu Feisty Fawn

No dia 19 de abril foi lançada a versão mais recente do Ubuntu, a distribuição Linux mais popular da atualidade. Com o pueril nome de Feisty Fawn (gamo saltitante), a versão 7.04 da distribuição patrocinada pela Canonical, de Mark Shuttleworth, trouxe diversas novidades, como o recém-lançado Gnome 2.18 e o também novíssimo kernel 2.6.20. Uma das mais importantes inovações na distribução é a instalação facilitada de componentes proprietários, como drivers de placas gráficas, plug-ins para o navegador web e codecs multimídia. No caso dos drivers para aceleradoras gráficas, é possível até mesmo desativá-los a partir de um pequeno aplicativo que reside na barra superior do Gnome. A facilidade de ativação do desktop 3D também é um marco nessa versão, pois as anteriores exigiam o acompanhamento de longas porções de documentação para se alcançar um belo visual. A máquina virtual Java também está disponibilizada a partir do repositório multiverse, e foi incluído um aplicativo específico para a migração de dados a partir de uma instalação anterior do Windows na mesma máquina, o que deve facilitar imensamente a adoção por usuários iniciantes. Poucas horas após a liberação do sistema, diversas análises da imprensa especializada já confirmavam o bom trabalho da equipe de desenvolvimento da distribuição. A Canonical informou que a próxima versão do Ubuntu, denominada Gutsy Gibbon, incluirá uma variante sem qualquer software não livre, desenvolvida em parceria com o GnewSense. ■

➧ Lançado o Mandriva Linux 2007 Spring A Mandriva lançou no último dia 18 a mais recente versão de sua distribuição Linux, o Mandriva Linux 2007 Spring. O principal diferencial da distribuição é a integração de diversos softwares proprietários, alguns sem equivalentes de código aberto, como o Google Earth e o Picasa. A compatibilidade com dispositivos como o controle remoto do console de jogos Wii também é um recurso importante. O aplicativo de administração e configuração de autoria da Mandriva é mais um diferencial. O Drakvirt auxilia a configuração dos recursos de virtualização, bem integrados ao sistema, enquanto o DrakLoop, unido ao dm-crypt, simplifica significativamente a aplicação da criptografia de dados no disco rígido. ■

➧ Computador por US$ 53,00 na França O provedor de Internet francês Neuf Cegetel está oferecendo a seus assinantes a possibilidade de adquirir um computador altamente subsidiado – pelo próprio provedor – e bastante simples, dedicado unicamente a acessar a Web. Por US$ 53,00, os clientes do Neuf Cegetel compram um gabinete sem periféricos e com 512 MB de memória flash para armazenamento, rodando Linux, Firefox, Abiword e Gnumeric. ■

Notas Parceria entre SENAC-DF e Mandriva Conectiva Assim como já fazem diversas unidades, o SENAC do Distrito Federal passará a oferecer o curso de Administração de Sistemas entre suas numerosas opções. Após firmar uma parceria com o fabricante do Mandriva Linux, o SENAC-DF espera formar até 15 turmas a partir de julho. Certificação BSD O BSD Certification Group, uma entidade que visa criar exames de certificação para profissionais que atuam com sistemas FreeBSD, aplicará em junho o Exame Preliminar de Certificação BSDA (BSD Analyst). Conhecidos também como Exames Beta, eles destinam-se a validar a metodologia de psicometria desenvolvida pelo grupo internacional de certificação dos sistemas BSD. Após essa etapa, o BSDCG poderá finalizar o formato dos exames e oferecer ao público mais uma certificação em sistemas de Código Aberto. Apenas duas provas serão aplicadas no país, sendo a primeira em Belo Horizonte, MG, no dia 4 de junho, e a segunda em São Paulo, SP, dia 8. Versão turbinada do Mandriva Flash A Mandriva lançou há poucos meses o Mandriva Flash, um pen drive de 2 GB com uma versão de seu sistema operacional Mandriva Linux 2007. Dentro do diminuto dispositivo, pouco menos de 1 GB ficavam disponíveis para armazenamento de dados pelo usuário. Com a nova versão, o usuário tem maior liberdade de selecionar quanto espaço quer disponibilizar para armazenamento e sistema. Além disso, a versão do Mandriva Linux incluída é atualizada em relação ao modelo menos espaçoso. OpenCroquet, um SDK 3D aberto O Consórcio Croquet, uma fundação dedicada ao Código Aberto, lançou o kit de desenvolvimento (SDK) OpenCroquet. O software facilita a criação e difusão de aplicações tridimensionais virtuais distribuídas, e pretende ser de grande ajuda em aplicações educacionais e científicas. O software está disponível para Linux, Mac OS X e Windows. Informática obrigatória no Ensino Médio Um projeto de lei, de autoria do deputado federal Fábio Souto, visa transformar a Informática em uma disciplina obrigatória no currículo do Ensino Médio brasileiro. De acordo com o deputado, a Informática não é apenas uma ferramenta educacional, consistindo, atualmente, em ferramenta obrigatória para se conseguir um emprego. O projeto de lei ainda precisa ser analisado por algumas comissões, só então poderá começar a ser votado. Artes gráficas com SL As artes gráficas receberão em maio a atenção da Universidade Estadual do Rio de Janeiro. Na segunda semana do mês, a UERJ oferecerá uma palestra de Carlos Eduardo, apresentando a criação de artes gráficas com uso apenas de Software Livre. Os softwares escolhidos para esse fim são os principais representantes em suas áreas de atuação: Inkscape, Gimp e Scribus. Solaris 10 em notebooks brasileiros A Sun Microsystems, fabricante do sistema operacional Solaris, anunciou uma parceria com o fabricante brasileiro de computadores Tecnoworld, para distribuição OEM da versão 10 do sistema operacional da Sun nos notebooks da empresa brasileira. A parceria abrange vendas para toda a América Latina, e inclui também o conjunto de aplicativos de escritório Star Office 8, também de propriedade da Sun. No Brasil, as máquinas equipadas com Solaris 10 custarão R$ 1900,00, o que provavelmente contribuirá positivamente para alavancar suas vendas. Lançado o Thunderbird 2.0 A mais recente versão do cliente de emails da Fundação Mozilla, o Thunderbird 2.0, finalmente foi lançada. As novidades em relação à versão anterior, 1.5, incluem a possibilidade de se definir rótulos personalizados para as mensagens, em vez de utilizar apenas os cinco pré-fabricados. Os mesmos rótulos podem ser usados em combinação com as novas funções de busca para ajudar a organização das mensagens. Um interessante recurso é o suporte facilitado aos serviços de webmail do Google e da Apple, os quais poderão ser configurados de forma simplificada, fornecendo apenas o nome de usuário e a senha usada para o serviço. Os alertas de novas mensagens também foram bastante melhorados, informando agora o conteúdo de alguns campos do email. As notas do lançamento estão disponíveis, em inglês, em http://www.mozilla.com/en-US/thunderbird/2.0.0.0/releasenotes/. Firefox cresce na Europa De acordo com a empresa francesa XiTi Monitor, dedicada à análise de dados relativos à Web, nos últimos doze meses o uso do navegador Firefox cresceu 4,7 pontos percentuais, atingindo 24,1% do público em março. De acordo com analistas, isso pode indicar que ainda há espaços a serem conquistados por um dos maiores expoentes do Código Aberto.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

17


Usuários, desenvolvedores, empresas e governo

NOTÍCIAS

FISL 8.0

A última edição do Fórum Internacional do Software Livre manteve o teor das anteriores. por Pablo Hess

E

Figura 1

ntre os dias 12 e 14 de abril foi realizado o maior evento presencial de Software Livre do Brasil. A oitava edição do Fórum Internacional de Software Livre ocorreu mais uma vez em Porto Alegre, como tem acontecido desde a primeira edição, em 2000. Em 2007, o local do evento permaneceu o mesmo do ano anterior, o Centro de Exposições do FIERGS. Além do local, o teor do evento também se manteve muito semelhante ao do FISL 7, de 2006. Personagem já clássico do fórum, assim como de praticamente todos os eventos de Software Livre no Brasil, Jon “maddog” Hall, provavelmente o mais tradicional evangelista do Linux e do Software Livre, mais uma vez marcou presença nos três dias do FISL 8. Em sua palestra envolvendo música, Maddog como sempre contagiou a platéia com um empolgante discurso em prol do motivo que unia todos os presentes. Grande destaque foi dado também à arena de programação. Com a seleção para as 40 vagas da arena tendo ocorrido antes mesmo do FISL, através da Internet, era muito grande a expectativa de todos, não apenas dos participantes da competição. Naturalmente, o prêmio para o trio vencedor – um laptop para cada – contribuiu para as atenções (– e também a tensão –) voltarem-se para a sala posicionada bem na entrada do Centro de Exposições. Monitorada por seguranças vestidos a caráter – isso é, como seguranças, não desenvolvedores – a sala com paredes de vidro rapidamente foi apelidada de aquário, e abrigou os “apenas” 29 concorrentes no primeiro dia (onze dos classificados não compareceram para participar da arena), e depois, com mais folga, os 12 finalistas, divididos em quatro equipes. O resultado da arena de programação foi altamente positivo, reforçando o clima de encontro de desenvolvedores, predominante no FISL. Uma presença que de fato chamou a atenção em Porto Alegre foi a das empresas ligadas ao poder público. Por parte do Governo Federal, Banco do Brasil, Caixa Econômica, Serpro e Dataprev atraíram muitos olhares no espaço dos estandes, e também muitos espectadores às palestras. O produto mais comentado nesse círculo foi, Algumas crianças passeavam pelo local, mostrando sem dúvida o CACIC, sua relação com o XO do OLPC. atualmente unidos maio-

res expoentes do Software Livre no Governo. Fizeram-lhe companhia o SIGATI (Sistema de Gestão de Ambientes de TI), recém desenvolvido através de uma colaboração entre a Universidade Católica de Brasília e a brasileira Itautec, e o COCAR (Controlador Centralizado do Ambiente de Rede), também de autoria da Dataprev. Na cerimônia de abertura, realizada apenas no meio do primeiro dia do evento, representantes de várias entidades e órgãos públicos falaram em favor do uso do Software Livre e de Código Aberto na gestão pública. Corinto Meffe, do Ministério do Planejamento, lançou, em seu discurso, o importante Portal do Software Público. No site, explicou, devem ser depositados todos os códigos-fonte dos programas de Código Aberto desenvolvidos por órgãos públicos brasileiros e por universidades do país. A criação do portal demonstrou o compromisso dessas entidades públicas com o Software Livre. Em outra palestra, os desenvolvedores do CACIC consultaram os presentes a respeito do futuro do desenvolvimento desse software, chegando até mesmo a pedir que alguns espectadores assumissem posições de liderança na organização do desenvolvimento. Na área dos estandes, os pontos de encontros de distribuições agregavam a multidão de desenvolvedores e entusiastas, mesmo aqueles que defendiam bandeiras de distribuições ou linguagens de programação distintas. Entre as empresas presentes, além das já citadas ligadas ao poder público, a Sun Microsystems exibia um imponente estande, com alguns de seus mais importantes executivos ligados ao Software Livre presentes, e dispostos a conversar sobre o assunto, com quem quer que aparecesse. Ocasionalmente, um javali, mascote do Java Livre, arremessava camisetas temáticas do software no meio dos que se aglomeravam ao redor do estande, os quais, evidentemente, digladiavam-se pelo suvenir. A OS Systems, de Otavio Salvador, usou seu estande para mostrar a primeira versão de sua distribuição, o OS Desktop, enquanto o XO, laptop do projeto OLPC, contava com a ilustre presença do criador do LTSP, Jim McQuillan, em seu estande, além de crianças espalhadas pelo salão mostrando sua relação com o diminuto aparelho. Empresas já tradicionalmente ligadas ao Linux e ao Software Livre também estavam presentes, como IBM, Google e Fedora, algumas inclusive objetivando realizar contratações. Ao final, o público encontrava-se satisfeito com o fórum, obviamente com algumas críticas, em especial à conectividade e à pequena variedade de opções de alimentação. No entanto, certamente todos esperarão ansiosos pela próxima edição. ■

http://supertuxbr.blogspot.com 18

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


CORPORATE

➧ Sun e Canonical em favor do Java A Sun Microsystems, fabricante do Java, e a Canonical, patrocinadora do Ubuntu, concordaram em disponibilizar na distribuição de Mark Shuttleworth todo o conjunto de softwares destinados à programação na linguagem da xícara de café. Os pacotes do Java SE 6, Glassfish, JavaDB e Netbeans já estão disponíveis no repositório multiverse do Feisty Fawn, a versão 7.04 do Ubuntu. De acordo com o dono da Canonical, sua empresa e a Sun já haviam anunciado a intenção de integrar tanto o Java quanto o Glassfish à distribuição, e a comunidade atuou para que esse objetivo fosse possível, e até mesmo superado. Segundo Jeet Kaul, vice-presidente para plataforma Java na Sun, o Java 7, quando for lançado provavelmente será incluído

no repositório main, caso a adoção do Java de fato cresça por parte da comunidade de desenvolvedores da distribuição. A decisão da Sun de propiciar a adoção do Java na comunidade Linux apresentou-se como estratégia para combater o crescimento do Mono, concorrente do Java e também de código aberto. ■

➧ Red Hat planeja crescimento

Presente no Brasil desde maio de 2006, quando abriu seu escritório na cidade de São Paulo, a Red Hat, fabricante de uma das principais distribuições Linux para o mercado corporativo e também fornecedora de diversos serviços, anunciou que pretende fechar o ano de 2007 com uma equipe maior. Mais precisamente, o dobro dos atuais 40 funcionários. O anúncio foi feito durante a inauguração do novo escritório da companhia, escolhido justamente para permitir esse crescimento. Alex Pinchev, vicepresidente de vendas da empresa, afirmou que os brasileiros estão entre os profissionais mais qualificados, sendo nossos desenvolvedores provavelmente os mais criativos no mundo, em se tratando de Linux. A ampliação do quadro de funcionários acontece em decorrência do próprio crescimento do mercado brasileiro, acelerado em relação a outros países, e que proporcionou um crescimento de 44% à receita da Red Hat, em comparação com o ano anterior, segundo Alejandro Chocolat, Julián Somodi e Gabriel Szulik, executivos da empresa responsáveis pelas operações no Brasil, América do Sul e América Latina, respectivamente. ■

➧ Lançado o OS Desktop 7.1

A empresa OS Systems lançou, durante o Fórum Internacional de Software Livre, a versão 7.1 de seu sistema OS Desktop. Trata-se de uma adaptação do Debian ao mercado corporativo brasileiro, e inclui uma interface bastante simplificada para reduzir a necessidade de treinamentos e reduzir os custos de implementação. De acordo com o principal desenvolvedor do sistema e um dos líderes da comunidade Debian no Brasil, além de desenvolvedor Debian, Otavio Salvador, um diferencial do OS Desktop é que todas as alterações realizadas no código são repassadas para seus respectivos mantenedores no projeto Debian internacional. Isso que faz com que toda a estrutura do sistema seja melhorada, em vez de ser mantido como um projeto à parte o que fatalmente incorreria na incompatibilidade entre as distribuições. O OS Desktop está disponível para compra através do site http:// www.ossystems.com.br, e em box que inclui CD de instalação, manuais impressos e em CD e suporte telefônico e via email. ■

➧ Evento Pré-FISL em SP

Dois dias antes de se iniciar o Fórum Internacional de Software Livre em Porto Alegre, a 4Linux, empresa de consultoria e treinamento em Linux e Software Livre, realizou na cidade de São Paulo um encontro pré-FISL. Contando com a presença de algumas das maiores personalidades internacionais e nacionais que freqüentariam o evento de Porto Alegre, o 4Linux Pré-FISL foi um evento de alto nível técnico. Josh Berkus apresentou uma palestra a respeito do desenvolvimento do PostgreSQL, enquanto Jon “maddog” Hall discursou sobre a arquitetura de computação baseada em servidores com thin clients, e Cezar Taurion discorreu sobre padrões abertos. Após o almoço, Kristian Kielhofner, do Asterisk, enumerou as novidades da última versão do software, seguido por Amauri Zavatini, da Caixa Econômica Federal, dando uma visão geral do relacionamento do banco com o Linux e o Software Livre. O último a falar antes do Boteco 4Linux foi Louis Souarez-Potts, apresentando o estado do desenvolvimento do OpenOffice.org e explicando como todos podem participar dele. Ao final, a confraternização entre os presentes, em clima de “boteco”, transcorreu da melhor forma possível, com os palestrantes e espectadores trocando muitas informações e idéias. ■

➧ OpenSUSE desativa recurso patenteado pela Microsoft Após a Microsoft tentar patentear o recurso de anti-aliasing de sub-pixel, os desenvolvedores do OpenSUSE, da Novell, foram obrigados a desativar essa opção, antes marcada como padrão na sua distribuição. Essa postura por parte da Novell causou a indignação de diversos usuários, uma vez que a validade da patente ainda não foi comprovada, e talvez jamais seja. Além disso, diversas outras distribuições que não dispõem de acordos sobre patentes com a gigante de Redmond ativam esse recurso em suas interfaces gráficas. ■

http://supertuxbr.blogspot.com 20

http://www.linuxmagazine.com.br


Notícias | CORPORATE

➧ CEF planeja migrar para Linux

Após migrar todos os terminais das aproximadamente nove mil casas lotéricas do país, economizando com sua estratégia R$ 60 milhões, a Caixa Econômica Federal agora está estudando realizar a migração também dos terminais de autoatendimento, localizados dentro das 2500 agências do banco em todo o Brasil. Atualmente, esses terminais utilizam como sistema operacional o Windows NT, e a economia das 16 mil licenças, proveniente da adoção do Linux, certamente seria significativa. Além de seguir a tendência aplicada às casas lotéricas, outras áreas da empresa também podem vir a migrar para sistemas abertos. ■

➧ Office do Google mais completo

A Google Inc. está lançando mais um programa de escritório baseado na Web. Após o sucesso dos Google Docs & Spreadsheets, aplicativos on-line acessíveis pelo navegador, já era possível há alguns meses editar de forma colaborativa (ou solitária, dependendo do autor) textos e planilhas, exportando-os, ao final, para diversos formatos, incluindo PDF, ODF, MS Office e RTF. Com o Presently acrescentado ao conjunto, agora será possível criar e editar apresentações com a mesma simplicidade, e tudo indica que também serão suportados os formatos dos principais conjuntos de aplicativos de escritório, no momento da exportação dos arquivos. ■

➧ Dataprev migrando para Linux

A Empresa de Tecnologia e Informações da Previdência Social, Dataprev, planeja migrar o sistema operacional de 45 mil máquinas de seu parque de desktops, que atualmente conta com 53 mil máquinas. De acordo com José Pissin, que participa da comissão de Software Livre da empresa, 25 mil desses computadores, distribuídos por todo o país, já utilizam Software Livre, porém, predominantemente, apenas através do conjunto de aplicativos de escritório BrOffice.org. Embora parcial, a adoção desse software livre já foi responsável por uma economia de aproximadamente R$ 35 milhões. Nos campo dos servidores, a situação é diferente, e 1650 máquinas já utilizam sistemas operacionais abertos, como Red Hat e Debian. No entanto, as soluções de email e bancos de dados ainda são proprietárias, e sua migração para Código Aberto também está nos planos da Dataprev. ■

➧ Concurso IBM de mainframes para estudantes A IBM, importante fabricante de mainframes, está incentivando estudantes brasileiros a conhecerem e trabalharem com essa plataforma. Com o 1º Concurso de Mainframe para Estudantes Brasileiros, realizado pela IBM Brasil de 30 de abril a 27 de julho, a Big Blue premiará os estudantes e professores vencedores com vagas para estágio na empresa, notebooks Lenovo, Playstations, tocadores de MP3 e camisetas do concurso. Segundo o site do concurso, não é necessária qualquer experiência prévia com mainframes, pois durante a competição o estudante será cada vez mais exigido, também aprendendo ao longo do processo. Infelizmente para alguns, o período de inscrição, que inicialmente iria até o dia 29 de junho, já foi finalizado, devido à procura muito superior às estimativas. ■

➧ Portal do software público

Foi lançado oficialmente durante o FISL 8 o Portal do Software Público. Essa iniciativa do Governo Federal busca fornecer a infraestrutura para que órgãos públicos, como o Serpro e a Dataprev, assim como as universidades e empresas públicas, possam depositar seus programas desenvolvidos em Código Aberto. O site pode ser acessado em http://www.softwarepublico.gov.br. ■

Notas Versão Beta do Mandriva Corporate Desktop 4 A Mandriva Conectiva está lançando no Brasil a versão beta do Corporate Desktop 4. De acordo com a empresa, a instalação do sistema operacional leva menos de dez minutos, e é adequada para trabalhar em ambientes mistos, interagindo amigavelmente com redes e estações Windows. O Corporate Desktop pode ser baixado em https://my.mandriva.com/cd4/trial/. Brasil na ODF Alliance A liderança do Brasil na América Latina rendeu ao país a primeira participação do bloco na ODF Alliance, entidade destinada a determinar e disseminar o Open Document Format, adotado, entre outros, pelos aplicativos de escritório OpenOffice.org. Jomar Silva foi o brasileiro selecionado para ocupar o cargo de representante da entidade, formada por diversas empresas de grande representatividade mundial, como IBM, Sun Microsystems e Red Hat. Plataforma aberta para pagamentos bancários A Unisys anunciou uma nova plataforma de pagamentos destinada a bancos. Construída em Código Aberto, a plataforma permite que os bancos distribuam com mais facilidade novos produtos. Com a nova solução, a redundância de funções de pagamento pode ser reduzida, o que se reflete na diminuição dos custos de infraestrutura, além de facilitar o gerenciamento de operações de pagamento. De acordo com a Unisys, o novo produto apresenta grande flexibilidade e eficiência, por tratar-se de Software Livre e utilizar a abordagem de arquitetura orientada a serviços (SOA). Vídeos da campanha do RHEL 5 A campanha de lançamento do Red Hat Enterprise Linux 5 foi cuidadosamente elaborada. Os criativos vídeos da campanha “Real Technology”, exibidos na cerimônia de lançamento, estão agora disponíveis tanto para visualização on-line quanto para download, em formato Ogg Theora, no site da campanha: http://www.redhat. com/videos/real_tech/. Os outros vídeos mostrados na cerimônia, os mais sofisticados “Truth happens”, “Inevitable” e “Choice”, também podem ser baixados, porém em outro endereço: http://www.redhat.com/videos/ourfilms.html. Metrô-SP adota SL e economiza US$ 900 mil A Companhia do Metrô de São Paulo realizou recentemente uma migração para Software Livre, na qual atingiu uma economia da ordem de 900 mil dólares. Com a adoção do PostgreSQL, iniciada em 2001, todo o processo de desenvolvimento da empresa sofreu mudanças para se adequar ao banco de dados aberto. A empresa vencedora da licitação, a Dextra Sistemas, treinou analistas de bancos de dados para administrarem o novo software, e apresentou também palestras sobre a cultura do Software Livre, complementando-as com a criação de FAQs sobre o sistema de banco de dados. Além do PostgreSQL, a empresa adotou como aplicativo de escritório o OpenOffice.org, contribuindo também para a economia proveniente do não pagamento de licenças. UE pede informações gratuitas sobre protocolos do Windows O monopólio da Microsoft já rendeu à empresa um longo processo por parte do órgão antimonopólio da União Européia. Agora, a entidade pede que a empresa forneça a seus concorrentes algumas informações importantes a respeito de seus protocolos proprietários. O preço a ser cobrado pela empresa de Bill Gates, de acordo com a carta formal enviada pela Comissão Européia, não pode ultrapassar um valor simbólico. Segundo o jornal Financial Times, o objetivo da União Européia é permitir que outras empresas construam aplicações compatíveis com os produtos da Microsoft. Estratégia Linux da Intel tem nova gerente A Intel divulgou recentemente o nome de sua nova Gerente de Estratégia Linux. Sulamita Garcia, líder das Linux Chix no Brasil e renomada profissional Linux, foi contratada com o objetivo de manter uma estratégia de acordo com a realidade latino-americana, interagindo com a comunidade, o governo e as empresas privadas.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

21


Edson Siqueira, Diretor de Vendas da Fujitsu

CORPORATE

Confiança no Linux

A Fujitsu atua no setor de tecnologia desde os primórdios dessa área. Suas experiências com o Linux e os padrões abertos também vem de longa data, e continuam crescendo. por Pablo Hess Hidden- www.sxc.hu

F

undada em 1935 no Japão, a Fujitsu é um dos mais tradicionais fabricantes de servidores e mainframes, além de diversos outros dispositivos de computação e alta tecnologia. A empresa se envolveu seriamente com a ideologia dos padrões abertos na década de 90, e posteriormente também com o Software Livre. Atualmente, a terceira maior fornecedora mundial de serviços de TI encontra-se altamente comprometida com o Linux. Tendo contribuído, inclusive, com grandes porções de código-fonte, a Fujitsu possui por esses fatores, uma visão

Edson Siqueira» A Fujitsu fabrica servido-

res, equipamentos de armazenamento, e também middleware. No início da década de 90, decidimos nos juntar ao movimento em favor dos padrões abertos. Isso ocorreu antes mesmo da difusão do Linux e do Software Livre como vemos hoje. Nosso objetivo era incorporar padrões abertos a arquiteturas proprietárias. O posicionamento da Fujitsu, nesse momento, foi um pouco diferente do atual movimento de Código Aberto. Nós realmente tentamos adaptar as soluções proprietárias para a adoção de padrões abertos. Com isso, por exemplo, sistemas operacionais proprietários começaram a oferecer suporte ao protocolo TCP/IP. Essa postura estava perfeitamente de acordo com a tecnologia do software proprietário, pois permitia a manutenção da posse dos binários, abrindo, ao mesmo tempo, a possibilidade de comunicação com outros componentes, que por sua vez também mantinham seus códigos fechados. Com isso, a Fujitsu construiu um sistema inteiro baseado em padrões abertos. Como nós desenvolvemos todo o espectro de componentes, desde o hardware até os diversos softwares que ele executa,

Nossa proposta de valor é entregar a nossos clientes uma plataforma Linux com os mesmos níveis de confiabilidade e desempenho presentes em grandes servidores Unix ou mainframes. única do mercado de Código Aberto. O Diretor de Vendas da empresa, Edson Siqueira, concedeu uma entrevista à Linux Magazine, na qual nos contou como a Fujitsu tem tirado proveito do Código Aberto para obter altos lucros. Qual é a história da Fujitsu com os padrões abertos? Linux Magazine»

cada uma das equipes responsáveis por cada componente, em todos os nossos produtos, foi encarregada de tornar seu trabalho compatível com os padrões abertos. Assim, construímos toda uma nova plataforma, utilizando os conceitos já inerentes aos mainframes, porém para o mundo aberto. Esse foi o pioneirismo da Fujitsu. Como foi implementada a metodologia de padrões abertos? ES» Em nosso middleware, adotamos o padrão CORBA, acrescentando a ele a possibilidade de trabalhar com comandos Cobol. Mais tarde, esse produto passou a suportar também Java. Naturalmente, nossos softwares utilizavam como base o Unix, tendo em vista a escalabilidade, que também norteou a construção do próprio hardware, desde os processadores até os discos rígidos. Em 1999, lançamos o primeiro servidor com sistema operacional Solaris escalável até 128 processadores, utilizando a arquitetura SPARC, a primeira arquitetura aberta de processadores. LM»

Como isso beneficiou a empresa? A maior parte do custo de desenvolvimento de uma nova solução não reside na fabricação ou planejamento do hardware, mas na adaptação dos softwares para rodar nela. Com a adoção de padrões abertos, conseguimos reduzir drasticamente nossos custos gerais de produção, pois cada software produzido sob esse conceito é absolutamente replicável em qualquer arquitetura. LM» ES»

http://supertuxbr.blogspot.com 22

http://www.linuxmagazine.com.br


Entrevista Fujitsu | CORPORATE

Baseando-nos nisso, nossa proposta de valor atual é permitir que o cliente utilize as aplicações que já possui, enquanto nós compatibilizamos nossos produtos com esse cenário. Dessa forma, a única mudança que pode haver entre uma arquitetura e outra é mesmo o processador, pois todo o restante dos componentes, por serem baseados em padrões abertos, são perfeitamente compatíveis entre si e, portanto, profundamente portáveis. Que tipos de empresas a Fujitsu tem como clientes? ES» No Brasil, temos como clientes os maiores consumidores de tecnologia do país, como as áreas de processamento de dados do Governo, suas prestadoras de serviço, bancos, empresas financeiras e de telecomunicações. Talvez também haja demanda no ambiente acadêmico e científico, porém ainda insuficiente para garantir à Fujitsu o retorno sobre o investimento. Isso ocorre devido à diferença de foco entre nossos clientes e essas outras áreas. Aplicações científicas invariavelmente exigem desempenho máximo. Caso algum componente das máquinas responsáveis pelo trabalho apresente problemas, é perfeitamente aceitável parar todo o funcionamento e trocar as peças adequadas. Entretanto, é inaceitável esperar uma operação financeira devido a falhas de disco, memória ou processador. Isso significa que nossos clientes devem privilegiar a confiabilidade dos sistemas como ponto central de suas operações. Essas são duas variáveis que geralmente devem ser pesadas. LM»

LM» Nessas empresas, como é a adoção do Linux? ES» O Linux tem sido aplicado nos ambientes periféricos de computação. Em empresas de telecomunicações, a arquitetura do processamento costuma ser bem mais orientada ao datacenter. Nelas, não há grande poder computacional fora dos datacenters, e a comunicação dessas máquinas com a camada periférica tem baixíssimo custo, dada a área de atividade dessas empresas. Enquanto isso, os bancos costumam ser mais balanceados nesse sentido. Embora a maior parte do processamento de fato ocorra nos datacenters, existe bastante poder computacional no ambiente periférico. Por isso, temos observado uma maior adoção do Linux nessa categoria de empresas. Quando os bancos buscam a redução de custo operacional e padro-

nização de ambientes, o Linux tem se mostrado uma escolha interessante, pois pode facilmente substituir alguns dos ambientes Unix usados anteriormente. Qual é o envolvimento da Fujitsu com o Linux? Vocês desenvolvem para essa plataforma? ES» Sem dúvida. Há algum tempo vimos incorporando ao Linux características importantes dos ambientes Unix. Além da maior confiabilidade, há os recursos que permitem maior flexibilidade operacional, tais como o particionamento físico, por exemplo. Já conseguimos oferecer suporte, em nossas máquinas, à alteração de partições de forma dinâmica. Embora isso ainda não seja possível no Linux, já estamos preparados nesse sentido. Nosso objetivo maior é permitir que o Linux possua os mesmos recursos e funcionalidades que já se encontram presentes nos principais sistemas Unix. E, como as empresas sempre buscam reduzir o número de fornecedores, nós estamos aptos a representar o único fornecedor de todo o ambiente de TI, desde as máquinas até as soluções na camada de aplicações. LM»

LM» Que vantagens técnicas e estratégi-

cas o Linux oferece à Fujitsu? ES» Devido à sua característica de códigofonte aberto, o Linux é uma excelente plataforma de desenvolvimento. Quando incluímos no Linux o suporte a alguma tecnologia que desenvolvemos, é muito mais fácil essa tecnologia vir a se tornar um padrão, ou simplesmente ter sua adoção aumentada. Quanto a isso, nenhuma outra plataforma oferece a mesma velocidade de resposta do mercado. Se fôssemos fazer o mesmo com um sistema proprietário que pertencesse a uma empresa específica, nem mesmo teríamos a certeza da aceitação da tecnologia pelo mercado, o que significaria riscos e custos muito maiores para o desenvolvimento. Além disso, todos os avanços implementados no sistema operacional pela imensa comunidade de desenvolvedores são automaticamente adequadas para rodar em nossa plataforma. No Unix, a comunidade de desenvolvedores pertence à empresa que fabrica o sistema, assim como os aplicativos desenvolvidos por

essa comunidade. Nesse ponto, o Linux é altamente vantajoso, e inigualável. Nesse quesito, nossa proposta de valor é entregar a nossos clientes uma plataforma Linux com os mesmos níveis de confiabilidade e desempenho presentes em grandes servidores Unix ou mainframes. LM» Como você tem visto o perfil de ado-

ção do Linux por grandes empresas? ES» A substituição de ambientes Unix, sem dúvida, tem sido a principal porta de entrada do Linux nas empresas. Na realidade, se analisarmos bem, o Linux não deixa de ser, ele mesmo, um Unix. O diferencial, no caso, é o acesso ao código-fonte, que torna muito mais simples a extensão do software, assim como as correções de suas eventuais falhas.

Nesse ponto, o Linux é altamente vantajoso, e inigualável. O Linux também tem mostrado forte atuação na padronização de ambientes de TI, dentro das empresas. Ainda é comum haver cinco versões de Unix operando dentro de uma mesma empresa, além do Windows. O Linux oferece uma ótima possibilidade de se atingir a padronização desse ambiente, substituindo boa parte das funções hoje exercidas pelos outros sistemas, tanto Unix quanto Windows, em uma plataforma única e coesa, ou seja, padronizada. Como resultado, o cliente dispõe de uma maior independência de fornecedores. Muitos fabricantes de hardware alegam temer a grande concorrência de outros, em decorrência da inclusão do suporte a suas tecnologias no Linux. Como a Fujitsu lida com isso? ES» Nosso diferencial não se encontra no ambiente operacional em si, mas na plataforma. A mesma postura é adotada por nossos concorrentes, que não são muitos. As alterações no Linux visam tornar o sistema operacional tão confiável quanto nossa plataforma de hardware. Então, não há lado negativo em permitirmos o acesso ao código-fonte que incorporamos ao sistema. ■ LM»

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

23


SOA e ERP

CORPORATE

Um futuro planejado O ERP com novas funcionalidades e recursos. por Luis Maeda

A

s tradicionais ferramentas de ERP (Enterprise Resource Planning, ou Planejamento de Recursos Empresariais) vem sofrendo contínuas modificações e conquistando novas funcionalidades e recursos. Essas alterações passam pela demanda das empresas por ferramentas que possibilitem uma integração forte e consistente entre seus departamentos e fluxos de informação. Mas, não é para isso que as empresas investem, e cada vez mais, nos sistemas de ERP? O que há de novo nisso? Bem, devemos nos lembrar do paradigma da adoção de tecnologias: a adoção de uma solução de tecnologia deve trazer benefícios maiores do que os custos e carga de trabalho necessários para sua implementação. De olhos abertos para essa regra, surgiu a dúvida do que era melhor fazer: a primeira opção era desenvolver o seu próprio ERP. Mas, em um cenário como esse, a empresa precisa de um departamento de informática próprio,

O SOA deverá tornar-se a próxima oportunidade de negócios para as empresas de software a partir de 2008/2009 com vários profissionais desenvolvendo e implementando o sistema. É claro que isso gera altos custos devido às constantes atualizações de tecnologias, manutenção de infraestrutura e alocação de novos profissionais. A segunda opção era procurar uma equipe de desenvolvimento, ou uma empresa, da qual fosse possível comprar um produto já finalizado. Adquirir um ERP nesse contexto exige pesquisa das soluções disponíveis no mercado, da confiabilidade das empresas que desenvolvem ou implementam essas soluções, além de uma análise de quais dentre suas necessidades serão cobertas pelo software. As soluções já finalizadas, obviamente, são mais vantajosas em diversos quesitos, incluindo a questão do suporte técnico profissional. Ao se construir uma solução de ERP interna, toda a infraestrutura está por fazer, inclusive o suporte e resolução de problemas. Com isso, as empresas de software de ERP começaram a despontar no mercado, incluindo gigantes do rol da SAP, ORACLE e

MICROSOFT. No Brasil, essas empresas atuam através de parceiros certificados, como Systemplan Consultoria, que é parceira de desenvolvimento de sistemas (ISV Independent Software Vendor) da SAP. Chegou a hora de atender as novas necessidades dos clientes, em um mundo onde, por conta da globalização, as ferramentas de trabalho devem crescer e evoluir juntamente com os desafios que elas antagonizam – e muitas vezes até antes. E é aqui que entramos no conceito de SOA. A plataforma SOA (Service Oriented Architecture, ou Arquitetura Orientada a Serviços) é um conector da integração corporativa. Ao mesmo tempo em que facilita o desenvolvimento de novas versões e funcionalidades, reduzindo custos internos, facilita a criação de web services e potencializa a capacidade de integração de processos de negócios da empresa. A SOA pode ser bem representada a partir do processo chamado de “find-bind-execute paradigm”. Esse processo preconiza que os provedores de serviços registrem informações em um registro central, com suas características, indicadores e aspectos relevantes às tomadas de decisões. O registro é utilizado pelo cliente para determinar as características dos serviços necessários e das decisões a serem tomadas. A SOA deverá tornar-se a próxima oportunidade de negócios para as empresas de software a partir de 2008/2009. Com a arquitetura SOA, as empresas de software poderão vender os softwares como serviços, fazendo uma mudança na atuação de vendas por licenças de uso. Veremos o surgimento das vendas de bilhetagem de uso do ERP, onde o cliente pagará pelo uso do produto e de suas ferramentas por utilização, como um aluguel. A melhor vantagem da SOA é que o cliente torna-se independente dos fornecedores de softwares, descartando os grandes projetos de integração e implementação. Além disso, facilita-se a integração de diferentes fornecedores de software, em um mesmo ambiente, com óbvio ganho por parte do cliente corporativo. ■

O autor LUIZ HIROYUKI MAEDA, é formado em Ciências Contábeis com Analise de Sistemas e possui MBA em Gestão Empresarial. Atualmente é Diretor Presidente da Systemplan Consultoria ( www.systemplan.com.br).

http://supertuxbr.blogspot.com 24

http://www.linuxmagazine.com.br


Cobertura da 1ª Bossa Conference

CORPORATE

O futuro da mobilidade O Instituto Nokia de Tecnologia de Recife organizou a 1ª Bossa Conference, um encontro voltado à troca de informações sobre o desenvolvimento de dispositivos e aplicações móveis. por Rafael Peregrino da Silva e Pablo Hess

E

m grande estilo, contando com a presença de grandes desenvolvedores de sistemas de Código Aberto – tanto como palestrantes quanto na platéia –, começou dia 12 de março a Bossa Conference, evento do Instituto Nokia de Tecnologia (INdT), patrocinado pela Nokia e realizado em Porto de Galinhas, Pernambuco. O público especializado acorreu em massa – aproximadamente 170 pessoas – e palestras como a de Chris Lattner (LLVM, Low Level Virtual Machine), Milko Boic (Helix DNA), Zack Rusin, Brad Midgley, Koen Kooi, Marcos Moraes (MPEG4/H264), entre muitos outros, de fato capturaram a atenção dos participantes durante todo o evento. Representantes de diversas empresas de desenvolvimento de soluções Linux também estiveram presentes, como Marcelo Tosatti (OLPC/Red Hat), programador do Kernel Linux e antigo mantenedor de sua série 2.4. Sandro Alves, Gerente de Negócios do INdT, comandou a abertura do evento, chamando à mesa também o presidente do Porto Digital de Recife, Valério Veloso, o Diretor de Tecnologia da Nokia, Jarmo Järvenpäa, o Gerente de Pesquisa e Desenvolvimento do Laboratório do INdT em Recife, Aldenor Martins, e seu colega de posição em Manaus, Ilias Biris, e, por fim, representado o Presidente do INdT (Geraldo Feitoza), Petri Launiainen, Diretor da área de Future Solutions do INdT. No campo prático, a Linux Magazine teve a oportunidade de utilizar o N800, novo Tablet PC desenvolvido pela Nokia a partir do trabalho do INdT, e aprovou a impressionante gama de recursos disponíveis na máquina. Já no primeiro dia a escolha da palestra a comparacer foi complicada, com Chris Lattner apresentando o LLVM, uma nova abordagem para compilação otimizada, enquanto Milko Boic demonstrava o desenvolvimento de aplicações multimídia com base no Helix DNA. No início da tarde, três palestras concorriam pela atenção dos participantes. Em sua palestra sobre OpenEmbedded, Koen falou sobre o modelo tradicional de compilação cruzada – quando se compila o código-fonte em uma plataforma para gerar código que será executado em outra –, contrapondo a necessidade de se utilizar kits de desenvolvimento (SDKs) com a metodologia oferecida pela plataforma OpenEmbedded. Após essa breve introdução, Koen buscou mostrar na prática quais são os benefícios da metodologia OpenEmbedded, ilustrando-os com a utili-

zação de arquivos de configuração e outros, com os quais é possível gerar pacotes para distribuições comuns (DEBs, RPMs, TGZs) ou embarcadas (por exemplo, IPKs) a partir do mesmo esquema de geração de aplicativos. Carsten “Rasterman” Haitzler, criador do inovador gerenciador de janelas Enlightenment, falou também sobre seu trabalho com a API gráfica Evas, explicando como desenvolver interfaces gráficas bonitas com alta eficiência. Ainda na onda do desenvolvimento, Mika Rytkonen falou da coleção de bibliotecas POSIX para desenvolvimento em Symbian OS, o Open-C. No segundo dia, após o keynote do desenvolvedor do Gnome Jeff Waugh, a comunicação sem fio recebeu especial atenção, com Marcel Holtmann explicando a integração do Bluetooth a sistemas Linux, tanto embarcados quanto desktops, e Inaky Perez-Gonzalez explicando os inovadores conceitos de comunicação sem fios UWB (Ultra-wide band) e WUSB (Wireless USB) e como andam seu suporte e uso no Linux. O D-Bus foi tema da palestra de John Palmieri, e Tony Lindgren abordou o desenvolvimento do kernel em dispositivos embarcados, um dos mercados em que o Linux mais tem se destacado. Unindo a multimídia aos dispositivos embarcados, Marcelo Oliveira, do INdT, mostrou o impressionante Canola, um centro multimídia desenvolvido sobre a plataforma Maemo, da Nokia, com funcionalidade semelhante a outras soluções, como o atraente Front Row, da Apple. O terceiro dia contou apenas com apresentações durante a manhã. Mauro Chehab, desenvolvedor do kernel Linux, falou sobre drivers multimídia e TV digital no kernel, e em seguida Robert McQueen mostrou a plataforma de comunicação em tempo real Telepathy. Ao final, Elvis Pfutzenreuter demonstrou o conjunto de ferramentas Mamona, mais um software desenvolvido para Figura 1 Mesma de trabalhos durante a 1ª Bossa, realizada em Recife. o Maemo. ■

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

LM30_Bossa.indd 25

25

26.04.07 17:50:21


CORPORATE

Oracle OpenWorld No evento de 2007, a Oracle mostrou seus investimentos em parcerias e aquisições, consolidando sua posição no mercado. por Pablo Hess

H

á alguns anos, diversas empresas podiam afirmar que possuíam uma pilha completa de soluções computacionais. Antes da difusão dos padrões abertos e do próprio Código Aberto, era praticamente obrigatório, para qualquer companhia que desejasse ter considerável penetração no mercado corporativo, desenvolver seu próprio sistema operacional (geralmente, uma variante de Unix), seu protocolo de rede, seus aplicativos etc., e garantir a compatibilidade e a interoperabilidade entre eles. Entretanto, felizmente, com os padrões abertos veio a ênfase na interoperabilidade. Empresas passaram a desfrutar a possibilidade de criar softwares compatíveis, sem a exigência de pagamento de enormes quantias em licenciamento de algum padrão fechado. Na realidade, a interoperabilidade tornou-se até mesmo obrigatória. Um dos efeitos disso foi a redução da redundância de soluções disponíveis. As companhias não dependiam mais de seus próprios sistemas operacionais, ou de seu próprio protocolo de rede, seu próprio sistema gerenciador de bancos de dados, e assim diversas divisões foram gradativamente sendo fechadas. A partir desse ponto, bastava a um fabricante de software que ele construísse uma única peça desse quebracabeça de componentes, desde que fosse compatível com os padrões (abertos) vigentes e, sobretudo, possuísse um bom custo-benefício. Assim começou sua operação a Oracle, com seu banco de dados no padrão SQL. Após alçá-lo a uma posição de grande prestígio no mercado, com suporte aos principais

Figura 1 Charles Phillips apresentou à numerosa platéia a recente conquista da “pilha completa” de soluções de software da Oracle.

sistemas operacionais – incluindo o Linux, naturalmente – a empresa iniciou uma onda de aquisições, passando a abarcar, entre suas ofertas, servidores de aplicação, infraestrutura de middleware etc. No Oracle OpenWorld América Latina, realizado na cidade de São Paulo entre os dias 27 e 29 de março, a empresa deu especial ênfase a uma de suas ofertas mais recentes, um sistema operacional. Aproveitando-se da característica livre do sistema operacional da Red Hat, o Red Hat Enterprise Linux, a empresa de Larry Ellison passa agora a oferecer a seus clientes também a base para sua operação, o Unbreakable Linux. O termo mais ouvido durante a apresentação do evento, feita pelo presidente da companhia, Charles Phillips, foi “complete stack” (algo como “pilha completa”), reforçando o atual desejo da empresa de oferecer toda a infra-estrutura de software de que uma corporação possa depender, desde o sistema operacional até as aplicações, passando pelo banco de dados e pelo middleware. Estiveram presentes ao evento os principais parceiros da Oracle, como os fabricantes de hardware – dos quais a empresa ainda depende – e os parceiros, tanto locais quanto globais, que atuam na interface da empresa com os clientes. Nos estandes, fabricantes de hardware, como Dell, HP, IBM, Sun, AMD e SGI, atestavam a multiplicidade de plataformas homologadas pelo fabricante de software, enquanto empresas integradoras de sistemas e prestadoras de serviços mostravam suas soluções para o público presente. Os palestrantes do OpenWorld discursaram sobre temas bastante atuais, como padrões abertos, SOA e CRM. Entre os casos de sucesso apresentados, a Companhia Vale do Rio Doce e a Unilever relataram suas experiências, esta última mostrando os benefícios de seu uso do sistema CRM Siebel. As palestras técnicas foram marcadas pela forte interação da IBM, importante patrocinadora do evento, com a Oracle, especialmente no segmento de hardware. A arquitetura Power, da Big Blue, foi apresentada como grande aliada para se obter alto desempenho na plataforma de software da Oracle. Diversas apresentações dedicaram-se ainda ao campo administrativo e financeiro. Com uma demonstração dos modelos de negócios aplicados aos padrões abertos adotados pela empresa, e também de uma análise da arquitetura orientada a serviços, além de diversas palestras abordando as soluções da Oracle para aproveitamento máximo de recursos financeiros, ficou clara a profunda mudança que o mercado da computação corporativa vem atravessando ultimamente e o Linux está na base disso. ■

http://supertuxbr.blogspot.com 26

http://www.linuxmagazine.com.br


Novell Brainshare® 2007

CORPORATE

O estandarte da interoperabilidade No 25º Brainshare, a Novell apresentou novos produtos e esclareceu os benefícios de seu recente acordo com a Microsoft, entre diversas outras novidades. por Rafael Peregrino da Silva

S

alt Lake City, em Utah, nos EUA, foi novamente o palco do Novell Brainshare[1], realizado de 19 a 24 de março. A cerimônia de abertura da 25ª edição do evento contou, como de costume, com uma série de lançamentos, como o da versão “Brainshare Beta” do SUSE Linux Enterprise 10 SP1[2]. O discurso de abertura ficou a cargo de Ron Hovsepian[3], atual Presidente e CEO da empresa, que apresentou em linhas gerais as estratégias da Novell para 2007, falando da parceria com a Microsoft, um dos principais temas do evento este ano. Após sua apresentação, Jeff Jaffe[4], Vice-Presidente de Tecnologia da Novell, e ninguém mais que Craig Mundie[5], Diretor de Pesquisa e Estratégias da Microsoft, dividiram o palco diante da multidão perplexa que veio participar desta edição do evento, no intuito de trazer ao público mais informações a respeito do acordo. Além do anúncio da versão preliminar do Service Pack 1 do SUSE Linux Enterprise 10, dois outros importantes lançamentos foram feitos: ➧ Novell Teaming + Conferencing: uma nova solução de colaboração, desenvolvida pela empresa SiteScape[6] e licenciada pela Novell via OEM. A grande novidade desse produto, entretanto, é que a SiteScape criou um projeto de Código Aberto baseado na mesma tecnologia, chamado ICEcorps[7]. O sistema permite colaboração em tempo real, com suporte integrado a tecnologias de voz sobre IP e mensagens instantâneas e, o que é melhor, com suporte ao BrOffice.org para edição concorrente de documentos, planilhas etc; ➧ SUSE Linux Enterprise Thin Client: uma solução composta pelo do SUSE Linux Enterprise Desktop e uma ferramenta para criação de imagens customizadas do sistema, que pode ser usada por parceiros de canal da Novell para fornecer uma solução de thin clients de acordo com a necessidade de seus clientes. A sessão de abertura prosseguiu com uma série de demonstrações de interoperabilidade entre o SUSE Linux Entreprise Desktop e o Windows® (XP e Vista), primeiros frutos dos esforços conjuntos da Novell e da Microsoft em favor da interoperabilidade. Encerrando a sessão de abertura, Nat Friedman e Guy Lunardi, desenvolvedores Linux da Novell, apresentaram as últimas novidades do SUSE Linux Enterprise Desktop, encantando o público com novos recursos gráficos da distribuição, que vão ainda mais longe que os efeitos 3D

apresentados em 2006. A dupla exibiu a automatização de operações executadas pelo usuário na área de trabalho, e também o novo gerenciamento, muito mais fácil, de múltiplos monitores, entre outras novidades. Outras apresentações ao longo do evento mostraram casos de sucesso na adoção de softwares e infra-estrutura da Novell, como seu Open Workgroup Suite, adotado por diversas empresas públicas e privadas dos EUA e Europa. Em uma entrevista exclusiva para a Linux Magazine, Ron Hovsepian afirmou que a Novell está investindo fortemente na área de interoperabilidade. Quando questionado a respeito do recente acordo da companhia com a Microsoft, Hovsepian primeiro esclareceu que os beneficiados são os clientes de ambas. Em caso de disputa legal entre as empresas, os clientes ficam isentos de qualquer penalização, mesmo que fique caracterizada alguma infração por parte de uma das duas. O CEO afirmou categoricamente que não há, atualmente, um pacto de troca de licenças entre as duas empresas, e provavelmente jamais haverá. As entrevistas completas realizadas com executivos da Novell durante o Brainshare Figura 1 Ron Hovsepian tentou esclarecer os benefícios trazidos pelo 2007 serão publicadas na próxima edição da acordo Novell-Microsoft. Linux Magazine. ■

Mais Informações [1] Página do Novell Brainshare: http://www.novell.com/brainshare/ [2] Versão “Brainshare Beta” do SLED 10 SP1: http:// www.novell.com/brainshare/slesp1.html [3] Ron Hovsepian: http://www.novell.com/company/bios/rhovsepian.html [4] Jeff Jaffe: http://www.novell.com/company/bios/jjaffe.html [5] Craig Mundie: http://www.microsoft.com/ presspass/exec/craig/default.mspx [6] SiteScape: http://www.sitescape.com/ [7] ICEcorps: http://www.sitescape.com/products/icecorps.php

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

27


A liderança do Linux nos sistemas embarcados

CORPORATE

Cezar Taurion O

Linux caminha para se tornar dominante no ambiente de sistemas embarcados. Recentes pesquisas apontam que desenvolvedores estão migrando ou planejam a migração para Linux, deixando os sistemas proprietários que anteriormente dominavam este mercado. Essa tendência reflete claramente a necessidade, por parte dos desenvolvedores dos sistemas embarcados, de sair de um contexto onde proliferam inúmeros sistemas operacionais incompatíveis entre si, o que acarreta imensos gastos e demoras no redundante trabalho de portar uma aplicação de uma para outra arquitetura. A liderança do Linux nos sistemas embarcados tem um significado importante, pois à medida que ele se dissemina em milhões de dispositivos (em número muito maior que os PCs), acarretará uma forte influência nas plataformas tradicionais. Como software é software, qualquer que seja a plataforma, desenvolvedores acostumados a desenvolver aplicações para o ambiente Linux em um celular poderão rapidamente adaptar seus conhecimentos para desenvolver também aplicações para qualquer outra plataforma.

Um sistema operacional baseado nos princípios do Código Aberto tira um peso grande do custo, tornando-se bem atraente para esse setor. Por que o Linux tem feito tanto sucesso nesse cenário? O mercado de software embarcado tem peculiaridades específicas. Apresenta uma ampla diversidade de funcionalidades e utiliza uma gama muito grande de processadores. É uma diversidade diferente do ambiente de computação tradicional, onde existe uma concentração em poucos processadores. O software embarcado deve apresentar alta estabilidade. Uma aeronave e uma usina nuclear não podem apresentar falhas no software. Outra característica de muitos dispositivos é a necessidade de operação em tempo real, principalmente nos equipamentos de controle de processos.

O software embarcado deve operar em ambientes de recursos computacionais limitados, como memória ou discos magnéticos. Assim, recursos como gerenciamento de discos e rotinas de grande impacto no desempenho de sistemas comerciais perdem importância no contexto da computação embarcada. Outro fator, o custo, é de grande relevância em sistemas embarcados. Um telefone celular não pode custar o dobro de outro, apenas por causa do preço do software básico que esteja embutido nele. O sistema operacional de um equipamento desses é totalmente invisível, e não desperta a percepção do comprador. As diferenças devem ser claramente perceptíveis, como um maior número de funcionalidades disponibilizadas. Um sistema operacional baseado nos princípios do Código Aberto tira um peso grande do custo, tornando-se bem atraente para esse setor. O Linux, pela qualidade do seu código, já é hoje peça fundamental da arquitetura de tecnologia de sistemas embarcados militares dos EUA. A Marinha americana baseou sua arquitetura, denominada NOACE – Navy Open Architecture Computing Environment, em padrões abertos, e considera o Linux fundamental em sua estratégia de reduzir os tempos e custos de desenvolvimento de seus sistemas embarcados em navios, aeronaves e submarinos. O mesmo conceito de padrões abertos foi adotado pelo Exército americano em sua arquitetura chamada de WSCOE – Weapons Systems Common Operating Environment. De maneira geral, os usuários (consumidores) desses equipamentos não sabem e nem precisam saber que o Linux está rodando em seus dispositivos. Mas para os fabricantes, o fato de o código-fonte do Linux estar disponível permite que seja usado sem pagamento de royalties para cada produto vendido, além de facilitar muito a customização, praticamente montando-o para as necessidades específicas de cada aparelho. Isso dá aos fabricantes um completo controle sobre o dispositivo, permitindo-lhes fazer modificações e implementar inovações muito rapidamente. ■

O autor Cezar Taurion é gerente de novas tecnologias aplicadas da IBM Brasil. Seu blog está disponível em http://www-03.ibm. com/developerworks/blogs/page/ctaurion.

http://supertuxbr.blogspot.com 28

http://www.linuxmagazine.com.br


ERP e CRM livres

Empresa de acordo CAPA

Código Aberto ajuda a trazer eficiência ao fluxo de dados e relacionamentos das empresas. por Tadeu Carmona

A

organização de uma empresa não é semelhante à de um arquipélago dos Mares do Sul governado por autarquias, esparsas e fortificadas, cercadas de mar e rochedos por todos os lados, defendidas por seus governantes contra os senhores de outras autarquias, ou contra inimigos externos. Quem se defender ou se esconder mais, partindo para ataques ocasionais, quando ninguém está vendo, ganha o jogo. Uma empresa, por menor que seja, tem ao menos três departamentos: a Produção propriamente dita, Vendas e Atendimento. Em uma empresa de médio porte podem ser acrescentados ao menos uma dúzia de departamentos diferentes e, em uma empresa de grande porte, os desdobramentos podem conduzir a múltiplos sub-departamentos especializados. Essas “ilhas de atuação” têm grandes blocos de dados, sendo gerados e trocados entre os diversos departamentos. E os clientes? Bom, uma empresa não existe sem eles. Ao menos não uma empresa que queira continuar existindo. Para que uma empresa atenda a demanda de sua criação, ela deve, grosso modo, se preocupar em gerar lucro eficiente e sustentável por meio da comercialização de produtos estimulantes, seja pela sua demanda do mercado, seja pela sua excelência. Esse lucro, obviamente, não nasce por geração espontânea: sem o concurso do mercado consumidor, não há venda. Voltando à analogia do início, não há espaço para autarquias e defesa contra os intrusos: ou todos trabalham em conjunto, sob a mesma bandeira, ou pode não haver uma ilhota para governar no mês que vem.

Saber e conhecer

Claro está que isso não significa que todos devem fazer tudo, e ao mesmo tempo: as fronteiras impostas por mesas, portas e paredes são produtivas, para não dizer sadias. Mas essas barreiras devem cessar nas relações de espaço físico e organograma da empresa: com as informações da empresa, a coisa deve funcionar de maneira diferente. A empresa possui um capital, intangível, mas que pode ser etiquetado como seu principal meio de produção: a sua base de conhecimentos (knowledge-base). Essa base de conhecimentos, a princípio, não está ligada a uma entidade física (livros-caixa, livros de vendas, cadastro de clientes) ou lógica (banco de dados): ela é o conhecimento de como a empresa funciona, de quais são os clientes que mais compram, quais são os vendedores que melhor realizam uma determinada venda, ou de quanto tempo uma equipe leva para concluir uma tarefa ou despachar um projeto. Para que essas informações sejam transformadas em know how, no entanto, elas devem deixar de ser etéreas, assumindo

uma identidade central, mas acessível, on demand, a todos. Não estamos falando aqui de PM (Project Management) ou Gerenciamento de Projetos, capa da Linux Magazine edição 28: esse era, muito mais, o papel dos MRPs (Material Requirement Planning ou planejamento das requisições de materiais) e MRP II (Manufacturing Resource Planning ou planejamento dos recursos de manufatura), padrões de software das décadas de 70 e 80 formado por pacotes de instruções que conversavam entre si e que possibilitavam o planejamento do uso dos insumos materiais ou recursos de mão-de-obra em um processo produtivo, com o conseqüente controle de cada uma das etapas desse processo. Esses softwares e noções são ancorados demais nas linhas e processos de produção, mas são insuficientes para gerir uma empresa. A ferramenta de que necessitamos para unir as partes da empresa em torno do conhecimento gerado por ela, usando esse mesmo conhecimento para a tomada de decisões, é um ERP (Enterprise Resource Planning ou Planejamento de Recursos Empresariais). Um ERP é alimentado pelas informações fornecidas por cada departamento, enviadas logo a seguir para uma base de dados central. Essas informações, ao serem inseridas no sistema, geram ações efetivas que, por sua vez, retornam ao sistema na forma de novos dados, que podem ser utilizados na construção de novas ações, ou simplesmente ser armazenados para consultas. Cada setor da empresa possui uma área reservada para ferramentas de consulta e administração de suas funções - são os chamados módulos do ERP. Setores que devem interagir podem possuir módulos de interligação, bem como apenas módulos de ligação com o sistema centralizado ERP: todas essas relações são customizáveis. Os softwares de CRM (Customer Relationship Management ou Gerenciamento de Relacionamento com o Cliente) tem um papel algo semelhante ao do ERP. Eles, contudo, são focados na relação com o cliente e sua fidelização, como será melhor explicado no artigo Liberdade de Gestão, logo a seguir. Geração de conhecimento pró-ativo? Compartilhamento de informações? Módulos customizáveis? Estruturas de administração e gestão abertas a modificações? Parece que o ERP tem tudo a ver com Linux e Código Aberto. ■

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

29


O flexível sistema Compiere

CAPA

Flexibilidade corporativa O sistema ERP e CRM Compiere é um dos mais famosos entre as alternativas de código aberto. Conheça as características que o tornam uma ótima opção para qualquer empresa – talvez até para a sua. por Eduardo Montenegro

O

Compiere é um sistema integrado de gestão (ERP) e relacionamento com clientes (CRM) que combina as funcionalidades de administração de vendas e distribuição, controle de estoque, contabilidade e gestão da cadeia de suprimentos. O Compiere teve seu desenvolvimento iniciado em 1999, e o primeiro sistema entrou em produção em 2000. Diferentemente de outros sistemas de seu porte, o Compiere foi construído a partir do zero, o que permitiu que o sistema ficasse realmen-

Figura 1

A arquitetura do Compiere facilita o uso de classes externas. O campo Callout, aqui, foi personalizado para utilizar uma classe externa, definida pelo administrador.

te integrado. Sua principal característica é permitir que qualquer configuração seja modificada a qualquer momento. Com essas características, o Compiere acabou se tornando uma das mais importantes referências em sistemas de gestão com código-fonte aberto, atingindo a impressionante marca de mais de 1,2 milhões de downloads desde seu lançamento. O principal desenvolvedor do Compiere, Jorg Janke, contador por formação, tem mais de 20 anos de experiência na área de ERP. Analisando o mercado mundial para esse tipo de solução, Janke verificou que as soluções disponíveis geralmente são pouco flexíveis, além de suas implantações costumarem ser demoradas e apresentarem um alto fator de risco. Outro fator negativo era que, mesmo após sua implantação, os sistemas ERP também carregavam o rótulo de serem caros e trabalhosos para serem mantidos. Jorg observou ainda que não havia um sistema único que combinasse as funções de ERP e CRM, ou seja, que permitisse que todos os processos de negócio da empresa ficassem sempre alinhados com o sistema de relacionamento com clientes e fornecedores. Com esse histórico e requisitos em mãos, foi desenvolvido o Compiere, uma aplicação cuja arquitetura favorece um rápido desen-

volvimento, resultando em implantações mais ágeis, com um menor risco envolvido, uma vez que qualquer configuração pode ser reavaliada a qualquer momento.

A Arquitetura do sistema O Compiere é uma aplicação desenvolvida em Java, utilizando as tecnologias J2EE, Swing e JDBC. Por se tratar de uma aplicação em Java, tanto o servidor quanto o aplicativo cliente do sistema podem ser executados em plataformas Linux, Unix, Mac OS X e Windows. Os bancos de dados atualmente suportados pelo Compiere são o Oracle 10g, inclusive a versão gratuita (Express Edition), e o EnterpriseDB, que consistem em uma versão do banco de dados livre PostrgreSQL, mantida pela empresa de mesmo nome, e que também possui uma opção de uso sem custo de licenciamento. O sistema possui um Dicionário de Dados, o qual faz uso de metadados, onde porções de código na aplicação são, na verdade, substituídos por dados armazenados no banco de dados. Essa arquitetura garante uma maior estabilidade à aplicação, e garante também

http://supertuxbr.blogspot.com 30

http://www.linuxmagazine.com.br


Compiere | CAPA

dando ao administrador do sistema a possibilidade de ocultar determinados tipos de dados, por exemplo, impedindo que um determinado usuário da empresa tenha acesso aos dados do pedido de um cliente específico, ou que possuam uma condição de pagamento especificada, como exposto na Figura 2 As permissões de acesso às janelas de configuração figura 2. podem ser definidas de acordo com o usuário e seu Finalmente, o sistema papel na empresa. permite ainda que sejam gravados logs de modificaum desenvolvimento mais coeso, uma ção de registros, permitindo a análise de quem vez que toda a apresentação de telas ao processou as modificações e quais foram essas mudanças, como mostra a figura 3. usuário terá sempre o mesmo layout. O Dicionário de Dados permite também Todo o processamento de documentos que alterações de configurações existentes, dos processos de negócio, como pedidos de além da criação de novas funcionalidades, compra ou de venda, movimentações de possam ser feitas de maneira rápida e trans- materiais e outros são realizados por interparente para o usuário, sem a necessecidade médio de fluxos de trabalho (workflows), o de recompilar e distribuir novas versões da que proporciona opções interessantes de configuração, como a aprovação desses aplicação através da rede. Quanto ao processo de instalação documentos ou a inclusão de novos nós dos clientes na rede, uma das opções de verificação e tomada de decisão. é a utilização da tecnologia Java Web O Compiere permite também a criação Start, que torna simples o processo de de fluxos de trabalho baseados na alteração administração das estações. de valores de documentos. Um exemplo Para o desenvolvedor, o Compiere seria solicitar a aprovação de pedidos de apresenta ainda maneiras de executar compra apenas se o valor for superior a um classes Java externas. Desenvovidas para determinado patamar. necessidades específicas de cada cliente, Como última opção de utilização do sisessas classes podem ser acessadas a partir tema de fluxos de trabalho, podemos ainda de mudanças de valores em campos dos criar seqüências de atividades, o que ajuda no sistemas, antes e depois de eventos de entendimento dos processos de negócio. gravação de registros, e antes ou depois do processamento de documentos. Essa característica permite que novas funcionalidades e validações de dados sejam adicionadas ao sistema sem a necessecidade de alteração do código-fonte original. Ao invés de tratar as funcionalidades do sisA figura 1 mostra como é simples fazer tema com limites “departamentais”, como referências às classes externas a partir da Vendas, Contas a Pagar e a Receber, Contabilidade e demais, o Compiere adota o coninterface do Compiere. Outra caracaterística importante do sistema ceito de processos do negócio, apresentando é a flexibilidade oferecida para a criação de suas funcionalidades divididas em: regras de segurança de acesso a dados. Como ➧ Cotação-ao-Recebimento: Trata todo característica básica, o sistema permite que seu o processo de vendas da empresa, administrador defina quais janelas e funções desde o primeiro contato de um posserão acessíveis pelos usuários. sível cliente até a administração de Além disso, é possível definir regras toda a carteira de pedidos de venda, para permitir ou bloquear a exportação seu faturamento e o recebimento. de dados do sistema. Um exemplo de uso ➧ Requisição-ao-Pagamento: Compreende o processo de criação de desse recurso é a definição da permissão para que o usuário exporte os dados de um requisições e pedidos de compra, determinado relatório para um arquivo ou recebimento e contas a pagar. um programa de planilhas eletrônicas. ➧ Gestão de Relacionamento com o Cliente: A funcionalidade de gestão de O sistema ainda permite que sejam derelaciomento do Compiere não é um finidas regras específicas de acesso a dados,

Funcionalidades do Compiere

Figura 3

O recurso de log das modificações do registro facilita análises do funcionamento da aplicação.

módulo do sistema, mas parte integrante da ferramenta, permitindo bastante eficiência de todo o relacionamento entre a empresa e seus clientes. ➧ Gestão de Relacionamento com Parceiros: Expande o conceito de relacionamento com os clientes para os demais parceiros da organização, como os fornecedores, por exemplo. ➧ Gestão da Cadeia de Suprimento: Trata toda a gestão de materiais na empresa, como recebimento e expedição de mercadorias, administração de estoques e controle de inventário. ➧ Análise de Desempenho: As funcionalidade de Análise de Desempenho incluem todas as atividades contábeis e de custos da empresa, permitindo uma análise dos resultados em várias dimensões. ➧ Web Store: A Web Store do Compiere contempla as ferramentas necessárias para a construção de um canal de relacionamento com seus clientes e fornecedores através da Internet. Essa comunicação é feita diretamente com

Figura 4

O menu principal apresentado ao usuário dá acesso a todas as funções permitidas para este.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

31


CAPA | Compiere

Interface

Figura 5

A função de zoom agiliza a navegação do usuário pelos menus, levando-o automaticamente para novas janelas.

a aplicação, dispensando a necessidade de duplicação de bases de dados. Somando-se a essas características, temos o conceito “multi”. O Compiere é uma aplicação que foi desenvolvida para atender às necessidades de empresas em qualquer parte do globo, portanto temos em sua arquitetura ainda as seguintes características: ➧ Multi-Organização: Permite a gestão de várias empresas dentro do mesmo sistema. ➧ Multi-Moeda: Permite a utilização de diversas moedas nas transações processadas pelo sistemas. ➧ Multi-Contabilidade: Permite a utilização de diversos planos de contas pelo sistema. ➧ Multi-Custos: Permite a manutenção de diversos métodos de cálculo de custo pelo sistema. ➧ Multi-Idioma: Permite a manutenção dos dados das transações em diversos idiomas, bem como a manutenção de toda a interface com o usuário em seu idioma nativo. ➧ Multi-Impostos: Permite a configuração de regras de impostos com base no tipo de produto que está sendo negociado, a localização do cliente ou fornecedor e a configuração de impostos compostos, como é o caso no Brasil.

Ao efetuar o login no sistema, o usuário recebe do Compiere opções de seleção de idioma, além de quais clientes ou empresas ele possui permissão para acessar. Em seguida, é mostrado o menu do usuário (figura 4), organizado em pastas, de forma a agrupar de maneira lógica as Figura 7 Os relatórios e documentos arquivados podem ser funcionalidades de um mostrados na tela… mesmo processo de negócios. Também é possível criar atalhos seja feito para uma empresa situada fora do estado, necessita do recolhimento de para facilitar o trabalho do usuário. As janelas da aplicação seguem sempre impostos; enquanto isso, dentro do estao mesmo padrão, e apresentam diversas do, um empréstimo de até 60 dias não facilidades de navegação, como o Zoom exige tal recolhimento. (figura 5), que levam o usuário para novas Nessa mesma operação de empréstimo, janelas automaticamente. Outro recurso precisamos atualizar a situação do estoque, interessante nas janelas da aplicação é a mas não atualizamos as contas a receber, definição de valores padrão para determi- pois não se trata de uma venda. nados campos. Esse pode ser um grande Mesmo em situações comuns, como aliado do administrador do sistema, pois uma simples venda, também podemos possibilita a criação de janelas “pré-pre- ter diferentes regras de cálculos de imenchidas”, o que facilita o trabalho do postos. Se o cliente se tratar de uma usuário e reduz erros no momento da indústria que for utilizar esses produtos como matéria-prima, teremos uma forentrada dos dados. Os relatórios do sistema também po- ma de cálculo, e se estivermos efetuando dem ser configurados pelo usuário, permi- essa mesma venda para um consumidor tindo que colunas de dados sejam exibidas final, os impostos deverão ser calculados ou não, novos critérios de ordenação se- de outra forma. jam criados, e cálculos como somatória, Mesmo nesse cenário complexo, graças média e contagem sejam incluídos (figura à flexibilidade oferecida pelo Compiere 6). Ao final, todos os relatórios podem ser através das funcionalidades CallOut e arquivados diretamente pelo sistema, ge- ModelValidator, é possível implementar rando um arquivo de documentos (figura todas essas regras sem qualquer mudança 7), ou exportados para diversos formatos, no código-fonte original do sistema. podendo ser manipulados em outros Isso coloca o Compiere em posição programas, como editores de planilhas privilegiada, como um sistema aberto, eletrônicas (figura 8). robusto e extremamente flexível, sendo uma alternativa extremamente interessante para empresas de diversos portes e segmentos. Uma das maiores dificuldades para adoção, no Brasil, de qualquer sistema de gestão desenvolvido em outros países é o nosso complexo sistema tributário. Um grande Para instalar o Compiere no Fedora número de regras e talvez um número Core[1] com o banco de dados Oracle ainda maior de exceções para essas re- XE[2], precisaremos instalar cada um dos gras, além do documento da nota fiscal, componentes (incluindo o Java Developconstituem uma maior necessidade de ment Kit[3] da Sun) antes do Compiere propriamente dito. adaptação do sistema. Como estamos tratando de um sistema A instalação do Linux, Oracle XE integrado, toda movimentação de merca- e JDK pode ser feita normalmente, sedoria, pagamento, recebimento etc. gera guindo as opções padrão de instalação. lançamentos contábeis, e o grande desafio Portanto, vamos diretamente à instalação está em mapear essas diferentes possibili- do Compiere. dades. Por exemplo, um empréstimo de Primeiramente, é necessário defimercadoria no estado de São Paulo, caso nir, sob o usuário root, as variáveis de

Aplicação no Brasil

Instalação

Figura 6

O usuário pode configurar os relatórios do sistema, restringindo as colunas mostradas.

http://supertuxbr.blogspot.com 32

http://www.linuxmagazine.com.br


Compiere | CAPA

Exemplo 1: Variáveis de ambiente # # # # # # #

export export export export export export export

ORACLE_BASE=/usr/lib/oracle/xe/app/oracle ORACLE_SID=xe ORACLE_HOME=$ORACLE_BASE/product/10.2.0/server PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib COMPIERE_HOME=/Compiere2 JAVA_HOME=/usr/java/jdk1.5.0_11

ambiente de acordo com o exemplo 1. Para tornar essas alterações permanentes, pode-se incluir esses comandos no arquivo /etc/profile. Conforme definido nas variáveis de ambiente, iremos instalar o Compiere no diretório /Compiere2, criado diretamente na raiz e respeitando o C maiúsculo. Após descompactarmos o arquivo de instalação do Compiere, vamos executar, como usuário root, o script RUN_setup.sh. Na janela de configuração da instalação (figura 9), precisamos informar que o banco de dados a ser usado é o Oracle XE, e devemos ainda preencher a senha do usuário System, que foi definida durante a configuração do Oracle XE.

Feito isso, selecionamos a opção Test e, em seguida, Save. Com essas medidas, o Compiere criará o ambiente de execução do servidor adequadamente, com base nas informações passadas. Após esse passo, é necessário importar o conteúdo do banco de dados. Isso é feito através do script RUN_ImportCompiere, que se encontra no diretório /Compiere2/utils. Pronto, o Compiere está instalado. Agora, para executar o servidor da aplicação, basta chamar o script RUN_Server2. sh, localizado no mesmo diretório /Compiere2/utils. Executemos também a aplicação cliente, na mesma máquina, com o script /Compiere2/RUN_Compiere2.sh.

Figura 8

... ou exportados para visualização e edição em planilhas eletrônicas.

Para acessar o Compiere através de outras estações da rede, basta digitar em um navegador o endereço do servidor onde o sistema está instalado e selecionar o link Java Web Start. Também é possível baixar o arquivo compactado do cliente, para instalá-lo manualmente nas estações de trabalho.

Figura 9

Janela de configuração de instalação do Compiere.

Conclusões

A página do Compiere oferece uma extensa documentação, além de um fórum relativamente movimentado. Há ainda a possibilidade de contratar suporte via Web em diferentes modalidades, com preços também diferenciados, ou recorrer a empresas especializada em consultoria. ■

Mais Informações [1] Fedora Core: http://fedoraproject.org [2] Oracle XE: http://otn.oracle.com [3] Sun JDK: http://www.sun.com [4] Compiere: http://www.compiere.org

O autor Eduardo Pereira Montenegro é consultor em soluções de sistemas de gestão utilizando o Compiere e mantém o fórum de suporte ao Compiere, em www.compiere.srv.br.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

33


O poderoso CRM OpenCRX

CAPA

Forte, não gordo O OpenCRX se beneficia dos poderes da plataforma Java, oferecendo um sistema muito poderoso, desde que seus requisitos sejam satisfeitos. por Miguel Koren O’Brien de Lacy

O

s problemas de negócio atendidos pelos sistemas de relacionamento com o cliente (CRM – Customer Relationship Management) são muito variados e passíveis de causar grandes impactos nas organizações que aplicam esse conceito. Os sistemas de CRM têm o dever de interagir com muitas áreas, incluindo a comercial e até o suporte técnico. Apesar disso, o objetivo atendido por esses sistemas em diferentes cenários e contextos pode ser bem diferente, focando setores diversos, como o acompanhamento a vendas ou help desk. A empresa suíça Crixp Corporation[1] avaliou o mercado de CRM em 2003, e concluiu que havia uma lacuna a ser preenchida: a ausência de uma solução livre de porte corporativo. Resolveu, então, desenvolver um sistema com características de uma solução CRM, usando o modelo de negócios de Software Livre com suporte e consultoria comerciais. Esse modelo de negócios oferece também a “aceleração de desenvolvimento”, que permite que uma empresa interessada em certa característica planejada possa financiar o desenvolvimento antecipado. A Crixp é apoiada pela também suíça Omex AG[2], que tem sólidos conhecimentos da tecnologia de base do OpenCRX. As empresas que impulsionam o sistema têm experiência no atendimento, em especial, a clientes dos se-

Figura 1

Diagrama de integração do CRM com outros sistemas de TI.

tores financeiro, de medicina, manufatura e comércio. Esse modelo de negócios é bastante popular no segmento de soluções livres para aplicativos de negócios, porque são soluções que requerem conhecimentos da área atendida, além de conhecimentos técnicos em informática. Ou seja, é requerido que os profissionais tenham uma dedicação plena ou quase plena ao sistema. O sistema OpenCRX é bastante popular, com aproximadamente 200 mil downloads atualmente, conforme as estatísticas do Sourceforge[3]. A figura 1 foi obtida de uma reportagem sobre CRMs livres feita pela empresa Optaros[4], e mostra o posicionamento desse tipo de solução dentro das camadas de informática de uma empresa.

Características

O OpenCRX apresenta-se como um sistema abrangente no segmento CRM, sem se limitar a certo tipo de problema a resolver. Suas principais características são: ➧ Gerenciamento de contas: essa funcionalidade permite uma visão de 360 graus da conta, e de seus contatos, atividades, produtos e estados de cada conta; ➧ Acompanhamento comercial: permite que a equipe de vendas seja mais efetiva, registrando todas as interações com o cliente ou potencial cliente. Também define processos de venda quando unido à facilidade de gerenciamento de atividades; ➧ Gerenciamento de produtos e preços: permite administrar produtos, listas de preços em diferentes moedas, formação de produtos complexos baseados nos produtos simples e regras de preços com algoritmos personalizáveis. É possível integrar um sistema ERP ao processo de vendas; ➧ Gerenciamento de atividades: permite formar grupos de atividades que devem

Arjan Boer - www.sxc.hu

ser executadas, e pode ser usado para implementar um sistema de suporte, parte geralmente bastante usada num sistema CRM. As funções para apoio a help desk são parte natural do sistema. O sistema de suporte implementado permite agrupar as atividades em projetos e adequar as horas gastas na solução dos problemas; ➧ Início do ERP: permite manipular lançamentos contábeis em múltiplas moedas no plano de contas, que pode ser definido na estrutura. É o núcleo da futura funcionalidade de ERP planejada para o OpenCRX; ➧ Administração: existe um mecanismo de segurança granular, que permite limitar o acesso a diferentes partes do sistema. Esse mecanismo de segurança é suficientemente avançado, e aprovado para uso dentro de instituições financeiras, como, por exemplo, empresas de processamento de cartões de crédito, nas quais a segurança é levada muito a sério. O administrador pode modificar vários aspectos do OpenCRX para adaptá-lo às necessidades da empresa cliente. Essas adaptações podem ir desde modificações nos campos do sistema até a configuração de telas novas e alterações no layout. Algumas mudanças podem ser feitas pelos assistentes do sistema, e outras requerem desenvolvimento usando o modelo UML do sistema. Veja a discussão sobre a tecnologia empregada para entender o conceito. O OpenCRX permite integração com sistemas GED (gestão eletrônica de documentos), mas também tem a possibilidade de gerenciar documentos anexos. Ele permite a definição de fluxos de trabalho, porém, atualmente essa customização requer a programação de classes em Java. Está planejada a integração de um mecanismo de fluxo de trabalho (workflow),

http://supertuxbr.blogspot.com 34

http://www.linuxmagazine.com.br


OpenCRX | CAPA

sendo os candidatos o jBPM[5] e o Intalio[6], ainda a ser escolhido pela equipe. O OpenCRX já conta com um gerador de relatórios em formatos HTML, RTF e XLS, mas essa funcionalidade será melhorada com a integração do BIRT (Business Intelligence and Reporting Tools[7]) nas próximas versões. Algumas outras características tecnológicas do OpenCRX são: ➧ Integração com emails POP/IMAP/ SMTP, permitindo a importação de emails vindos de outros sistemas, tais como Microsoft Outlook, Thunderbird, MS Exchange etc, assim como o envio direto a partir do OpenCRX; ➧ Integração ao conjunto de aplicativos de escritório BrOffice.org[8], incluindo o Write e o Calc, além do MS Word e do MS Excel; ➧ Integração ao Apache POI[9], que permite a manipulação de arquivos do MS Office; ➧ Alertas e notificações. Podemos destacar duas funcionalidades do sistema que podem ser consideradas como customizações feitas pela equipe de desenvolvimento: ➧ Gerenciamento predial – Permite administrar imóveis ➧ Loja web – permite que sejam feitos pedidos, através de uma interface web, de produtos cadastrados no sistema. Esse tipo de aplicativo precisa estar disponível no idioma nativo dos funcionários de suporte e vendas. Assim, o OpenCRX possui traduções para vários idiomas, entre os quais o português do Brasil. A tradução costuma estar levemente atrasada em relação à última versão do aplicativo, mas isso não dificulta o uso do mesmo. Para sistemas em produção, nos quais as boas práticas de informática determinam que o sistema não seja atualizado freqüentemente, esse fator é insignificante.

Tecnologia

O OpenCRX é um sistema desenvolvido totalmente em Java, e portanto pode rodar dentro de qualquer servidor de aplicativos JEE (Java Enterprise Edition), em uma das plataformas apoiadas por essa tecnologia. Sendo assim, o sistema pode ser inteiramente utilizado através da Web, com os protocolos HTTP e HTTPS. Há documentação no site do sistema, focada nos servidores JBoss[10], Sun AS, BEA WebLogic e IBM WebSphere. O fórum de discussão, suficientemente ativo para esse tipo de aplicativo, é útil para solicitar dicas, e também fornece apoio para outras plataformas que o usuário precise utilizar. Também

Tabela 1: Sugestões de configuração de hardware para o OpenCRX Uso

Usuários

Usuários Concorrentes

CPUs

Testes

1

1

1 GHz

512 MB

Pequena e média empresa

300

50

1×2 GHz ou 2×2 GHz

2 GB ou 4 GB

Corporativo

Milhares

>100

2×2 GHz para cada grupo de 50 usuários concorrentes

2 GB para cada grupo de 50 usuários concorrentes

existe a possibilidade de se contratar suporte comercial nas empresas parceiras. O sistema aproveita as características da versão 1.4 do Java, mas roda também em versões mais recentes. A equipe de desenvolvimento afirma que pretende tirar proveito das melhorias efetuadas na versão 1.5 da linguagem. As versões mínimas dos navegadores suportados são Firefox 1.5, Internet Explorer 6, Opera 9.10, Mozilla Seamonkey 1.7.3 e Konqueror 3.3 (esse com alguns problemas de visualização). Independentemente do navegador, é importante utilizar uma versão recente, pois o OpenCRX usa opções modernas de renderização. A equipe de desenvolvimento do OpenCRX acredita e apóia a independência de plataforma. Para isso, investe esforços no suporte a diferentes sistemas de bancos de dados SQL, como Oracle (a partir da versão 9), DB2 (a partir da versão 9.1), PostgreSQL (a partir da versão 8), MySQL (a partir da versão 5) e MS SQL Server (versões 2000 e 2005). Segundo os desenvolvedores, a decisão de oferecer ou não suporte a um determinado banco de dados depende da capacidade do banco de suportar os comandos SQL que o sistema requer. Todos os bancos de dados atualmente suportados são livres, ou ao menos possuem uma versão gratuita, nesse caso geralmente com alguma limitação na arquitetura do servidor ou no tamanho do banco de dados. Todos os bancos de dados comerciais suportados podem ser usados, com as limitações mencionadas, em ambientes de produção. Considerando as limitações desses bancos gratuitos, o DB2 Express-C é altamente interessante, já que não possui limitação de tamanho. A recomendação da equipe do OpenCRX, considerando a performance e escalabilidade requerida no sistema, é usar PostgreSQL, Oracle ou DB2. A infraestrutura exigida, formada por um banco de dados relacional e um servidor de aplicativos JEE, não deve ser motivo para se evitar o uso do OpenCRX,

Figura 2

Memória

Tela de login do OpenCRX mostrando os idiomas suportados.

pois há variedades suficientes para cobrir qualquer disponibilidade de capital. O OpenCRX é um sistema que requer um hardware para servidor relativamente poderoso, devido à linguagem Java. O equipamento deve dispor de uma quantidade suficiente de memória RAM para evitar demoras nas respostas. Vale lembrar que o sistema oferece a escalabilidade da plataforma Java, e pode ser usado por centenas de usuários concorrentes. Alguns exemplos sugeridos de configuração estão presentes na tabela 1. O sistema pode rodar em cluster, aproveitando a infraestrutura oferecida pelo servidor JEE. Na tabela 1, “concorrente” é usado no sentido estrito: significa que são usuários solicitando serviços simultaneamente, não simplesmente conectados num mesmo momento. O OpenCRX começou a ser desenhado em 2003, e já está na versão 1.10, com

Figura 3

Página do usuário, mostrando opções de função organizadas em um menu.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

35


CAPA | OpenCRX

Figura 4

Selecionando o formato XLS para o relatório.

períodos de alguns meses entre novas versões. As estatísticas do sistema indicam 242 classes UML, com 3,381 milhões de linhas de código Java, e 95 tabelas no banco de dados. Como é possível ter um sistema tão completo e poderoso em tão pouco tempo? A resposta está na tecnologia de desenvolvimento utilizada, que é também a mesma tecnologia empregada para customizar o sistema. O OpenCRX foi desenvolvido utilizando o conceito MDA (Model Driven Architecture), definido pelo OMG (Object Management Group). Para conhecer os detalhes do modelo de desenvolvimento MDA, acesse o site da OMG no endereço http://www. omg.org/mda/, onde existem muitas informações sobre o assunto. O objetivo principal do MDA é a separação da lógica de negócios e aplicativos da tecnologia de infraestrutura utilizada. Isso permite focar o esforço de definição do aplicativo na camada de negócios e aproveitar ou otimizar as características da infraestrutura em outra camada. Trata-se de um paradigma de desenvolvimento de sistemas de alto nível, onde “o modelo é o aplicativo”, pois ele gera o código. Ao trabalhar com MDA, o sistema normalmente é modelado utilizando-se UML (Unified Modelling Language), e o código é gerado por conversores, que transformam o PIM (Platform Independent Model – o modelo do sistema independente da tecnologia) em PSM (Platform Specific Model – modelo

Figura 5

Filtro de seleção de dados para relatório XML.

gerado para uma plataforma específica que, compilado, gera o código). A ferramenta MDA utilizada deve possuir conversores apropriados para a infraestrutura requerida. Esse é um modelo de desenvolvimento de alta produtividade, porém, requer equipes com boa familiaridade com o conceito, além de ferramentas de suporte apropriadas. A plataforma MDA desenvolvida como Software Livre e licenciada sob a GPL chama-se OpenMDX[11]. De fato, o OpenMDX é um componente essencial para rodar o OpenCRX, e deve ser instalado junto a este. O desenvolvimento do OpenCRX segue de perto o progresso do OpenMDX. O OpenMDX permite que o desenvolvedor utilize uma variedade de ferramentas relativamente grande. Entre os modeladores UML, podemos destacar o Poseidon[12], justamente por disponibilizar uma versão gratuita. O Poseidon é uma versão comercial do ArgoUML[13]. O site do OpenMDX possui extensa documentação, além de vários tutoriais, para apoiar o trabalho do desenvolvedor. Ou seja, para customizar o OpenCRX, existem muitas ferramentas e fontes de informação.

Instalação

O OpenCRX é simples de instalar, sem problemas de dependências, mas requer que sejam seguidos com atenção todos os passos descritos no guia de instalação. Infelizmente, ele não oferece um pacote RPM ou um script de instalação, mas oferece scripts ANT para facilitar o trabalho. Em termos gerais, a instalação envolve as seguintes etapas, cada uma com vários passos: ➧ Preparar a infraestrutura, o que envolve instalar e configurar a máquina virtual Java (definir corretamente as variáveis tais como JAVA_HOME). Deve-se usar o JDK, pois o JRE não é suficiente. Também é necessário instalar o ANT. O site do OpenCRX possui documentação para apoiar a configuração correta; ➧ Instalar e configurar o servidor de aplicativos JEE. Novamente, o site do OpenCRX oferece documentação para facilitar essa etapa; ➧ Obter o OpenMDX, que deve ser baixado do site do OpenMDX, e finalmente obter o OpenCRX. Deve-se tomar o cuidado de se verificar qual combinação de versões do Java e do OpenMDX devem ser utilizadas. O site do OpenCRX possui uma tabela para explicar esse ponto; ➧ Gerar os arquivos binários, o que envolve rodar os scripts ANT fornecidos

para gerar o arquivo EAR (Enterprise Archive) que será disponibilizado no servidor de aplicativos JEE; ➧ Configurar o banco de dados, gerando as tabelas do sistema e os usuários correspondentes. Após a instalação, deve ser feita a configuração inicial. Isso envolve a edição de arquivos de configuração para a conexão inicial, logo também a definição de acesso inicial dentro do sistema. Essa parte deve ser realizada seguindo-se os passos recomendados com muita atenção. Essa complexidade de configuração é uma conseqüência da flexibilidade de uso de ambientes JEE e bancos de dados variados. CRM é uma classe de aplicativos que não possui a necessidade, como um sistema anti-vírus, ou um groupware, de ser instalado em poucos minutos para ser usado imediatamente. São sistemas com visão corporativa que requerem planejamento para serem utilizados conforme seu potencial pleno. Por isso, o roteiro de instalação do OpenCRX não deve ser considerado um empecilho para seu uso.

Operação

A tela inicial do OpenCRX solicita o login ao sistema, e permite escolher o idioma da interface. O administrador do servidor pode preparar uma URL convenientemente formada para utilizar um determinado idioma por padrão. Quanto ao navegador, é necessário que ele aceite cookies para permitir o uso do OpenCRX. Quando o usuário entra no sistema, a página apresentada possui um frame à esquerda, contendo as opções funcionais para o perfil do usuário autenticado, e outro à direita com o conteúdo da função selecionada. O esquerdo pode ser mostrado ou escondido com um clique sobre o botão <<, ao lado da linha divisora dos frames. Isso pode ajudar muito na visualização, no caso de usuários que permanecem na mesma tela, pois o sistema é projetado para ser usado em telas maiores que 1024×768, embora essa resolução ainda seja o padrão no mercado brasileiro. No entanto, o sistema permite em diversas telas que o usuário opte entre o layout compacto e o extenso para ver as informações. A navegação pela estrutura de menus do lado esquerdo e dentro de cada área do frame direito é bem simples, pois eles se abrem e fecham mediante a passagem do mouse. Com isso, o usuário é poupado do trabalho de mover o mouse para selecionar as opções do menu. A seleção final é feita com cliques nas opções desejadas. O sistema

http://supertuxbr.blogspot.com 36

http://www.linuxmagazine.com.br


OpenCRX | CAPA

Em termos de relatórios variados, também pode ser usado um sistema externo gerador de relatórios, ou um sistema de BI (Inteligência de Negócio, ou Business Intelligence), mas, por recomendação da equipe do OpenCRX, não é recomendável acessar as tabelas diretamente, pois Figura 6 Resultado aberto com o BrOffice.org Calc. não há garantia de compatibilidade com versões está evoluindo para suportar a programação futuras do modelo de dados. Entretanto, em AJAX, o que vai facilitar ainda mais seu existe o compromisso de compatibilidade uso. Deve ser explicado, nesse ponto, que a futura com as classes do sistema que devem interface é bastante amigável, no sentido da ser usadas preferencialmente para todos os tecnologia de navegação, porém o sistema acessos. é complexo e requer treinamento e prática Para auxiliar o usuário no uso do sistepara ser usado corretamente. ma, algumas telas já possuem um sistema O idioma da interface pode ser modi- on-line de ajuda, específico do contexto, ou ficado a qualquer momento, a partir do seja, da tela em uso. A figura 7 exibe, na próprio sistema. Consideramos isso uma parte inferior, um setor de Documentos e, grande ajuda, pois, na informática, nem abaixo da palavra Editar, há uma imagem. sempre todas as traduções são claras, e é Essa é a imagem de ajuda. Ao pressionar interessante poder ver um texto em mais esse link, é mostrada a tela com a descriidiomas para entender melhor seu signi- ção da funcionalidade e da forma de uso. ficado. Observe na figura 3, onde aparece Espera-se que nas versões futuras apareçam pt-BR. Clicando sobre esse texto, abre-se mais links de ajuda nas telas. O sistema de segurança granular a lista de idiomas suportados. A página do usuário mostra seus com- permite a restrição do acesso a diversos promissos, além de outras informações elementos do sistema. Por exemplo, podeúteis para sua atividade do dia. A visão é se evitar o acesso a documentos anexos, gerenciada pelo calendário, que aparece conforme mostrado na figura 8. na parte inferior esquerda. Os ícones dos Em termos gerais, o usuário de um botões poderiam ser maiores, mas cada sistema CRM permanece nas mesmas um possui uma mini-janela flutuante, telas durante muito tempo. O OpenCRX que exibe um texto de ajuda quando so- suporta essa situação, tornando cada tela breposta pelo mouse. Vale lembrar que bastante abrangente, com acesso direto a o administrador pode modificar o layout diversos detalhes. das telas livremente. A exportação de dados para outros sistemas é bem simples. As figuras 4, 5 e 6 mostram como exportar todos os contatos para uma Uma empresa que tem sua infra-estrutura preplanilha do BrOffice.org Calc ou do MS ponderantemente em Java tem tudo para se Excel. Seleciona-se um menu de relatórios, satisfazer com a arquitetura e a performance e em seguida é preenchido um filtro. Ime- do OpenCRX. Funcionalmente, ele oferece diatamente, o navegador oferece o download muita flexibilidade para a configuração, o que ou a abertura do arquivo gerado. favorece a empresa, mas é mais trabalhoso do que outros sistemas livres semelhantes, no que tange a instalação e configuração. Seu diferencial encontrase na arquitetura do sistema. Enquanto muitos sistemas CRM baseiam-se em LAMP (Linux, Apache, MySql, PHP), o OpenCRX utiliza uma tecnologia de porte corporativo. Em termos de facilidade de uso, Figura 7 Ajuda on-line. o mesmo argumento pode

Conclusão

Figura 8

Um exemplo da granularidade da segurança, restringindo o acesso a um documento específico.

ser aplicado; o OpenCRX requer mais treinamento para ser utilizado com sucesso, mas suas facilidades funcionais compensam o esforço despendido. Em suma, trata-se de um sistema abrangente, flexível e montado sobre uma plataforma poderosa, que admite ser customizado usando tecnologia de ponta em desenvolvimento de software. Sua curva de aprendizado para ser usado e customizado satisfatoriamente é mais íngreme que a de outros sistemas, e por isso ele é mais apropriado para empresas com maiores recursos tecnológicos e humanos. ■

Mais Informações [1] Crixp Corporation: http://www.crixp.com [2] Omex AG: http://www.omex.ch/ [3] Estatísticas de download do OpenCRX: http://tinyurl.com/2vamhq [4] Optaros: http://www.optaros.com [5] jBPM: http://www.jboss.com/products/jbpm [6] Intalio: http://bpms.intalio.com/ [7] BIRT: http://www.eclipse. org/birt/phoenix/ [8] BrOffice.org: http://www.broffice.org/ [9] Apache POI: http://jakarta.apache.org/poi/ [10] JBoss: http://labs.jboss.com/portal/ [11] OpenMDX: http://www.openmdx.org/ [12] Poseidon: http://www.gentleware. com/products.html [13] ArgoUML: http://argouml.tigris.org/

O autor Miguel Koren O’Brien de Lacy usa Software Livre desde 1997. É diretor da Konsultex Informática, representante da Artemis International Solutions Corporation (www.aisc. com) e da Advanced Management Solutions (www.amsusa.com) na América Latina, além de ministrar palestras sobre Software Livre.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

37


CAPA

Meliha Gojak - www.sxc.hu

SugarCRM, um sistema CRM de código aberto

Código aberto e doce O eficiente SugarCRM roda sobre a estrutura LAMP e é adaptável ao extremo, devido a seu código aberto. por Bruno Franklin

H

á tempos o mercado requer uma solução desenvolvida sob a arquitetura de Código Aberto para atender às necessidades de CRM das empresas. CRM (Customer Relationship Management) é a sigla de uma filosofia de trabalho, a gestão do relacionamento com o cliente. Através dessa filosofia, as empresas buscam o contínuo aprimoramento das relações com seus clientes, devidamente segmentados, durante todo o seu ciclo de vida, e em vários pontos de contato, através de processos de criação de valor para os mesmos. Tratam-se de ações executadas por pessoas e para pessoas, utilizando a tecnologia da informação como elemento facilitador no fornecimento de seus produtos e serviços, adequados às necessidades de cada cliente em especial, e direcionadas por uma estratégia comercial corporativa, durante a execução dos seus processos de negócios. Nesse sentido, uma empresa que possui uma filosofia em CRM busca chegar ao mercado com melhor qualidade em produtos e serviços, maior rapidez no seu fornecimento e na inovação dos mesmos,

Figura 1

A tela inicial do SugarCRM Open Source mostra todos os módulos que o usuário tem permissão para acessar, agilizando seu trabalho.

com baixo custo administrativo e operacional da conta como um todo e, ao mesmo teme com melhor nível de serviço percebido po, fornecendo a informação detalhada a respeito de cada um dos contatos presentes por cada um de seus clientes. O SugarCRM Open Source, surgiu justa- nas contas, bem como as oportunidades, mente para suprir essa demanda. Seu desen- documentos etc. volvimento, nos moldes do Código Aberto, Utilizando o CRM, elimina-se ativipromove inovações rápidas, ao contrário das dades manuais e planilhas, o que permite caixas-pretas proprietárias de vários outros sis- maior flexibilidade na análise de dados. temas, que contam com pequenas equipes O acesso dos usuários ao SugarCRM de desenvolvimento. A inovação do Sugar- é completamente realizado pela Web, CRM vem de uma comunidade mundial de facilitando o acesso de qualquer ponto desenvolvedores, que compartilham idéias e do planeta. Por isso, o sistema pode ser colaboram para trazer à vida as funcionalida- instalado tanto num datacenter quanto des que a comunidade demanda. num servidor local da empresa. Além desses fatores, também favorecem O objetivo do SugarCRM é atender necessidades das gestões de marketing, vendas e o SugarCRM seu baixo TCO (custo total suporte ao cliente. Para atingir esse objetivo, o de propriedade) e rápido ROI (retorno sistema também promove a colaboração entre do investimento), em comparação com pessoas na organização. Com sua natureza outras soluções do mercado. aberta, esse CRM dispõe de ampla flexibilidade. Com mais de um milhão de cópias baixadas, o sistema recebe diversas novas versões, repletas de inovações, a cada ano. O SugarCRM combina uma interface simO software é desenvolvido na linguagem ples de usuário a uma infra-estrutura de escala PHP, podendo ser utilizado sobre o Linux industrial, ajustada para máxima confiabilicom servidor Apache. Para aqueles que dade e crescimento. As tarefas de instalação, assim desejarem, o software também roda manutenção e backup são facilitadas pelo fato em ambiente Windows. O banco de dados da versão de código aberto pode ser tanto o MySQL quanto o SQL Server Express. O SugarCRM possui um único parceiro no Brasil[1], que recebe comentários das empresas que utilizam o SugarCRM. Até o momento, o sistema tem sido muito utilizado como um repositório de informações de contas, Figura 2 A guia Principal mostra atalhos para as ações e informações mais importantes e rotineiras. facilitando a visualização

Interface

http://supertuxbr.blogspot.com 38

http://www.linuxmagazine.com.br


SugarCRM | CAPA

de se utilizar apenas um banco de dados para armazenar todos os dados. Ao acessar o sistema, o usuário tem acesso imediato a um histórico completo dos clientes. Os representantes de vendas, por sua vez, recebem informações dos clientes em tempo real. As funcionalidades do SugarCRM Open Source podem ser divididas em grupos, como mostra a figura 1. Na guia Principal, ativada pelo módulo de mesmo nome, são mostradas as informações importantes a serem visualizadas em conjunto. Como mostra a figura 2, essa tela oferece atalhos para diversas ações, como a criação de contatos, contas e clientes potenciais, assim como dá acesso aos dashlets do usuário, como reuniões, ocorrências, notícias ou algum outro dashlet adicionado pelo próprio usuário. A guia Painel contém os atalhos para criação de contas, contatos, novos potenciais, oportunidades, ocorrências e falhas (essa última, vinculada à central de suporte), conforme mostrado na figura 3. Ainda nessa tela, os gráficos com as informações visuais das contas, oportunidades e funil de vendas são apresentados. Como se pode ver, a tradução da interface ainda não está finalizada, e contém algumas pequenas falhas que não prejudicam o uso do programa. A figura 4 demonstra o gerenciamento de contatos, que permite a identificação e pesquisa de contatos. Clicando em cada um deles, é possível ainda associar emails, atividades, oportunidades e ocorrências aos mesmos, como mostra a figura 5. Da mesma forma que os contatos, as contas também podem ser visualizadas, na guia Contas, com as mesmas funcionalidades de pesquisa e identificação, e recebendo a atribuição de emails, atividades, oportunidades e ocorrências (figura 6). O gerenciamento de potenciais é feito na guia Potenciais, e permite a classificação dos contatos como potenciais, sendo possível convertê-los em oportunidades (com uma conta atrelada), conforme mostra a figura 7. O módulo de gerenciamento de oportunidades, acessível através da guia Oportunidades (figura 8), permite o cadastramento das oportunidades com valores, estágio de vendas, probabilidades, datas previstas etc., totalmente relacionadas às contas. Ele ainda monitora a efetividade dos investimentos em marketing para cada fonte que origina potenciais, pois é possível obter a origem de uma determinada oportunidade. A guia Marketing consiste no gerenciamento de contatos, contas, potenciais e campanhas. Os módulos de gerenciamento de contatos, contas e potenciais são os mesmos

explicados anteriormente. O gerenciamento de campanhas, no entanto, serve para organizar as atividades de marketing e auxiliar a medição de efetividade. Para isso, ele acompanha desde a criação de listas de prováveis interessados até o contrato fechado. Ele permite ainda o rastreamento de esforços de marketing associados aos potenciais clientes, contatos e oportunidades, para análises do ciclo de marketing (analisar, planejar, desenvolver, executar). Através da segmentação dos contatos ou potenciais a serem incluídos na lista de participantes de uma campanha, esse módulo possibilita o direcionamento mais preciso das campanhas, podendo armazenar as listas para outras campanhas futuras, e também atribuindo ao histórico do cliente qualquer interação, conforme pode ser visto na lista de atalhos da figura 9. O módulo de gerenciamento de ocorrências (guia Ocorrências) permite o acompanhamento das ocorrências de suporte por cliente, incluindo a atribuição de prioridades, status e usuário, o que facilita a resolução dos problemas em conjunto, conforme apresentado pela figura 10. Permite também o acompanhamento de cada passo no processo de resolução de problemas, ajudando no processo de comunicação com os clientes. A figura 11 mostra o gerenciamento de problemas conhecidos através da guia Central de Suporte. Ela auxilia o controle dos problemas de produtos, apontando as versões com erros e gerenciando as correções. Com o ajuste da prioridade do problema, assim como da equipe responsável por solucioná-lo, a produtividade de toda a equipe é aumentada. Ainda há a possibilidade de associar os chamados cadastrados pela central de suporte a ocorrências abertas pelos clientes. É importante notar que nem toda ocorrência aberta representa um problema em algum produto ou um chamado relacionado a ele. Contudo, à exceção dos problemas verificados pela própria empresa, todos os que forem descobertos a partir de ocorrências abertas pelos clientes devem ser associados a essas ocorrências. Isso tem o objetivo de acrescentar no histórico dos clientes tanto a ocorrência quanto a solução do problema em um determinado produto. A organização pessoal é realizada através dos módulos Atividades, Agenda, Emails, Ligações, Reuniões, Tarefas e Anotações, agrupados sob a guia Atividades. Nela, é possível cadastrar cada um dos compromissos do usuário. Um recurso muito interessante é a possibilidade de se associar atividades a outros módulos – por exemplo, uma reunião a uma oportunidade – tornando o gerenciamento dessas informações mais intuitivo e eficiente. ➧

Figura 3

A guia Painel facilita a criação de novas entradas no SugarCRM, mostrando também gráficos a respeito das mesmas.

Figura 4

É possível realizar buscas na lista de contatos…

Figura 5

... atribuindo a cada um deles diversos eventos ou itens.

Figura 6

A lista de contas tem funcionalidades semelhantes à de contatos.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

39


CAPA | SugarCRM

O módulo de ligações (mostrado na figu-

ra 12) permite o cadastramento de ligações

Figura 7

O gerenciamento de potenciais permite o atrelamento de contas mediante a conversão destes em oportunidades.

Figura 8

As oportunidades são catalogadas de forma eficiente na guia Oportunidades.

Figura 9

A guia Campanhas agiliza e favorece o cruzamento de informações de potenciais, contatos, clientes e oportunidades.

ocorridas e o agendamento de ligações futuras, sempre adicionando automaticamente os contatos (chamados aqui de convidados da ligação) ao histórico de interações dos mesmos. O módulo de reuniões tem comportamento semelhante. A agenda oferecida pela guia de mesmo nome permite o compartilhamento das agendas dos usuários, bem como o controle independente da agenda de cada um deles. Da mesma forma que os chamados de suporte, as tarefas podem receber prioridades e status, contando ainda com a definição das datas de início e fim, o que permite um melhor controle das próximas finalizações e também dos atrasos. Como se poderia esperar, pode-se enviar e receber emails através do módulo de mesmo nome. Porém, há funcionalidades adicionais nele, como a construção de modelos (templates) em texto ou HTML, e a inclusão de mensagens ao histórico de todos os contatos envolvidos nelas. A área de colaboração dispõe de um módulo de gerenciamento de projetos e outro de documentos. O primeiro apresenta uma forma de se cadastrar projetos simples, contendo tarefas seqüenciais com seus predecessores, atribuições a usuários executores, acompanhamento de status dessas tarefas de projeto e controle administrativo sobre a execução do projeto em si, como mostrado na figura 13. O gerenciamento de documentos (guia Documentos) funciona como uma biblioteca de documentos usada para facilitar o acesso à base de conhecimento por todos os usuários da solução SugarCRM Open Source. Ele permite anexar arquivos, relacionar documentos entre si, controlar datas de publicação e expiração e controlar revisões e a criação de modelos. Os módulos RSS e Meu Portal constituem o grupo Ferramentas. Enquanto o RSS permite o cadastramento de sites que oferecem feeds RSS para facilitar o acompanhamento de notícias relevantes ao negócio, o segundo módulo armazena os sites favoritos de cada usuário, de forma a facilitar o uso de qualquer computador com acesso ao SugarCRM.

Instalação Figura 10 O gerenciamento de ocorrências oferece uma interface simples para o acompanhamento de relatos de problemas, cada um vinculado a uma conta e um cliente, e recebendo uma prioridade.

O processo de instalação do SugarCRM Open Source (SugarCRM OS) com MySQL e Apache é composto pelos seguintes passos: ➧ Download dos arquivos do SugarCRM;

➧ Cópia dos arquivos para o servidor web; ➧ Instalação do sistema CRM de forma gráfica. A seguir, são descritos os passos, de forma individual. Para realizar o primeiro passo, baixe a versão mais recente do SugarCRM Open Source, disponível em http://www.sugarcrm. com/crm/download/sugar-suite.html, sob a indicação Full Installation Package. O segundo passo, cópia dos arquivos para o servidor web, exige que o pacote do SugarCRM seja descompactado e receba as permissões necessárias. Para isso, localize o diretório raiz da web no servidor. Esse é o diretório que permitirá acesso público aos arquivos disponíveis no servidor web, e costuma estar localizado em um dos seguintes pontos: ➧ /var/www/html/ (Linux/Apache) ➧ C:\Inetpub\wwwroot\ (Windows/IIS) ➧ C:\Arquivos de Programas\Apache Group\ Apache\htdocs\ (Windows/Apache) ➧ /Library/Web server/Documents/ (MacOS X/Apache) Ao ser descompactado, o pacote criará automaticamente um diretório no local selecionado. É possível renomear o diretório recém-criado, caso seja de interesse do administrador. A seguir, as permissões devem ser configuradas corretamente. Os diretórios abaixo, incluindo seus subdiretórios e arquivos, deverão ter permissão de escrita para o usuário responsável por executar o servidor web: ➧ cache ➧ custom ➧ data ➧ modules ➧ config.php É importante notar que o usuário responsável pelo servidor web tem diferentes nomes, dependendo do sistema operacional utilizado. No Linux, ele costuma chamar-se apache ou nobody, mas não há um padrão fixo para isso. O terceiro passo, a instalação do SugarCRM, pode ser feito através do amigável instalador incluído no pacote. Para isso, basta acessar a URL http://servidor_web/ diretorio_SugarCRM, como por exemplo http://localhost/sugarcrm. Com esse acesso pelo navegador, o administrador será automaticamente redirecionado para o instalador. Clicando-se em Start, a instalação é iniciada. Após aceitar o termo de licença do SugarCRM, o sistema verificará as dependências e requisitos para essa instalação, que resumem-se a:

http://supertuxbr.blogspot.com 40

http://www.linuxmagazine.com.br


SugarCRM | CAPA

sejam ativados itens específicos da instalação do SugarCRM, como a verificação automática de atualizações, o cálculo de estatísticas e as configurações avançadas de segurança. A especificação do endereço web é o endereço a ser usado no SugarCRM. Normalmente, utiliza-se o valor Figura 11 A guia Central de Suporte permite a abertura de chapadrão. Para personalizar mados, assim como a manipulação dos já existentes, os diretórios de sessão e a fim de simplificar sua solução. logs, além do identificador da aplicação, basta ➧ O banco de dados deve estar con- desmarcar o item Use Defaults? na caixa figurado para trabalhar com PHP; Advanced Site Security. ➧ A biblioteca curl deve estar incluída Após preencher os campos adequadamenna instalação do PHP; te, configurando a URL do SugarCRM e a ➧ A definição da opção session_save_ senha de administrador, entre outros, um path deve estar no arquivo php.ini. clique em Next levará o administrador à tela Se algum componente não estiver de configurações locais e pacote de línguas. correto ou disponível, uma mensagem Essa tela é bastante auto-explicativa. Porém, em vermelho será mostrada. Nesse caso, é importante ressaltar que, para selecionar cancele a instalação e corrija a depen- uma língua diferente da que vem por padrão dência (a documentação disponível no no sistema CRM (inglês), é necessário que site do SugarCRM[2] explica como o pacote da língua esteja instalado. fazer isso). Após preencher os valores apropriaSe todos os itens forem satisfeitos, o damente, pode-se clicar em Next e veriinstalador apresentará o botão Next, que ficar as informações cuidadosamente e deve ser clicado para se prosseguir com novamente. Caso seja necessário alterar a configuração de alguma etapa anterior, a instalação. A seguir, será exibida uma tela para a sempre é possível pressionar o botão Back configuração do banco de dados. Nesse para voltar à respectiva tela. Após clicar mais uma vez em Next, passo, é possível configurar o instalador para que ele insira no sistema alguns da- será exibida a tela de execução, iniciandos de demonstração. Normalmente, o do-se a instalação propriamente dita, servidor de banco de dados é a mesma com os parâmetros selecionados nos máquina na qual a instalação do Su- passos anteriores. garCRM está sendo feita. Nesse caso, é Quando a instalação estiver completa, preferível utilizar localhost como nome clique em Next para prosseguir para a tela da máquina para fins de instalação. Se o de registro. Clique no botão Send Regisbanco de dados do SugarCRM não hou- tration para efetuar o registro. É possível ver sido criado antecipadamente, o passo não realizar esse registro no momento, atual ainda possibilitará que se peça para simplesmente clicando em Finish. Após o instalador fazê-lo, criando também o essa etapa, o administrador verá a tela iniusuário apropriado no banco. Para isso, cial do SugarCRM Open Source. é importante que o usuário que fizer a instalação tenha direitos administrativos no servidor. Após clicar novamente sobre o bo- A versão em Código Aberto do Sutão Next, o administrador verá a tela de garCRM, sem custo de licenças de configuração do site. Ela permite que uso, é uma solução muito interessan-

Conclusão

Figura 12 Acompanhamento das ligações do usuário através da guia Atividades.

Figura 13 O gerenciamento de projetos oferecido no SugarCRM Open Source permite um relativo grau de controle sobre os projetos em andamento.

te, pois os custos de licenças durante muito tempo foram impeditivos para uma grande quantidade de empresas, prejudicando significativamente a percepção dessa tecnologia por parte do mercado. ■

O autor Bruno Franklin (bruno@highcrm.com. br) é Gerente de Projetos Senior e PMO da HighCRM, parceira da SugarCRM no Brasil, e atua como coordenador dos cursos do PMI, Capítulo São Paulo.

Mais Informações [1] HighCRM, parceiro SugarCRM: http://www.highcrm.com.br [2] Documentação do SugarCRM: https:// www.sugarcrm.com/crm/support [3] SugarCRM Open Source: http://www.sugarcrm.com/

http://supertuxbr.blogspot.com


ERP e CRM livres

CAPA

Liberdade de gestão O Código Aberto se firma como opção de fôlego na implementação de sistemas de gestão por Tadeu Carmona Lars Sundström - www.sxc.hu

N

o início da década de 90, os sistemas integrados de gestão ou ERPs (Enterprise Resource Planning) e os CRM (Customer Relationship Management ou Gerenciamento de Relacionamento com o Cliente) varreram o mundo corporativo, apoiados na popularização da informática e da arquitetura cliente-servidor. Ter um sistema de gestão integrado deixava de ser privilégio de muito poucos: bastava, ao menos no quesito de hardware, possuir microcomputadores e uma rede, ou seja, dispor de uma plataforma bem menos onerosa do que os grandes mainframes. Mas, do lado do software, possuir um ERP ou CRM continuava sendo uma tarefa para poucos: mandar desenvolver um pacote de módulos ou comprar sistemas prontos dos grandes players do mercado, e em seguida encomendar a implementação, não custavam nada barato. É a eterna guerra do Custo x Benefício? Na conquista das grandes empresas, os desenvolvedores de ERP/CRM “de peso” delimitaram seu território, fazendo com que os grandes clientes em potencial se decidissem por uma das suas soluções. Esses sistemas são algo complexos em sua implementação – a adoção de uma solução de gestão via ERP implica em uma mudança, muitas vezes inclusive cultural ou estrutural, da empresa. O mesmo ocorre com os setores de vendas: o CRM não é uma ferramenta de “informatização do caos”, nem uma fonte de milagres – para que o software cumpra sua tarefa são necessários ajustes no modo como a equipe de vendas é organizada. Esses ajustes são de escala progressiva:

quanto maior é a empresa, sua estrutura existente ou seu departamento de vendas, mais complexa e demorada é a “costura” do sistema de ERP/CRM. Se bem essas mesmas necessidades existam no mercado intermediário, formado pelas pequenas e médias empresas (PMEs), estamos diante de uma escala menor, em que conjuntos de problemas ou desafios estão muito mais próximos entre si, ou de suas soluções. É muito mais fácil adequar um módulo de ERP para trabalhar com o departamento no final do corredor, do que com a interligação de dez subdepartamentos localizados a alguns quilômetros de distância, a Internet e as VPNs (Virtual Private Network) estejam lá ou não...

Ferramentas de gestão, não gestão de ferramentas Foi pensando nisso que várias empresas voltaram-se, maciçamente, para o mercado de soluções para as PMEs. A necessidade de uma carga bem menor de custos de planejamento e ferramentas massivas de consultoria permitiu o desenvolvimento de ferramentas de ERP/CRM mais acessíveis, tanto do lado dos clientes, quanto da oferta de produto por parte dos desenvolvedores. É o que convencionou-se definir com a frase paradigmática “ferramentas de gestão, não gestão de ferramentas”. O modelo de desenvolvimento de Código Aberto fez uso desse novo paradigma, preocupando-se em desenvolver softwares de ERP e CRM com excelência técnica, e relegando a preocupação com a venda

de serviços e consultorias anexos para uma segunda etapa. Muitos dos projetos de Código Aberto desenvolveram ERPs com os fontes disponíveis e distribuição livre, como é o caso do Compiere [1], apoiando-se financeiramente, após a adoção da solução por milhares de usuários, na prestação de serviços de consultoria e implementação. Assim, criou-se a ferramenta e se fez a sua distribuição, preocupando-se com a sua excelência e usabilidade, para só depois imaginá-la como veículo de consultoria.

Antes, os proprietários

Essa característica, muito comum, será o enfoque dado por boa parte das empresas ou comunidades que produzem ERP e CRM no formato de software de código aberto. Aqui tratamos, obviamente, de softwares que funcionam em modo online, seja pela Internet, seja usando a arquitetura clienteservidor dentro de uma rede interna. Em relação a sua constituição lógica, existem majoritariamente dois grandes grupos de ERP/CRM: os baseados em sistemas LAMP (Linux, Apache, MySQL e PostgreSQL) ou WAMP (Windows, Apache, MyDQL e PostgreSQL) e os sistemas dependentes da linguagem de programação Java, desenvolvido pela Sun. Nos ERP/CRM proprietários, é claro, existe uma gama maior de divisões, já que cada empresa desenvolve sua própria tecnologia de recolhimento, análise e acesso a dados, obviamente com código fechado. Grande parte do mercado ERP mundial está dividido entre empresas de código fechado: SAP (R/3, mySAP [2]), Oracle (E-Business Suite [3]), PeopleSoft J.D. Edwards (adquirida pela Oracle em 2004),

http://supertuxbr.blogspot.com 42

http://www.linuxmagazine.com.br


ERP e CRM | CAPA

Sage (ausente do mercado brasileiro): todos com compatibilidade e disponibilidade para servidores Linux. Também é obrigatório citar a Microsoft (Axapta e Navision). Um estudo de 2004 do grupo Gartner divide o mercado mundial de aplicações ERP entre os grandes fornecedores segundo o gráfico indicado na figura 1. No Brasil, a TOTVS/Microsiga [4], que agora agrega também as soluções da Logocenter e da RM Sistemas, detém o maior quinhão dos 48,7% de participação de outros fornecedores do mercado de soluções ERP. Voltadas para o mercado de pequenas e médias empresas, as soluções da TOTVS também abocanham a maior parte dos 5,8% de participação do Sage, sistema ERP também focado nesse segmento. A solução ERP da Datasul também merece menção aqui. Tanto a solução da TOTVS quanto a da Datasul possuem compatibilidade com ambientes Linux. O modelo de negócios desses fornecedores de soluções é baseado no licenciamento tradicional do software. Além disso, há custos adicionais relacionados a serviços em geral, como instalação, parametrização e suporte, que, em geral, são cobrados anualmente. Há uma forte tendência no mercado contemplando o modelo ASP (terceirização dos serviços com hospedagem externa).

Um exemplo

Entre os sistemas de ERP proprietários, cabe dar destaque ao mySAP ERP, que combina ERP com uma plataforma tecnológica aberta e flexível, que pode expandir e integrar sistemas SAP e não-SAP. O mySAP ERP é comercializado, vem com quatro soluções individuais que atendem aos processos principais de uma empresa: ➧ mySAP ERP Financials ➧ mySAP ERP Administração de Capital Humano ➧ mySAP ERP Operações ➧ mySAP ERP Serviços Corporativos O mySAP ERP redefine o planejamento de recursos empresariais, trazendo características e funções que dão suporte às seguintes atividades empresariais: ➧ Apresentação do Serviço para o usuário final; ➧ Interfaces amigáveis e apoio aos diferentes papéis empresariais; ➧ Simplificam o acesso à informação e dão mais poder aos funcionários e administradores, enquanto aumentam a motivação, produtividade e eficiência. ➧ Análises com apoio completo e abrangente para a administração estratégi-

ca empresarial, análises financeiras, análises operacionais, e análises do quadro de empregados; ➧ Funções para automatizar a contabilidade financeira e administrativa,como administração da cadeia produtiva, lhe dão uma visão financeira mais profunda através de toda a empresa. Um suporte rigoroso para mandatos de governança corporativa, como Basel II e Sarbanes-Oxley, facilitam iniciativa de conformidade corporativa. Estas atividades se tornam possíveis por meio do mySAP ERP Financials; ➧ Funções que lidam com Administração de Capital Humano e administração de talentos, administração do quadro de funcionários e a distribuição destes mesmos funcionários. Estas atividades são chamadas de mySAP ERP Administrador de Capital Humano; ➧ Uma abrangente série de funções de logística administrativa ajudam a integrar ciclos empresariais, como os ciclos compra-para-pagar e produtos sob medida. Estas atividades se tornam possíveis através do mySAP Operações; ➧ Funcionalidade de administração permite que você otimize tanto os serviços centralizados quanto os descentralizados para gerenciar imóveis, administração do portifólio de projetos, viagens corporativas, ambiente, saúde e segurança (environment, health, and safety – EH&S); e controle de qualidade. Estas atividades são feitas pelo mySAP ERP Serviços Corporativos.

Oracle E-Business Suite Outra solução proprietária que merece ser mencionada é o Oracle E-Business Suite, um conjunto de aplicativos de negócios que lhe permite gerenciar as interações com os clientes, fabricar produtos, fazer remessa de pedidos, cobrar pagamentos de maneira eficiente, dentre outras funcionalidades, tudo a partir de um sistema de negócios que compartilha uma única base tecnológica, 100% integrada. Implementando-se um ou vários dos módulos disponíveis, a Oracle E-Business Suite

permite ao cliente aprimorar os processos de negócios, tomar decisões mais bem-informadas e reduzir despesas. Com isso, o cliente é capaz de obter acesso a informações de forma mais rápida e econômica em uma única instância global, automatizar os processos de negócios em toda a empresa e gerenciá-la com base em fatos, através do uso de um sistema integrado de Business Intelligence. Os seguintes módulos estão disponíveis na Oracle E-Business Suite: ➧ Compras ➧ Contratos ➧ Gestão de desempenho corporativo ➧ Gestão de dados de clientes ➧ Gestão de relacionamento com o cliente ➧ Financeiro ➧ Gestão de recursos humanos ➧ Módulo de Inteligência

O CRM

De modo geral, sistemas CRM modernos abrangem hoje a automatização da gestão de marketing, da gestão comercial, do canal e da força de vendas, bem como a gestão dos serviços ao cliente. Tais sistemas registram contatos com clientes de forma centralizada, independentemente do meio de comunicação utilizado, e que pode ser telefone, fax, email, chat, SMS, MMS, dentre outros. Esses sistemas catalogam todas essas chamadas e as informações geradas a partir de sua recepção (anotações, cadastros, respostas a consulentes), de modo a fornecer informações relevantes para tomadas de decisões. Além disso, mais do que ser um meio de consulta a um catálogo de

50,0% 45,0% 40,0% 35,0% 30,0% 25,0% 20,0% 15,0% 10,0% 5,0% 0,0% SAP

Figura 1

PeopleSoft JD Edwards

Oracle

Sage

Microsoft

Outros Fornecedores

Principais fornecedores de soluções ERP no mercado mundial.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

43


CAPA | ERP e CRM

informações estático, os sistemas CRM se tornaram uma ferramenta para atualizar constantemente o entendimento das necessidades e do comportamento dos clientes. Da mesma forma que ocorre com os sistemas ERP, de acordo com o grupo Gartner praticamente 50% do mercado mundial de sistemas CRM se encontra dividido entre quatro fornecedores de tecnologia: SAP, Siebel (adquirida pela Oracle em 2005), PeopleSoft (adquirida pela Oracle em 2004) e Oracle, com todas oferecendo suporte a Linux. Outras soluções incluem SalesLogix (da Sage), SalesForce.com (que segue o modelo onDemand CRM), SAS Customer Intelligence, Amdocs (que agrega a gestão de parcerias ao CRM), Onyx, Telemation e Microsoft Dynamics CRM – somente o último não contemplando a plataforma Linux. A Figura 2 ilustra a participação dessas soluções no mercado mundial de sistemas CRM em 2004 e 2005. No mercado brasileiro podem ainda ser mencionadas as soluções CRM da TOTVS/Microsiga e da Datasul – ambas disponíveis também para a plataforma Linux.

piens [6], OpenERP [7], Freedom [8], Sagu [9], dentre outros.

Sistemas CRM de código aberto Da mesma forma que ocorre com sistemas ERP, há um grande número de projetos de sistemas CRM de código aberto que já atingiram nível para uso em sistemas de missão crítica. Tais sistemas desfrutam das mesmas vantagens descritas para os sistemas ERP. Entre os principais projetos de sistemas CRM de código aberto disponíveis atualmente, podemos citar o SugarCRM, vTiger CRM, TUTOS, OpenCRX e o TinyCRM: sem nos esquecermos do Compiere, que além de ERP também é CRM. No Brasil podemos ainda citar o lâmpadaCRM e HighCRM, ambos baseados no SugarCRM.

De novo o Compiere

Deve-se notar que, ao falar dos sistemas de ERP e CRM proprietários, mostramos que boa parte dessas plataformas – senão a sua totalidade – é baseada na arquitetura de pacotes ou módulos de Os sistemas ERP de Código Aberto dispo- funcionalidade. O problema dessa arníveis atualmente são, do ponto de vista quitetura – sobretudo ao ligá-la aos sisde tecnologia, competidores sérios dos temas proprietários – é que a inclusão de sistemas proprietários. Há que se anali- novos pacotes ou módulos, além de sua sar, entretanto, questões como responsa- customização e “amarração” em relação bilidades em caso de prejuízos ou mal ao sistema existente, necessitam de nova funcionamento do sistema, cronograma contratação da empresa produtora do de desenvolvimento e de atualizações, software ou de seus parceiros comerciais, com pagamento extra de taxas por mómanutenção e serviços em geral. Entre os sistemas ERP de código dulo, desconhecimento técnico de como aberto disponíveis atualmente, podemos o módulo é integrado, delineamento ou citar: Compiere, SQL-Ledger [5], Persa- migração de ERP e CRM que duram meses (ás vezes anos) são apenas para citar as situações que mais saltam aos olhos. Se bem muitos desses 27,5% 25,0% problemas costumam – e 22,5% devam realmente – ser 20,0% creditados a más parce17,5% rias e a integradoras sem 15,0% excelência na prestação 12,5% de seus serviços. Vale 10,0% também lembrar que 7,5% o modelo proprietário 5,0% de software, nesse caso 2,5% aplicado a algo tão de0,0% Amdocs SAP Siebel Oracle PeopleSoft Salesforce.com licado como o ERP de uma empresa, dá margem a esse tipo de conFigura 2 Principais fornecedores globais de CRM. tratempos.

Agora os abertos...

Os problemas com ERP/CRM de código-aberto, em relação a parceiros, integradores ou consultorias que dão suporte a um determinado produto podem, sim, ser semelhantes aos problemas vistos com os softwares proprietários. A diferença reside, contudo, no fato de que a empresa usuária da solução não está atrelada a uma única parceria com a empresa fabricante do software, ou a esta própria: com o código-fonte aberto, pode-se partir para a a contratação de mão-de-obra especializada ou, em um modelo mais conservador, simplesmente cumprir as leis do Capitalismo e de sua lei “da oferta e da procura”, procurando uma empresa ou consultoria mais “afinada” com suas necessidades. Esse é o caso, novamente, do Compiere, que já foi citado no início desta matéria. O Compiere, enquanto software, já foi baixado por dezenas de milhares de pessoas, que podem ou não partir para a instalação e customização feita por equipes de desenvolvimento internas. Quando isso não é possível, passa-se imediatamente a procura de consultoria habilitada para o uso do programa... com total liberdade de escolha do usuário. As questões relacionadas a responsabilidade sobre o software e a sua aplicação em ambiente corporativo parecem ser respondidas satisfatoriamente pelo Compiere com a adoção de diversos padrões de excelência na distribuição de suporte e serviços. Por meio de uma configuração flexível, que permite uma implantação fácil e rápida, o Compiere permite a redefinição de seus parâmetros de configuração a qualquer momento. Além disso, o Compiere estabeleceu uma rede mundial de parceiros para atender todas as necessidades de suporte e desenvolvimento. ■

Mais Informações [1] Página oficial do Compiere: www.compiere.org. [2] mySAP: www.sap.com/solutions/ business-suite/erp/index.epx [3] Oracle E-business Suite: www.oracle. com/applications/index.html [4] Totvs-Microsiga: www.microsiga.com [5] SQL Ledger: www.sql-ledger.org [6] Persapien: www.persapiens.org [7] openERP: sourceforge.net/ projects/theopenerp [8] Freedom: www.freedom.org.br [9] Sagu: http://sagu.solis.coop.br

http://supertuxbr.blogspot.com 44

http://www.linuxmagazine.com.br


Desktop nacional talentoso

ANÁLISE

Insigne representante A versão 5.0 (Momentum) do Imagine Linux desenvolvido pela Insigne Free Software. por Tadeu Carmona

A

abertura do Programa Computador para Todos, iniciativa do Governo Federal para popularização da Informática, no final de 2005, proporcionou o acesso de milhares de pessoas a computadores pessoais (PCs). Muito mais do que dar acesso a tecnologia, integrando-a ao mundo doméstico de uma parcela da

Figura 1

população, no entanto, o programa atraiu o interesse da população comum a tecnologias como a Internet, o acesso digital a serviços essenciais, a elaboração eletrônica de documentos e o Software Livre. Desde o início do programa, estabeleceu-se como meta o financiamento, com auxílio do BNDES (Banco Nacional de Desenvolvimento Econômico e Social), de computadores com valor de até R$ 1400,00. Esse valor englobava, além de todo o hardware constituinte do PC, também o sistema operacional. Para sua homologação pelo projeto, um sistema operacional deve obedecer várias regras, incluindo manuais e suporte em línOpções avançadas de boot do Insigne Linux. gua portuguesa [1]. Do

ponto de vista do seu desenvolvimento e apresentação, um software apto a participar do projeto deve possuir também: ➧ Permissão de análise e estudos da execução do software, sem restrições de divulgação do resultado; ➧ Os aplicativos não poderão ser versões de demonstração e nem possuir restrições de funcionalidades artificialmente implantadas.

Software Livre preferencial Esse conjunto de diretrizes a serem seguidas fez com que sistemas operacionais livres, seguidos de aplicativos também livres, fossem adotados como padrão. Existiram, é claro, modelos de PC com Windows pré-instalado (usando a versão limitada conhecida

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

45


ANÁLISE | Insigne Linux

tadas, incluindo LiveCD e Instalação Avançada. A opção live executa o sistema a partir do CD, sem grandes mistérios. É pedida a quantidade de memória mínima de 256 MB, por motivos bem pertinentes: rodando o Gnome – a escolha do Insigne, com várias customizações – uma quantidade razoável de memória é necessária para usar o sistema sem lentidão e mesquinharias na abertura de programas e páginas da Web. Como estamos falando de um sistema que foi pensado para ser instalado, mas cuja mídia de instalação também funciona como LiveDVD, o Insigne é razoavelmente mais lento ao rodar diretamente do DVD, se bem seja utilizável.

Figura 2

O Quick Restore proporciona ferramentas gráficas para instalação e manutenção do sistema.

como Starter Edition), mas em número muitíssimo menor do que seus equivalentes equipados com Linux. O programa governamental teve, assim, um efeito, senão inusitado, ao menos curioso: diversas distribuições Linux nacionais, voltadas para desktops domésticos e munidas com as facilidades que esse nicho dos sistemas operacionais deve possuir, começaram a surgir. Uma das mais bem sucedidas dentre elas é o Insigne Linux [2], distribuição produzida pela Insigne Free Software do Brasil Ltda. Com mais de 5 anos de existência e atualmente em sua versão 5.0.1.1, o Insigne atualmente acompanha PCs de grandes fabricantes, como a CCE, Semp Toshiba e Aiko. Já comercializado maciçamente por grandes redes de supermercados, como o Wal Mart, o Insigne melhorou continuamente com o passar dos anos. Com suas primeiras versões construídas a partir do zero, temos agora uma versão 5.0.1.1 fortemente aparentada

Figura 3

com a família Debian e utilizando o gerenciador de janelas Gnome (versão 2.14.2) – a mesma opção adotada por distribuições de grande porte como o Ubuntu. O casamento entre padrão Debian e Gnome é capaz de resultar em uma distribuição Linux para desktop de qualidade? O resultado é visível, e 100% em língua portuguesa, e é o que iremos mostrar em nossa análise.

Quick Install

O disco de instalação do Insigne funciona tanto como LiveCD, permitindo o uso da distribuição sem necessidade de alterar o disco rígido, quanto como CD de instalação. A diferença está no modo como isso é feito. O Insigne Linux trabalha com vários scripts de boot, cada um com um sistema e características específicas a serem carregados. Ao contrário do Ubuntu [3], que realiza por padrão o boot do sistema LiveDVD, para só depois permitir a instalação por meio do ícone Install – o disparador do script de instalação em modo gráfico –, o Insigne Linux realiza esses procedimentos em separado. Apertando a tecla [F2] no momento do boot (figura 1) é possível esUma olhada no cfdisk mostra como o botão Liberar colher entre as diversas espaço em disco se comporta... formas de boot apresen-

Opções de instalação

Para a instalação padrão do DVD, basta apertar a tecla [Enter] durante o boot. Após o carregamento do kernel é aberto o aplicativo gráfico da Insigne para instalação e recuperação do sistema, o Quick Restore. Essa opção, no entanto, só deve ser utilizada em computadores recém-formatados, ou nos quais apenas o Insigne será instalado, como explicaremos a seguir, lembrando que o Insigne possui diversos scripts e esquemas de inicialização e instalação. Assim que a tela do Quick Restore é iniciada (figura 2) temos acesso a três ferramentas específicas. Clicando no botão Instalação padrão, realiza-se uma instalação automática do sistema. Ideal para usuários inexperientes ou que conhecem muito pouco de Linux, ela, no entanto, não é aconselhável para uso em computadores que compartilhem espaço em disco com outros sistemas operacionais ou com dados considerados essenciais. Essa opção realiza o particionamento automático de todo o espaço do disco rígido, apagando todas as partições previamente existentes e, é claro, os dados nelas contidos. Ao clicar no ícone, pede-se a confirmação clicando no botão em forma de vista para iniciar a operação. O botão Liberar espaço em disco deve ser utilizado quando se instala o Insigne em um HD no qual serão instalados outros sistemas operacionais. O script de instalação, nesse caso, cria as partições / ( raiz ), swap e /home para a instalação do Insigne, reservando cerca da metade do espaço total do disco para a posterior instalação de outros sistemas, na forma de espaço livre (figura 3).

http://supertuxbr.blogspot.com 46

http://www.linuxmagazine.com.br


Insigne Linux | ANÁLISE

Conserto

Em casos nos quais uma instalação do Windows tenha sido feita após a instalação do Linux, o Grub (gerenciador padrão do Insigne) é apagado da MBR (Master Boot Record), região do disco rígido onde é instalado o gerenciador de boot (bootloader) responsável pelo carregamento dos sistemas. Em seu lugar, é colocado o gerenciador de boot padrão do Windows, que reconhece apenas sistemas da Microsoft de forma automática. O Insigne possui uma ferramenta, dentro do Quick Restore, que faz a restauração do setor de boot original, permitindo que o sistema possa ser novamente iniciado no boot. Essa ferramenta é acessada pelo botão Recuperar Gestor de Boot. Nos nossos testes em um computador com o Insigne, Ubuntu e Windows instalados, o boot do Insigne foi restaurado, mas sem a presença da instalação do Windows assinalada no Grub. O Ubuntu também não foi assinalado, além de não ser possível recuperá-lo com a própria ferramenta para acesso de sistemas instalados do LiveCD do Ubuntu. Está aí uma coisa para o pessoal do Insigne melhorar no sistema.

Instalador avançado

No mesmo menu iniciado pela tecla [F2], existem algumas opções avançadas para a instalação do DVD. Uma delas é a opção linux expert, que carrega o Quick

garante a descompressão de programas e informações, de forma transparente, em dispositivos somente de leitura, como LiveCDs ou discos de recuperação – os dois casos se aplicando ao DVD do Insigne Linux. Mas basta clicar na seta ao lado e procurar por /dev/hda (ou /dev/sda se você possui discos SATA) para que as partições e sistemas de arquivos de seu computador sejam mostrados corretamente.

Conclusão

Figura 5 Pacotes extras proprietários são instalados com o Insigne Mágico.

Restore com a adição de mais um botão, o Instalador Avançado (Figura 4). Essa é a opção ideal, na verdade, para a instalação do Insigne em máquinas que já possuam uma versão do Windows ou Linux instalada, ou mesmo para a reinstalação do Linux em computadores da linha PC para Todos. Ao se clicar no botão, é aberta uma tela que permite a escolha de um particionador gráfico (na verdade o Gparted [4] ou do uso do xterm para resolver certos problemas via linha de comando – inclusive com a disponibilidade do particionador em modo texto cfdisk. Ao utilizar o Gparted vale a pena atentar para o fato de que o primeiro disco mostrado não é o disco rígido instalado na máquina, mas um cloop (compressed loopback device), um volume, montado a partir de um módulo do kernel, que

Nos ativemos a instalação e configuração do sistema por constituírem o primeiro passo que diferencia um “usuário” de um “técnico”. O Insigne Linux parece caminhar para a criação de um sistema de instalação e configuração simples e “para todos” – e parece inclusive ter conseguido alguma coisa na opção padrão de instalação, que faz com que um sistema gráfico robusto e com suporte técnico a diversos recursos multimídia e de acessibilidade seja instalado em menos de meia hora. Após o primeiro acesso, feito sem usuário, o sistema será reiniciado nas demais vezes com o usuário padrão insigne, senha também insigne. O sistema também pode ser acessado, se necessário, com a conta de usuário root, usando também a senha insigne. Recomenda-se vivamente a alteração das senhas padrão dos usuários por novas senhas (botão Insigne, Centro de Controle, Usuários e Grupos). Para ter acesso a drivers, plugins e softwares proprietários, que devem ser baixados dos sites de seus fabricantes e não podem ser distribuídos livremente, a Insigne preparou o programa Insigne Mágico, muito parecido com o EasyUbuntu [5]. Após clicar no ícone, localizado na área de trabalho, basta escolher os programas que se deseja adicionar, incluindo suporte a Flash, Java Runtime e drivers das placas de vídeo NVidia (Figura 5). ■

Mais Informações [1] Definições do Programa Computador Para Todos: http:// www.computadorparatodos. gov.br/projeto/def_sw

[2] Insigne Linux: http://www. insignesoftware.com/default.php [3] Ubuntu: http://www.ubuntu.com/ [4] Gparted: gparted.sourceforge.net/

Figura 4

O Instalador Avançado tem um melhor controle sobre o particionamento do disco.

[5] EasyUbuntu: http://easyubuntu. freecontrib.org/

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

47


Quinta aula da preparação LPI

TUTORIAL

LPI nível 1: Aula 5 Aprenda os fundamentos de redes, incluindo a configuração de servidores de email e do poderoso Apache. por Luciano Siqueira

Tópico 112: Fundamentos de Redes Objetivo 1.112.1: Fundamentos de TCP/IP Peso: 4 Endereço IP Endereços IP no formato xxx.xxx.xxx. xxx (dotted quad) são a expressão, em números decimais, de um endereço de rede binário. Cada um dos quatro campos separados por pontos corresponde a um byte, geralmente chamado de octeto. Por exemplo, o número IP 192.168.1.1 corresponde à forma binária 11000000.1 0101000.00000001.00000001

A tabela 1 mostra a coversão de valores binários para decimais. Cada interface de rede numa mesma rede deverá ter um endereço IP único. Endereço de rede, máscara de rede e endereço broadcast Além do endereço da interface, um número IP contém o endereço de sua rede, que é determinado através da máscara de rede ou máscara de sub-rede. O

cálculo é feito a partir da forma binária dos números IP. Máscara de 16 bits: 11111111.11111111.00000000.00000000 = ➥255.255.0.0

Máscara de 17 bits: 11111111.11111111.10000000.00000000 = ➥255.255.128.0

marcados da máscara de rede. Para uma máquina 172.16.33.8 com máscara de rede 255.255.0.0, o endereço da rede será 172.16.0.0. O endereço broadcast é o número IP que designa todas as interfaces numa rede. Para um endereço de rede 172.16.0.0, o endereço broadcast será 172.16.255.255. Através do uso de operadores matemáticos lógicos (AND, OR e NOT), os endereços binários são calculados bit a bit. Assim, os IPs da rede e de broadcast resultam das operações: ➧ IP de rede = IP de interface AND máscara de rede; ➧ Broadcast = IP de rede OR NOT máscara de rede.

Na primeira máscara (16 bits), pertencerão à mesma rede os IPs cujos dois primeiros octetos do endereço não difiram. Na segunda máscara (17 bits), pertencerão à mesma rede os IPs cujos dois primeiros octetos e o primeiro bit do terceiro octeto do ende- Tabela 1: Conversão de reço não difiram. Dessa binários para decimais forma, dois endereços de interface 172.16.33.8 Binário Potência de 2 e 172.16.170.3 estarão na 00000001 2^0 mesma rede se a máscara 2^1 for de 16 bits, mas não se a 00000010 00000100 2^2 máscara for de 17 bits. As máscaras de rede 00001000 2^3 variam dependendo do 00010000 2^4 contexto da rede. Conse00100000 2^5 qüentemente, o endere01000000 2^6 ço da rede corresponde à parte do número IP 10000000 2^7 determinado pelos bits

Decimal 1 2 4 8 16 32 64 128

http://supertuxbr.blogspot.com 48

http://www.linuxmagazine.com.br


Preparação LPI | TUTORIAL

Classes de Redes Para redes privadas (LANs) há uma certa gama específica de IPs que podem ser usados e que não devem ser aplicados a interfaces ligadas à Internet. São eles: ➧ Classe A: 1.0.0.0 até 127.0.0.0. Endereços de rede de 8 bits e endereços de interfaces de 24 bits. O primeiro octeto do número IP representa o endereço da rede. A máscara padrão será 255.0.0.0. Permite aproximadamente 1,6 milhões de IPs de interface por rede; ➧ Classe B: 128.0.0.0 até 191.255.0.0. Endereços de rede de 16 bits e endereços de interfaces de 16 bits. Os dois primeiros octetos representam o endereço da rede. A máscara padrão é 255.255.0.0. Permite 16.320 redes, com 65.024 IPs de interface para cada uma; ➧ Classe C: 192.0.0.0 até 223.255.255.0. Endereços de rede de 24 bits e endereços de interfaces de 8 bits. Os três primeiros octetos representam o endereço da rede. A máscara padrão é 255.255.255.0. Permite aproximadamente 2 milhões de redes, com 254 IPs de interface cada. Subredes Subredes podem ser definidas através da máscara de rede, avançando sobre os bits referentes à interface. Dessa forma, uma rede pode ser dividida em redes menores, sem classe, chamadas CIDR – Classless Inter-Domain Rounting. Por exemplo, uma rede classe C 192.168.1.0; ativando o primeiro bit do quarto octeto na máscara de rede, os primeiros 25 bits do IP seriam referentes ao endereço da rede. Máscara de rede: 11111111.11111111.11111111.10000000 255.255.255.128

Conseqüentemente, a rede classe C foi subdividida em duas subredes sem classe, de 25 bits: ➧ Primeira SubRede: 192.168.1.0 Os caracteres x correspondem aos bits de interface nessa subrede: 11000000.10101000.00000001.0xxxxxxx 192.168.1.1 até 192.168.1.126

Endereço de broadcast: 11000000.10101000.00000001.01111111 192.168.1.127

➧ Segunda SubRede: 192.168.1.128 Os caracteres x correspondem aos bits de interface nessa subrede: 11000000.10101000.00000001.1xxxxxxx 192.168.1.129 até 192.168.1.254

Endereço de broadcast: 11000000.10101000.00000001.11111111 192.168.1.255

Uma rede de 26 bits resultaria no seguinte cenário: Máscara de rede: 11111111.11111111.11111111.11000000 255.255.255.192

Subredes resultantes: ➧ Primeira SubRede: 192.168.1.0 Interfaces: 11000000.10101000.00000001.00xxxxxx 192.168.1.1 até 192.168.1.62

Broadcast: 11000000.10101000.00000001.00111111 192.168.1.63

➧ Segunda SubRede: 192.168.1.64 Interfaces: 11000000.10101000.00000001.01xxxxxx 192.168.1.65 até 192.168.1.126

Broadcast: 11000000.10101000.00000001.01111111 192.168.1.127

➧ Terceira SubRede: 192.168.1.128 Interfaces: 11000000.10101000.00000001.10xxxxxx 192.168.1.129 até 192.168.1.190

Broadcast: 11000000.10101000.00000001.10111111 192.168.1.191

➧ Quarta SubRede: 192.168.1.192 Interfaces: 11000000.10101000.00000001.11xxxxxx 192.168.1.193 até 192.168.1.254

Broadcast: 11000000.10101000.00000001.11111111 192.168.1.255

É importante lembrar que, como cada subrede ocupa dois IPs para seus

respectivos endereços de rede e broadcast, o total de IPs para as interfaces será proporcionalmente reduzido. O número possível de máquinas para cada subrede pode ser calculado com a fórmula 2 x (32másc)-2, onde másc é o número de bits usados para a máscara de rede. Um endereço IP pode demonstrar a informação de endereço da rede, máscara de rede e broadcast numa forma abreviada. Por exemplo: 192.168.1.129/25

O número 25 após a barra indica a quantidade de bits reservados para o endereço de rede. Conclui-se que é uma rede CIDR com máscara de sub-rede 255.255.255.128, de endereço 192.168.1.128 e broadcast 192.168.1.255. IPv4 e IPv6 O padrão tradicional de 32 bits (quatro octetos de bits) dos números IP é conhecido como IPv4. Há outro padrão mais recente, conhecido como IPv6, que consiste de uma seqüência de 128 bits. A vantagem óbvia do IPv6 sobre o IPv4 é a disponibilidade de uma quantidade muito maior de números IP. Enquanto o IPv4 é capaz de gerar 4,3×109 (4,3 bilhões) de endereços, o IPv6 disponibiliza 3,4×1038 de endereços. Um endereço IPv6 normalmente é escrito na forma de oito grupos de quatro números hexadecimais. Exemplo de um endereço IPv6: 2001:0db8:85a3:08d3:1319:8a2e:0370:7334

O IPv4 ainda é muito mais difundido, e é possível a intercomunicação entre os dois padrões. Porém, à medida que cada vez mais dispositivos demandarem o uso de um endereço IP, o padrão IPv6 tornarse-á o vigente. Protocolos de rede Vários protocolos são necessários para a transmissão de dados numa rede. Protocolos constituem a “linguagem” usada na comunicação entre duas máquinas, permitindo a transmissão de dados. Os principais protocolos são: ➧ IP - Internet Protocol: Protocolo do qual se utilizam os protocolos TCP, UDP e ICMP, para endereçar e localizar a transmissão de dados; ➧ TCP - Transfer Control Protocol: Protocolo de controle da formatação e integridade dos dados transmitidos. O processo não sofre interferência

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

49


TUTORIAL | Preparação LPI

Exemplo 1: Principais portas e serviços, extraído de /etc/services: ftp-data ftp-data ftp ftp ssh ssh telnet telnet #private #private smtp smtp domain domain http http pop3 pop3 nntp nntp ntp ntp netbios-ssn netbios-ssn imap imap snmp snmp

20/tcp 20/udp 21/tcp 21/udp 22/tcp 22/udp 23/tcp 23/udp 24/tcp 24/udp 25/tcp 25/udp 53/tcp 53/udp 80/tcp 80/udp 110/tcp 110/udp 119/tcp 119/udp 123/tcp 123/udp 139/tcp 139/udp 143/tcp 143/udp 161/tcp 161/udp

#File Transfer [Default Data] #File Transfer [Default Data] #File Transfer [Control] #File Transfer [Control] #Secure Shell Login #Secure Shell Login

any private mail system any private mail system mail #Simple Mail Transfer mail #Simple Mail Transfer #Domain Name Server #Domain Name Server www www-http #World Wide Web HTTP www www-http #World Wide Web HTTP #Post Office Protocol - Version 3 #Post Office Protocol - Version 3 usenet #Network News Transfer Protocol usenet #Network News Transfer Protocol #Network Time Protocol #Network Time Protocol #NETBIOS Session Service #NETBIOS Session Service imap2 imap4 #Interim Mail Access Protocol v2 imap2 imap4 #Interim Mail Access Protocol v2

da esfera de atuação do aplicativo transmissor dos dados; ➧ UDP - User Datagram Protocol: Exerce a mesma função do TCP, porém os procedimentos são realizados na esfera de atuação do aplicativo transmissor dos dados; ➧ ICMP - Internet Control Message Protocol: Permite a comunicação entre roteadores e hosts para que identifiquem e relatem o estado de funcionamento da rede; ➧ PPP - Point-to-point Protocol: Permite a conexão entre dois computadores, geralmente através de uma interface serial ligada a um modem, possibilitando seu uso como interface de rede. Portas TCP e UDP Os protocolos de rede tornam possível a comunicação dos serviços de rede (FTP, HTTP, SMTP etc.), assinalando uma porta específica para cada um deles. É muito importante que todos os computadores interligados respeitem os números de porta corretos para cada serviço. A lista oficial de portas e serviços associados é controlada pela IANA – Internet Assigned Numbers Authority, e está disponível em [1]. No Linux, a lista de serviços conhecidos e suas portas consta em /etc/services. As portas são campos de 16 bits, existindo,

portanto, um máximo de 65535 portas. O exemplo 1 mostra o trecho de /etc/services relativo às principais portas. Rotas de Endereços Para que os dados possam chegar ao seu destino, é necessário que haja uma tabela de rotas na máquina de origem dos dados. A tabela de rotas determina o que fazer com cada pacote de dados que seja encaminhado para fora através de uma interface de rede. Estruturalmente, as máquinas numa rede podem se comunicar apenas com outras na mesma rede. Se a máquina de destino pertencer a alguma rede ligada à de origem, o pacote será colocado nessa rede. Se a máquina de destino não pertencer a alguma rede ligada à máquina de origem, o pacote deverá ser direcionado para a rota padrão, à qual são encaminhados todos os destinos desconhecidos pela máquina local. A máquina ou dispositivo que recebe esses pacotes é chamada de roteador ou gateway, e se encarregará

de encaminhar os pacotes para as redes apropriadas. Há quatro configurações comuns de tabelas de rotas: ➧ Mínima: Para redes isoladas, geralmente feita quando a interface é iniciada; ➧ Estática: Para redes com um ou mais gateways. Geralmente é criada através de scripts automáticos ou manualmente, através do comando route. Se a rede mudar, a tabela precisará ser manualmente atualizada; ➧ Dinâmica: Em redes maiores, as informações de rotas e gateways são dinamicamente fornecidas através de protocolos de roteamento. A desvantagem é que a criação dinâmica de tabelas gera maior tráfego na rede; ➧ Estática/Dinâmica: Geralmente as tabelas de rota contêm informações estáticas para encaminhamento de pacotes dentro da rede local, e uma rota padrão para demais pacotes, que aponta para um gateway que trabalha com roteamento dinâmico. A alocação dinâmica da tabela de rotas é feita através do daemon gated. O exemplo 2 mostra uma tabela de rotas. À máquina 200.228.60.1, serão encaminhados todos os pacotes de dados que não se destinem a máquinas nas redes 200.228.60.0 ou 127.0.0.0 (rede loopback local). Portanto, 200.228.60.1 é o gateway padrão, que se encarregará de encaminhar corretamente os demais pacotes aos seus destinos. Alguns comandos são úteis para verificar o correto funcionamento de uma rede. O comando ping envia pacotes ICMP ECHO_REQUEST para a máquina especificada, e aguarda o retorno ECHO_REPLY. O comando host converte nomes para IPs e vice-versa, através de pesquisa no servidor DNS, como mostra o exemplo 3. O comando dig (Domain Information Groper) retorna informações úteis para o diagnóstico de problemas em servidores DNS. Se nenhum argumento for utilizado, o comando realizará o teste padrão no(s) servidor(es) encontrados em /etc/ resolv.conf.traceroute é um utilitário que mostra as rotas percorridas por um pacote até chegar ao seu destino. Limitando o

Exemplo 2: Uma tabela de rotas # route -n Kernel IP routing table Destination Gateway 200.228.60.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 200.228.60.1

Genmask 255.255.255.0 255.0.0.0 0.0.0.0

Flags U U UG

Metric 0 0 0

Ref 0 0 0

Use 0 0 0

Iface eth0 lo eth0

http://supertuxbr.blogspot.com 50

http://www.linuxmagazine.com.br


Preparação LPI | TUTORIAL

campo TTL (Time To Live) dos pacotes, o traceroute recebe respostas de erro ICMP TIME_EXCEEDED de cada máquina percorrida. O comando whois pesquisa por um nome de domínio na base da dados whois, que retorna informações sobre o registro do domínio e sobre o proprietário, como nome e contatos.

Objetivo 1.112.3: Configuração e Resolução de Problemas de Redes TCP/IP Peso: 7 Arquivos de configuração Os principais arquivos de configuração da rede são: ➧ /etc/HOSTNAME ou /etc/hostname, que contém o nome atribuído a máquina local; ➧ /etc/hosts, que associa os números IP da rede a nomes. Ele é mais prático para pequenas redes; ➧ /etc/networks, que, de forma semelhante ao /etc/hosts, atribui nomes a números de rede; ➧ /etc/nsswitch.conf, que determina os locais de busca por aliases, números de rede, bancos de usuários e senhas etc. Palavras-chave como files, nis e dns determinam qual deve ser a origem para o requerimento de sistema, como mostra o exemplo 4; ➧ /etc/host.conf, com a mesma função de /etc/nssitch.conf em sistemas pré-glibc2; ➧ /etc/resolv.conf, para especificar o(s) servidor(es) DNS (exemplo 5). Cada distribuição organiza de maneira própria os scripts de configuração de interfaces de rede. No Slackware, informações para cada interface de rede podem constar no arquivo /etc/rc.d/rc.inet1.conf. Enquanto, no Debian, as configurações para cada interface de rede podem ser manualmente determinadas em /etc/network/interfaces. Configuração da interface Fundamental para o funcionamento da rede é que a interface de rede esteja configurada corretamente. Estando o hardware corretamente preparado – tanto na parte física da rede quanto no carregamento do módulo referente à interface local –, a interface pode ser configurada manualmente através do programa ifconfig. Uma interface de rede também pode

ser configurada automaticamente pelo sistema durante a inicialização, dependendo dos scripts de configuração da distribuição. O comando ifconfig possui muitas opções, mas sua principal é definir um endereço IP para a interface de rede, como por exemplo:

Exemplo 3: Uso do comando host # host www.gnu.org www.gnu.org is an alias for gnu.org. gnu.org has address 199.232.41.10 ;; reply from unexpected source: 200.212.223.100#53, expected 200.230.210.6#53 ;; Warning: ID mismatch: expected ID 1737, got 56531 www.gnu.org is an alias for gnu.org. www.gnu.org is an alias for gnu.org. gnu.org mail is handled by 30 mx30.gnu.org. gnu.org mail is handled by 10 mx10.gnu.org. gnu.org mail is handled by 20 mx20.gnu.org.

ifconfig eth0 192.168.1.2 up

À interface eth0, foi atribuído o IP 192.168.1.2. Para desfazer as alterações, usase down no lugar de up, e os demais argumentos são desnecessários. A máscara de rede para a interface também pode ser especificada: ifconfig eth0 192.168.1.2 netmask ➥255.255.255.0 up

O ifconfig também é usado para inspecionar as configurações de uma interface. Sem argumentos, ele mostra as configurações de todas as interfaces ativas do sistema: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00: ➥D0:09:76:B7:6C inet addr:200.228.60.237 ➥Bcast:255.255.255.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING ➥MULTICAST MTU:1500 Metric:1 RX packets:920058 errors:0 ➥dropped:0 overruns:0 frame:0 TX packets:826694 errors:0 ➥dropped:0 overruns:0 carrier:0 collisions:434 txqueuelen:1000 RX bytes:397187958 (378.7 Mb) ➥TX bytes:471065517 (449.2 Mb) Interrupt:9 Base address:0xde00

Exemplo 4: /etc/nsswitch.conf hosts: networks:

files dns files

services: protocols: rpc: ethers: netmasks: netgroup: bootparams:

files files files files files files files

Exemplo 5: /etc/resolv.conf domain meuservidor.com.br nameserver 200.230.224.1 nameserver 200.230.224.2

usando a máscara de rede 255.255.255.0, o comando seria: # route add -net 192.168.1.0 netmask ➥255.255.255.0 dev eth0

O termo dev pode ser omitido. Já para criar uma rota padrão pela máquina 200.228.60.1 (usá-la como gateway), usaríamos: # route add default gw 200.228.60.1

Por sua vez, o comando para remover a rota padrão pela máquina 200.228.60.1 é: # route del default gw 200.228.60.1

Configuração de Rotas O comando route mostra e cria rotas de rede. O exemplo 2 demonstra a saída do comando route -n. O campo Flags mostra o estado de funcionamento da rota, podendo conter os seguintes caracteres: ➧ U: Rota ok; ➧ H: O alvo é um host; ➧ G: É a rota Gateway; ➧ R: Restabelecer rota por roteamento dinâmico; ➧ D: Rota estabelecida dinamicamente por daemon ou redirecionamento; ➧ M: Modificada por daemon ou redirecionada; ➧ !: Rota rejeitada. Por exemplo, para criar uma rota na interface eth0, para a rede 192.168.1.0,

Clientes DHCP O sistema DHCP permite que uma interface seja configurada automaticamente pelo servidor. O daemon dhcpcd envia uma requisição para a rede através da interface especificada, e o servidor responde com informações de endereço IP, máscara de rede, broadcast etc., que serão usadas para configurar a interface local. Se o nome da interface não for especificado, eth0 será usado. Os arquivos de configuração do dhcpcd são armazenados em /var/lib/dhcpc. Informações para cada interface utilizando DHCP são armazenadas em arquivos nesse diretório. O PID para dhcpcd é armazenado em /var/run/dhcpcd-interface.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

51


TUTORIAL | Preparação LPI

Exemplo 9: Script chat

Exemplo 7: Saída de netstat -nta # netstat -nta Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 0 0.0.0.0:6000 0.0.0.0:* tcp 0 0 0.0.0.0:4662 0.0.0.0:* tcp 0 0 0.0.0.0:631 0.0.0.0:* tcp 0 13032 200.228.60.237:55022 84.120.229.63:4662 tcp 0 0 200.228.60.237:4662 87.235.107.221:4314 tcp 0 0 200.228.60.237:50648 207.46.27.21:1863 tcp 0 0 200.228.60.237:4662 200.114.228.210:2243 tcp 0 0 200.228.60.237:4662 62.43.114.0:2121 tcp 0 13068 200.228.60.237:4662 83.58.240.201:22493 tcp 0 0 200.228.60.237:49824 207.46.6.46:1863

State LISTEN LISTEN LISTEN ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED ESTABLISHED

Exemplo 8: Saída de netstat -i # netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 1023387 0 0 0 941820 0 0 0 BMNRU lo 16436 0 30881 0 0 0 30881 0 0 0 LRU

pid, onde interface é o nome da interface

à qual o cliente dhcpcd está vinculado, como por exemplo eth0.

Comandos de configuração e inspeção Os seguintes comandos são úteis na configuração e inspeção de redes: ➧ hostname: Mostra ou altera o nome da máquina do sistema; ➧ domainname: Mostra ou altera o nome do domínio no qual o sistema se encontra; ➧ dnsdomainname: Simplesmente mostra o nome do domínio DNS usado pelo sistema; ➧ ping: Envia pacotes ICMP ECHO_REQUEST para a máquina especificada, e aguarda retorno de ECHO_REPLY. Por exemplo: # ping -c 3 www.gnu.org PING gnu.org (199.232.41.10) 56(84) bytes ➥of data. 64 bytes from 199.232.41.10: icmp_seq=1 ➥ttl=52 time=1273 ms 64 bytes from www.gnu.org (199.232.41.10): ➥icmp_seq=2 ttl=52 time=325 ms 64 bytes from www.gnu.org (199.232.41.10): ➥icmp_seq=3 ttl=52 time=567 ms --- gnu.org ping statistics --3 packets transmitted, 3 received, 0% ➥packet loss, time 10617ms rtt min/avg/max/mdev = 325.392/722.193/127 ➥3.725/402.319 ms, pipe 2

O exemplo 3 mostra como host converte nomes para IPs e vice-versa, através de pesquisa no servidor DNS. ➧ tcpdump: Retorna os cabeçalhos de pacotes numa determinada interface de rede, opcionalmente utilizando filtros;

➧ netstat: Mostra as tabelas de rotas, as conexões ativas e estatísticas relacionadas. Por exemplo, o comando netstat -rn tem saída idêntica à do comando route -n, mostrada no exemplo 2. O exemplo 7 mostra ainda todas as conexões TCP ativas, sem qualquer resolução de nome, enquanto o exemplo 8 mostra as estatísticas de transmissão para todas as interfaces. Nele, os campos RX correspondem aos pacotes recebidos, e TX representa os pacotes enviados.

Objetivo 1.112.4: Configurar o Linux como um Cliente PPP Peso: 3

O Protocolo Ponto-a-Ponto (PPP) permite estabelecer uma conexão de rede através de uma interface serial. É o tipo de protocolo usado em conexões via linha telefônica. Os dispositivos necessários para criar uma conexão PPP são uma interface serial e um modem. Esses dispositivos podem se apresentar separadamente – modem externo ligado à porta serial – ou serem integrados – placa interna ISA ou PCI. Nesse tipo de transmissão, cada byte é enviado à porta serial bit por bit, numa freqüência denominada baud rate. Estando o modem corretamente instalado no sistema, é possível enviar comandos, como ATZ e ATDT, diretamente para sua respectiva porta serial. O programa minicom age como um terminal de comunicação com o modem, podendo realizar diagnósticos e discar números. Outro programa comum para comunicação com o modem é o wvdial.

‘ABORT’ ‘BUSY’ ‘ABORT’ ‘ERROR’ ‘ABORT’ ‘NO CARRIER’ ‘ABORT’ ‘NO DIALTONE’ ‘ABORT’ ‘Invalid Login’ ‘ABORT’ ‘Login incorrect’ ‘’ ‘ATZ’ ‘OK’ ‘ATDT 99999999’ ‘CONNECT’ ‘’ ‘ogin:’ ‘adamastor’ ‘sword:’ ‘qwerty’ TIMEOUT’ ‘5’

Através do comando wvdialconf, o modem é automaticamente localizado nas portas seriais, e o arquivo de configuração /etc/wvdial.conf é criado. Nesse arquivo, são adicionadas as informações sobre o telefone do provedor de acesso e dados de autenticação do usuário. A discagem é realizada invocando-se wvdial nome-provedor. Realizada a discagem e a autenticação, o daemon pppd deverá ser apropriadamente iniciado para controlar a conexão. Diferentemente do minicom, o wvdial executa automaticamente o pppd. É possível invocar a conexão diretamente pelo pppd, através da utilização de um script chat. Esse script é uma seqüência de instruções no formato ‘condição esperada’ ‘resposta’, usadas para a comunicação com o servidor, como mostra o exemplo 9. Com ele, o pppd pode ser invocado da seguinte forma: # pppd /dev/ttyS3 115200 \ nodetach lock debug crtscts asyncmap ➥0000000 \ connect “/usr/sbin/chat -f /etc/ppp/chat/ ➥script”

Por comodidade, os argumentos do pppd podem ser salvos no arquivo /etc/ ppp/options. O pppd estabelecerá então a conexão PPP. Um número IP será atribuído à interface pppN através do script /etc/ppp/ip-up. Quando terminada a conexão, a interface será desligada através do script /etc/ppp/ip-down. O diretório /etc/ppp/peers/ contém arquivos de perfil para possibilitar a conexão a diferentes provedores sob diferentes usuários. Dessa forma, também é possível a usuários comuns realizar conexões via pppd. É necessário que haja entradas correspondentes no arquivo /etc/ppp/chapsecrets ou /etc/ppp/pap-secrets. O pppd poderá então ser invocado na forma pppd call nome-peer.

http://supertuxbr.blogspot.com 52

http://www.linuxmagazine.com.br


Preparação LPI | TUTORIAL

Tópico 113: Serviços de Rede Objetivo 1.113.1: Configurar e Administrar o inetd, xinetd e Serviços Relacionados Peso: 4

Serviços de rede podem rodar continuamente como aplicações independentes, aguardando conexões em suas respectivas portas e lidando diretamente com os clientes, ou então ser invocados pelo daemon de rede inetd ou xinetd. inetd Geralmente disparado na inicialização do sistema, o daemon inetd espera por conexões em portas específicas. Dessa forma, o daemon específico para cada serviço será iniciado apenas quando o respectivo serviço for solicitado. O arquivo /etc/inetd.conf configura o daemon. Cada linha corresponde à configuração para um serviço válido, que deve constar em /etc/services. A linha de configuração contém os seguintes campos: ➧ service name: Nome de um serviço válido em /etc/services; ➧ socket type: stream, se TCP, ou dgram, se UDP. Outros valores possíveis são raw, rdm e seqpacket; ➧ protocol: Protocolo válido em /etc/ protocols, como tcp ou udp; ➧ wait/nowait: Especifica se o inetd deve esperar ou não o programa servidor retornar para continuar aceitando conexões para o mesmo; ➧ user.group: Rodar o programa servidor como user.group. Dessa forma, é possível rodar o programa servidor com permissões diferentes de root. O grupo é opcional; ➧ server program: Caminho do programa a ser executado quando um pedido existir no respectivo socket. Para controle dos pedidos, deve ser /usr/sbin/tcpd; ➧ server program arguments: Quando tcpd é usado para controlar os pedidos, esse campo deverá conter o caminho para o programa que de fato é o servidor do serviço. Por exemplo, a linha de @/etc/inetd.conf para o servidor de email popa3: pop3 stream tcp nowait root /usr/ ➥sbin/tcpd /usr/sbin/popa3d

Para desativar o uso de um servidor, basta comentá-lo com o caractere #, como em:

# pop3 stream tcp nowait root /usr/ ➥sbin/tcpd /usr/sbin/popa3d

Após alterar o arquivo /etc/inetd. é necessário fazer com que o daemon inetd releia as configurações, o que pode ser feito reiniciando o daemon ou enviando o sinal SIGHUP através do comando kill. O PID para o daemon inetd pode ser consultado através do arquivo /var/run/inetd.pid. conf,

xinetd O xinetd é uma versão aprimorada do servidor inetd. O daemon tcpd não é mais necessário para controlar os pedidos, pois isso é feito pelo próprio xinetd. A configuração é feita através do arquivo /etc/xinetd.conf, ou através de arquivos correspondentes a cada serviço, em /etc/xinetd.d/. Os valores de configuração para cada serviço são como os do /etc/inetd.conf, porém o formato do arquivo difere. Se iniciado com a opção -inetd_compat, o xinetd usará também as configurações em /etc/inetd.conf (caso existam). O exemplo 10 mostra a estrutura de configuração de um serviço em /etc/xinetd.conf. Como ocorre no daemon inetd, é necessário fazer com que o xinetd leia novas configurações, o que pode ser feito reiniciando o daemon ou enviando o sinal SIGHUP através do comando kill. O log do xinetd é armazenado no arquivo /etc/xinetd.log. Configuração de Serviços Cada serviço controlado por inetd/xinetd é configurado separadamente e de diferentes formas. Um exemplo desses serviços é o FTP – File Transfer Protocol – para o qual um dos muitos programas servidores que podem ser utilizados é o vsftp – Very Secure FTP. O arquivo de configuração do vsftp é o /etc/vsftp.conf. Nele, são determinados vários aspectos de funcionamento do daemon vsftp, como o controle de acessos anônimos. Cada linha encerra uma opção no formato opção=valor. Uma opção importante é listen, que determina se o vsftp deve ou não rodar separadamente do inetd/xinetd. Para ser disparado por inetd/xinetd, deve ser usado listen=no, que é o padrão. O daemon deverá constar corretamente no arquivo de configuração do inetd/xinetd. Em /etc/inetd.conf, a linha adequada seria: ftp stream tcp nowait root /usr/sbin/ ➥tcpd /usr/sbin/vsftpd

e em /etc/xinetd.conf seria:

ftp { disable = no socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/vsftpd }

Controle de Pedidos Tanto quanto o inetd (através do tcpd) quanto o xinetd permitem o uso de regras para aceitar ou recusar pedidos de serviços feitos por determinadas máquinas da rede. Essas regras de controle são chamadas tcpwrappers, e são configuradas através dos arquivos /etc/hosts.allow e /etc/hosts.deny. O arquivo /etc/hosts.allow contém as regras para os hosts que poderão acessar a máquina local. Se um host corresponder a uma regra em /etc/hosts.allow, o mesmo será liberado, e o arquivo /etc/ hosts.deny não será consultado. O arquivo /etc/hosts.deny contém as regras para os hosts que não poderão acessar a máquina local. Se um host não constar em /etc/hosts.allow nem em /etc/hosts. deny, o mesmo será liberado. Cada regra é escrita em uma linha, e o formato é o mesmo para ambos os arquivos: serviço : máquina : comando. O campo serviço comporta um ou mais nomes de daemon de serviço ou instruções especiais, enquanto host deve conter um ou mais endereços ou instruções especiais, e o campo opcional comando referese ao comando a ser executado no caso de cumprimento da regra. Máquinas podem vir na forma de domínios, IPs de rede ou IPs incompletos. Os caracteres curinga ? e * podem ser utilizados. Instruções especiais são ALL, LOCAL, KNOW, UNKNOWN e PARANOID. O operador EXCEPT exclui um host ou grupo de hosts de uma determinada regra. Para exemplificar, vejamos a linha que deve estar presente em /etc/hosts.allow para liberar todos os serviços a todos os hosts no domínio no-ip.org, à exceção do host castor: ALL: .no-ip.org EXCEPT castor.no-ip.org

Para bloquear todos os serviços a todas as máquinas que não constarem em qualquer regra de /etc/hosts.allow, a linha de /etc/hosts.deny seria: ALL: ALL

A documentação completa para a criação de regras pode ser encontrada na página de manual hosts_access(5).

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

53


TUTORIAL | Preparação LPI

Objetivo 1.113.2: Operação e Configuração Fundamental de MTA Peso: 4

O programa responsável por administrar o envio e recebimento de mensagens de correio eletrônico, local e remotamente, é chamado MTA – Mail Transport Agent. Há várias opções de MTAs, entre as quais o sendmail, o postfix, o qmail e o exim. O MTA roda como um daemon do sistema, geralmente monitorando a porta 25, responsável pelo protocolo SMTP. O MTA mais utilizado ainda é o sendmail, e os demais geralmente oferecem opções de interoperabilidade com ele, salvo as peculiaridades de cada um. Sendmail O principal arquivo de configuração do sendmail é /etc/mail/sendmail.cf (alternativamente, ele pode estar em /etc/sendmail. cf). Por ser deveras complicado editá-lo diretamente, o comando m4 é usado para gerar o arquivo a partir de um arquivo matriz, de configurações mais simples. Esses arquivos matriz geralmente acompanham o sendmail, e seus nomes são terminados em .mc. Nesses arquivos, pode ser configurado o nome do servidor, opções de redirecionamento etc. O exemplo 11 mostra um arquivo matriz. Com ele, o arquivo de configuração do sendmail pode ser gerado através do comando: # m4 arquivo.mc > /etc/mail/sendmail.cf

O sendmail depende de arquivos e diretórios de suporte para funcionar. Os caminhos podem ser alterados nos arquivos de configuração do sendmail, mas geralmente encontram-se nos locais padrão: ➧/etc/mail/access: Lista de hosts autorizados a enviar emails por este servidor; ➧/etc/mail/aliases ou /etc/aliases: Vincula nomes diferentes para destinatários no sistema. Após alterar esse arquivo, é necessário executar o comando newaliases para gerar o arquivo /etc/mail/aliases.db, e só então os aliases serão utilizados pelo sendmail. A seguir, um exemplo do arquivo /etc/mail/aliases: manager: dumper: webmaster: abuse:

root root root root

➧~/.forward: Pode conter um ou mais endereços para os quais os emails

Exemplo 10: Estrutura de /etc/xinetd.conf nome do serviço { disable = yes/no socket_type = stream,dgram,raw,rdm ou seqpacket protocol = Protocolo válido em /etc/protocols wait = yes/no user = Usuário de início do servidor group = Grupo de início do servidor server = Caminho para o programa servidor do serviço solicitado }

Exemplo 11: Um arquivo matriz .mc 01 02 03 04 05 06 07 08 09

FEATURE(`use_cw_file’)dnl FEATURE(`use_ct_file’)dnl FEATURE(`mailertable’,`hash -o /etc/mail/mailertable.db’)dnl FEATURE(`virtusertable’,`hash -o /etc/mail/virtusertable.db’)dnl FEATURE(`access_db’, `hash -T<TMPF> /etc/mail/access’)dnl FEATURE(`blacklist_recipients’)dnl FEATURE(`local_procmail’,`’,`procmail -t -Y -a $h -d $u’)dnl FEATURE(`always_add_domain’)dnl FEATURE(`redirect’)dnl

recebidos pelo usuário em questão serão direcionados; ➧/var/spool/mail/: Diretório onde são armazenados os emails após serem recebidos pelo sendmail. É criado um arquivo para cada usuário, que será lido pelo cliente de email do mesmo usuário; ➧/var/spool/mqueue/: Diretório de fila para os emails enviados pelos usuários do sistema.

Objetivo 1.113.3: Operação e Configuração Fundamental do Apache Peso 4

O Apache é o servidor Web (HTTP) mais utilizado no mundo. O daemon responsável pelo Apache é o /usr/sbin/httpd. Os arquivos de configuração encontram-se em /etc/apache/ e, dentre eles, o mais importante é /etc/apache/httpd.conf. Outros arquivos, embora em desuso, ainda podem ser utilizados, como /etc/apache/access. conf e /etc/apache/srm.conf. Algumas configurações fundamentais no arquivo de configuração: ➧ ServerType valor: Define se o httpd deve rodar separado ou através do daemon inetd. O campo valor pode ser standalone ou inetd; ➧ ServerRoot caminho: Define o topo do caminho de diretório onde estão os arquivos de configuração, erro e log do Apache; ➧ PidFile caminho: Define o arquivo que armazenará o valor do PID para o processo httpd. O padrão é /var/run/httpd.pid;

➧ ServerAdmin email: Endereço de email do administrador do servidor, para onde deverão ser encaminhadas as informações de erro; ➧ DocumentRoot caminho: Caminho do diretório que armazena os documentos disponibilizados no site. Geralmente, caminho é /var/www/html/ ou /var/www/htdocs. O servidor pode ser iniciado, terminado ou reiniciado através do comando apachectl, usando as seguintes opções: ➧ start: Inicia o servidor; ➧ stop: Termina o servidor; ➧ restart: Reinicia ou inicia o servidor, caso haja alterações de configuração; ➧ graceful: Reinicia ou inicia o servidor se houver alterações em sua configuração, mas antes espera as conexões ativas terminarem; ➧ configtest: Verifica se há erros de sintaxe nas configurações. Os arquivos de log que registram todas as transações realizadas pelo Apache são estes: /var/log/apache/error_log e /var/ log/apache/acces_log. ■

Mais Informações [1] Lista de serviços e portas TCP e UDP: http://www.iana.org/ assignments/port-numbers

O autor Luciano Siqueira é editor da Revista Easy Linux, publicada pela Linux New Media do Brasil. Formado em psicologia, Luciano trabalha com Linux há dez anos e tem certificado LPI 1.

http://supertuxbr.blogspot.com 54

http://www.linuxmagazine.com.br


Autenticação de usuários com PostgreSQL

TUTORIAL

Todos para o banco Se a autenticação local dos usuários é impraticável e o LDAP é complexo demais para as suas necessidades, talvez um banco de dados ofereça o nível ideal de praticidade e funcionalidade. por Claudinei Matos

Melodi T - www.sxc.hu

U

m dos maiores problemas enfrentados pela maioria dos administradores de redes é a autenticação do usuário. Cada programa e serviço usa seu próprio meio de autenticação e armazenamento das informações, ou muitas vezes se baseiam em arquivos de texto como o passwd. Para piorar, cada máquina tem seu próprio arquivo passwd. Com o passar do tempo, foram desenvolvidas técnicas para facilitar o gerenciamento de tais informações, além de tornar possível a propagação dos dados entre as estações da rede. Uma das soluções mais antigas é o NIS (Network Information Server ) que, apesar de não ter uma configuração muito complicada, não chega a ser tão prático. Outra solução largamente conhecida é o LDAP (Lightweight Directory Access Protocol ), um serviço de diretório que, embora seja bem completo e disponha do suporte de uma vasta

gama de softwares, não possui uma administração tão simples. Esse fator pode complicar a vida de administradores com menos experiência, ou até mesmo de programadores que necessitam fazer com que algum sistema autentique os usuários nessa base. Com o objetivo de facilitar a administração e centralização de tais informações, começaram a surgir soluções utilizando o banco de dados livre MySQL para o armazenamento e consulta das informações. Hoje em dia, já é possível utilizar também o PostgreSQL para tal fim, e a cada dia mais serviços e sistemas adicionam suporte aos dois bancos de dados livres mais famosos. Neste artiugo será exemplificada a utilização do PostgreSQL como solução de autenticação e armazenamento de informações de contas, além de algumas outras configurações um pouco mais complexas. O objetivo é centralizar a autenticação da rede, além de

torná-la prática, adicionando suporte inicialmente aos principais serviços, como NSS, PAM, Samba, Postfix e o Courier Authlib (Imap /Pop ). Neste primeiro artigo, será exemplificada a configuração do PAM e do NSS.

NSS

Nos sistemas operacionais Linux e outros derivados do Unix, é comum utilizarmos o NSS (Name Service Switch) em conjunto com o PAM ( Pluggable Authentication Modules ) para cuidar da autenticação dos usuários e do gerenciamento de permissões de acesso a arquivos e diretórios. O NSS tem por objetivo prover bancos de dados para substituir ou adicionar informações aos arquivos Unix tradicionais (passwd, shadow, group, hosts e outros). Os programas que desejam verificar informações em tais bancos utilizam funções padrão da biblioteca C do projeto GNU (glibc), como por exemplo getpwent para

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

55


TUTORIAL | Autenticação

Quadro 1: Uso do ebuild do libnss-pgsql com a correção # # # # # # # #

mkdir -p /usr/local/portage/sys-auth/ /usr/local/portage/sys-auth/ cp -a /usr/porta/sys-auth/libnss-pgsql . cd libnss-pgsql/files wget http://www.claudineimatos.com/files/libnss-pgsql/libnss-pgsql-1.4.0-setgrent_fixed.patch cd .. wget http://www.claudineimatos.com/files/libnss-pgsql/libnss-pgsql-1.4.0.ebuild ebuild libnss-pgsql-1.4.0.ebuild manifest

Após criados os diretórios e copiados os aquivos, é necessário adicionar uma linha ao arquivo /etc/make.conf para que o Portage saiba onde procurar um repositório personalizado: PORTDIR_OVERLAY=”/usr/local/portage” Uma vez feito isso, instale normalmente a biblioteca com emerge libnss-pgsql. Para voltar a utilizar as versões providas pela árvore oficial do Portage, comente ou remova a linha no arquivo make.conf.

recuperar informações sobre uma conta de usuário. Programas como ls e id, por exemplo, verificam as informações do usuário via funções da glibc, que por sua vez busca as informações via Libnss.

PAM

O PAM, por sua vez, como o próprio nome diz, tem como principal objetivo oferecer uma interface comum e modular para autenticação de usuários a qualquer serviço que utilize suas chamadas de função. Processos como login e su, por exemplo, utilizam o PAM para autenticar o usuário. É claro que o PAM não fica limitado à autenticação; ele também pode ser utilizado para trocar a senha do usuário ou para limitar os recursos da máquina utilizados pelo mesmo. A cada dia, surgem mais módulos do PAM, tornando seu uso mais abrangente e talvez até um pouco fora do contexto original.

NSS ou PAM?

É possível utilizar tanto a libnss-pgsql (para o NSS) quanto o pam-pgsql (para o PAM) no sistema, de modo a centralizar as informações dos usuários. No entanto, vale observar que cada um exerce uma função diferente. Como já vimos anteriormente, o NSS exerce funções diferentes do PAM e, apesar

de alguns processos poderem utilizá-lo diretamente para autenticar usuários, sua função principal é verificar as permissões de acesso dos usuários e grupos, portanto seu uso se torna obrigatório. Atualmente, algumas distribuições utilizam uma variação do módulo pam_ unix geralmente chamado de pam_unix2 (responsável pela autenticação via arquivos Unix tradicionais), fazendo com que o mesmo utilize a libnss disponível no sistema para realizar os processos de autenticação. Caso sua distribuição (como a Red Hat, Suse ou Gentoo) utilize essa variação do pam_unix, pode ser suficiente utilizar apenas a libnss e deixar o PAM com sua configuração padrão.

Instalação do NSS

A instalação do libnss-pgsql é rápida e fácil, e exige que a biblioteca Libpq (versão 7.4 ou superior) esteja instalada no sistema. Usuários do Gentoo Linux terão as dependências resolvidas com: # emerge libnss-pgsql

Como a máquina de testes utiliza arquitetura de 64 bits e o ebuild só está disponível para arquiteturas x86 de 32 bits, é necessário enganar o gerenciador de pacotes Portage para conseguir compilar o pacote. Isso pode ser feito

adicionando uma linha ao arquivo pa-

ckage.keywords:

# echo ‘sys-auth/libnss-pgsql ~x86’ >> / ➥etc/portage/package.keywords

Usuários de outras distribuições podem fazer o download do código-fonte no site do PgFoundry [1] instalando-o em seguida com o famoso trio de comandos ./configure, make e make install.

Modelagem dos dados O primeiro passo a ser tomado é a modelagem dos dados (estruturação do banco). Para o funcionamento do sistema, é necessário um mínimo de três tabelas; uma delas armazenará os usuários (/etc/passwd), outra conterá os grupos (/etc/group) e a terceira será responsável pelo relacionamento entre os usuários e os grupos (também presente em /etc/group). A instalação do libnss-pgsql dispõe de um arquivo de exemplo, o qual contém as tabelas a serem criadas, em /usr/share/doc/libnss-pgsql-x.y.z/examples/dbschema.sql (onde x.y.z representa a versão

do pacote). Apesar do exemplo de instalação recomendar o uso de uma tabela separada para armazenar a senha e

Exemplo 1: pam-pgsql com patch no Gentoo Linux # mkdir -p /usr/local/portage/sys-auth/pam-pgsql/files # cd /usr/local/portage/sys-auth/pam-pgsql/files # wget http://www.claudineimatos.com/files/pam-pgsql/pam-pgsql-0.6.3-no_strict_aliasing.patch # wget http://www.claudineimatos.com/files/pam-pgsql/pam_pgsql.conf # cd .. # wget http://www.claudineimatos.com/files/pam-pgsql/pam-pgsql-0.6.3.ebuild # ebuild ebuild digest # emerge pam-pgsql

http://supertuxbr.blogspot.com 56

http://www.linuxmagazine.com.br


Autenticação | TUTORIAL

outras informações da conta ( /etc/ shadow ), seu uso não é obrigatório, e as informações extras do shadow podem ser adicionadas na tabela de usuários ( passwd). Inicialmente, será coberta a criação das tabelas mínimas necessárias para o uso do NSS. Futuramente, o banco de dados poderá ser expandido para suportar outros serviços desejados. Antes de mais nada, é necessário criar o usuário que terá acesso ao banco de dados. Isso pode ser feito com o comando # createuser -P db. Em seguida, caso o banco de dados ainda não exista, é necessário criálo com o comando # createdb -O db -E UTF8 db . Logo após, conecte-se ao banco e execute os seguintes comandos:

criadas as tabelas, é necessário inserir no banco alguns dados de teste:

CREATE SEQUENCE grupo_gid MINVALUE 3000 ➥MAXVALUE 2147483647 NO CYCLE; CREATE SEQUENCE usuario_uid MINVALUE 3000 ➥MAXVALUE 2147483647 NO CYCLE;

A configuração da libnss-pgsql não possui muitos mistérios, e resume-se a editar três arquivos de configuração. Primeiramente, é necessário editar o arquivo /etc/nss-pgsql.conf, que armazena as informações referentes aos arquivos passwd e group. Um arquivo de exemplo é fornecido com a instalação, e pode ser encontrado no diretório de documentos da biblioteca (/usr/share/doc/libnss-pgsql-x.y.z/examples/). Nesse arquivo são definidas as consultas SQL e a conexão ao banco. O arquivo de exemplo vem com uma consulta para o método getgroupmembersbygid, que verifica apenas os grupos efetivos na tabela de usuários. Sendo assim, podemos alterar a consulta para verificar na tabela usuarios_grupos, de modo a retornar todos os usuários de um dado grupo.

CREATE TABLE “usuarios” ( “login” character varying(64) NOT NULL, “senha” character varying(128) NOT NULL, “uid” int4 NOT NULL DEFAULT ➥nextval(’usuario_uid’), “gid” int4 NOT NULL, “desc” character varying(128), “homedir” character varying(256) NOT NULL, “shell” character varying DEFAULT ‘/bin/ ➥bash’ NOT NULL, PRIMARY KEY (”login”), UNIQUE (”uid”) ); CREATE TABLE “grupos” ( “gid” int4 NOT NULL DEFAULT ➥nextval(’grupo_gid’), “nome” character varying(16) NOT NULL, “desc” character varying, “senha” character varying(20), PRIMARY KEY (”gid”), UNIQUE (”gid”) ); CREATE TABLE “usuarios_grupos” ( “gid” int4 NOT NULL, “uid” int4 NOT NULL, PRIMARY KEY (”gid”, “uid”), CONSTRAINT “ug_gid_fkey” FOREIGN KEY ➥(”gid”) REFERENCES “grupos”(”gid”), CONSTRAINT “ug_uid_fkey” FOREIGN KEY ➥(”uid”) REFERENCES “usuarios”(”uid”) );

Apesar do README do libnss-pgsql informar que é necessária uma tabela para os dados do shadow, é possível utililizar a mesma tabela de usuários tanto para passwd quanto para shadow. Após

INSERT INTO grupos (nome) values ➥(’clovis’); INSERT INTO grupos (nome) values (’outro_ ➥grupo’); INSERT INTO usuarios (login, senha, ➥homedir, gid,uid) VALUES (’clovis’,md5(’teste’),’/home/ ➥clovis’,3000,1002); INSERT INTO grupos_usuarios(3001,1002);

Os GIDs 3000 e 3001 são gerados automaticamente ao inserir dados na tabela de grupos. O UID 1002 é utilizado por motivo de compatibilidade com a instalação da máquina de testes, e seria gerado automaticamente caso não fosse especificado.

passwd e group

# Conexão com o banco de dados connectionstring = hostaddr=localhost ➥dbname=db user=postgres password= connect_ ➥timeout=1 # Retorna os dados do usuário de acordo ➥com o login especificado getpwnam = SELECT login, senha, ‘desc’ AS ➥gecos, homedir, shell, uid, gid FROM ➥usuarios WHERE login=$1 # Retorna os dados do usuário de acordo ➥com o UID especificado getpwuid = SELECT login, senha, ‘desc’ AS ➥gecos, homedir, shell, uid, gid FROM ➥usuarios WHERE uid=$1 # Retorna os dados de todos os usuários allusers = SELECT login, senha, ‘desc’ AS ➥gecos, homedir, shell, uid, gid FROM ➥usuarios # Retorna os dados do grupo de acordo com ➥o nome de grupo especificado getgrnam = SELECT nome, senha, gid FROM ➥grupos WHERE nome=$1 # Retorna os dados do grupo de acordo com

➥o GID especificado getgrgid = SELECT nome, senha, gid FROM ➥grupos WHERE gid=$1 # Retorna os dados de todos os grupos allgroups = SELECT nome, senha, gid FROM ➥grupos # Retorna todos os grupos que o usuário ➥pertence exceto o grupo primário groups_dyn = SELECT g.gid FROM usuarios ➥JOIN grupos g USING (uid) where login = $1 ➥and g.gid <> $2 # Retorna todos os usuários de um grupo ➥de acordo com o GID especificado getgroupmembersbygid = SELECT login FROM ➥usuarios JOIN usuarios_grupos g USING ➥(uid) where g.gid = $1

Vale lembrar que como esse arquivo deve ter permissão de leitura para todos, o usuário a ser utilizado para conexão com o banco deve ter seus poderes limitados a consultar as três tabelas necessárias e, se possível, sem acesso à senha, mesmo que criptografada, para evitar a utilização de ataques de força bruta para desvendar a senha.

shadow

O arquivo /etc/nss-pgsql-root.conf, por sua vez, armazena as informações referentes ao shadow e, apesar de não ser obrigatório existir uma tabela específica para o shadow, seu arquivo de configuração deve ser criado caso se deseje utilizar informações adicionais, como por exemplo a data de expiração da conta (informações referentes à idade da conta só estão disponíveis no shadow). Nesse caso mais simples, as informações de idade da conta e tamanho da senha serão forçadas pela consulta ao banco. No entanto, configurações mais complexas podem utilizar o shadow para aplicar tais parâmetros. Nesse caso, é necessário que a senha seja verificada na tabela do shadow para que o esquema funcione. Uma forma mais prática de utilização do shadow com password na mesma tabela é retornar a senha sempre como “x” (assim como no tradicional passwd) na consulta do passwd, e criar campos adicionais para os parâmetros desejados, como por exemplo para a data de expiração da conta. Caso nenhuma dessas informações seja necessária, é possível retornar valores estáticos na consulta ao shadow, conforme o trecho de código abaixo. # Conexão com banco de dados shadowconnectionstring = ➥hostaddr=127.0.0.1 dbname=db user=db password=db connect_timeout=1 @ # Retorna os dados do usuário ➥especificado shadowbyname = SELECT login, senha, ‘1�,

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

57


TUTORIAL | Autenticação

➥‘0�, ‘99999�, ‘0�, ‘0�, ‘-1�

Exemplo 3: pam_unix padrão do Gentoo Linux

FROM usuarios WHERE login = $1 @ # Retorna os dados de todos os usuários shadow = SELECT login, senha, ‘1�, ‘0�, ➥‘99999�, ‘0�, ‘0�, ‘-1� FROM usuarios

auth auth auth

required pam_env.so sufficient pam_unix.so likeauth nullok required pam_deny.so

account

required

É altamente recomendável alterar as permissões do arquivo, deixando-o legível somente para o usuário root, com o comando # chmod 640 /etc/nsspgsql-root.conf.

nsswitch

Por último, é necessário alterar o arquivo /etc/nsswitch.conf de modo que as consultas de usuário e grupo sejam feitas no banco PostgreSQL, em adição aos arquivos passwd, group e shadow. As páginas de manual do arquivo nsswitch.conf explicam melhor o seu formato e as várias opções de configuração disponíveis. Entretanto, para uma configuração simples de autenticação, basta adicionar a palavra-chave pgsql em cada linha referente aos arquivos mantidos pelo banco de dados, conforme o exemplo: passwd: files pgsql shadow: files pgsql group: files pgsql

É absolutamente recomendado manter um editor de texto com permissões de root aberto, com o arquivo /etc/nsswitch.conf, para desfazer as alterações caso algo saia errado, pois configurações erradas nesse arquivo podem impedir o login na máquina.

Testes

Testar o sistema é bem simples, e pode ser feito tentando logar-se na máquina ou utilizando o comando id, para verificar, por exemplo, os grupos aos quais determinado usuário está associado.

pam_unix.so

password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 password sufficient pam_unix.so nullok md5 shadow use_authtok password required pam_deny.so session session

required required

pam_limits.so pam_unix.so

É possível, por exemplo, misturar as informações do /etc/group às tabelas do banco de dados, para adicionar o usuário vindo do banco aos grupos disponíveis apenas na máquina local (no grupo wheel, por exemplo). # id clovis uid=1002(clovis) gid=3000(clovis) groups=3 ➥000(clovis),10(wheel),3001(outro_grupo)

No trecho acima, o usuário foi adicionado ao grupo wheel através do arquivo /etc/group. Porém, nesse caso, o uso da libnss-pgsql inutiliza os comandos de gerenciamento de usuários e grupos para os usuários vindos do banco de dados. Por isso é obrigatório que essa ação seja feita manualmente.

Resolução de falhas

A versão 1.4.0 da libnss-pgsql possui uma falha que faz com que a resolução de usuários e grupos entre em loop infinito caso o banco de dados esteja inacessível. Esse comportamento pode ser muito perigoso em máquina em produção, uma vez que, se um processo do usuário root, por exemplo, tentar buscar as informações do usuário, o processo vai entrar em loop e a carga da máquina aumentará consideravelmente. Apesar de a falha já estar documentada desde 2006, algum

motivo está impedindo o lançamento de uma correção para ela. Um patch de correção feito de acordo com as informações sobre o problema que encontrei na internet pode ser baixado em[2]. Os procedimentos para o uso do ebuild[3] para o Gentoo Linux são mostrados no quadro 1.

pam-pgsql

Atualmente existem dois projetos diferentes do pam-pgsql; um deles pode ser encontrado no Sourceforge, e está na versão 0.6.3, enquanto o outro está disponível no PgFoundry, assim como a libnss-pgsql, e está na versão 1.0. A versão 1.0 disponível no PgFoundry é baseada na versão 0.5 disponível no Sourceforge e, apesar de parecer mais recente, seu último lançamento ocorreu quase um ano antes da versão disponível no Sourceforge. Sendo assim, utilizamos aqui a versão 0.6.3 encontrada no Sourceforge.

Instalação

A instalação do pam-pgsql não é muito complicada, e exige que esteja instalada a biblioteca Libpq (versão 7.4 ou superior), além da Libmhash. Apesar de o pam-pgsql ainda não estar disponível na árvore do Portage, é possível utili-

Exemplo 2: Arquivo de configuração do pam-pgsql # Conexão com banco de dados connect = dbname=db user=db password=db connect_timeout=15 # Retorna a senha do usuário especificado auth_query = SELECT senha FROM usuarios WHERE login = %u@ # Retorna informações sobre a senha em formato booleano: senha expirada, requisitar nova senha e senha nula. # Esses campos não são obrigatórios, e podem ter seu valor fixo caso não sejam utilizados. acct_query = SELECT 0, 0, 0 FROM usuarios WHERE login = %u # Atualiza a senha do usuário especificado pwd_query = UPDATE usuarios SET senha = %p WHERE login= %u # Utiliza senhas no formato crypt com md5 pw_type = crypt_md5 # Imprime mensagens de debug no syslog debug

http://supertuxbr.blogspot.com 58

http://www.linuxmagazine.com.br


Autenticação | TUTORIAL

Exemplo 4: pam_unix com autenticação por PostgreSQL auth auth auth auth

required sufficient sufficient required

pam_env.so pam_pgsql.so # linha nova pam_unix.so likeauth nullok pam_deny.so

account account account

sufficient pam_pgsql.so # linha nova sufficient pam_unix.so # linha modificada required pam_deny.so # linha nova

password password password password

required sufficient sufficient required

pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 pam_pgsql.so use_first_pass # linha nova pam_unix.so nullok md5 shadow use_authtok pam_deny.so

session session

required required

pam_limits.so pam_unix.so

zar o ebuild disponível no bugzilla do Gentoo[4]. A versão 0.6.3, quando compilada com a GCC 4.0 ou superior, alerta sobre alguns métodos incorretos de programação (na realidade, são alterações do tipo da variável) que podem ser suprimidos se o GCC for executado com a opção -fno-strict-aliasing. Os usuários do Gentoo podem baixar o ebuild, o patch e o arquivo de configuração de exemplo no diretório overlay do Portage (que deve ter sido previamente criado), como mostra o exemplo 1. Usuários de outras distribuições podem baixar o código-fonte do pam-pgsql nos sites da Libmhash[5] e do pam-pgsql[6], e utilizar os comandos ./configure && make && make install.

Configuração do pam-pgsql A configuração do pam-pgsql, assim como da libnss-pgsql, é simples. Todavia, é necessário prestar muita atenção aos arquivos alterados, pois um erro pode tornar impossível registrar-se novamente no sistema. Como o pam-pgsql também fará alterações no banco de dados (para alterar a senha, por exemplo), é necessário que o usuário que acessa o banco possua tais permissões. Além disso, como já foi dito anteriormente, é altamente recomendável empregar um usuário separado para esse fim. O arquivo /etc/pam_pgsql.conf armazena as configurações do módulo, e seu formato é parecido com a configuração da libnss-pgsql. No Gentoo, o ebuild instala um exemplo do arquivo de configuração em /usr/share/doc/ pam-pgsql-x.y.z/examples/, semelhante ao exemplo 2.

Assim como com o arquivo referente ao shadow, é altamente recomendável alterar as permissões do arquivo pampgsql.conf, deixando-o legível somente para o usuário root, com o comando chmod 640 /etc/pam-pgsql.conf, principalmente se o usuário especificado do banco tiver permissão de alteração das tabelas. Após configurado o módulo, é necessário configurar o PAM para utilizar o novo método em seus processos de autenticação. No Gentoo, assim como em outras distribuições, o arquivo do PAM responsável pela autenticação é o /etc/pam.d/system-auth. A alteração a ser feita no arquivo é relativamente simples, resumindo-se basicamente a adicionar linhas referentes ao novo módulo e alterar algumas outras referentes ao pam_unix. Embora o conteúdo desse arquivo possa variar de uma distribuição para outra, geralmente ele costuma ser bem similar em suas variações. O exemplo 3 demonstra o conteúdo do arquivo padrão do Gentoo Linux, e o exemplo 4 define como o mesmo arquivo deve ficar após as alterações para que o pam-pgsql funcione corretamente.

Testes

Após tudo configurado, é possível alterar a senha usando o comando passwd , ou mesmo fazer um login no sistema e verificar no syslog as linhas referentes ao pam_pgsql, caso a depuração esteja habilitada. Também é possível configurar outros serviços que se utilizem do PAM para empregar o pam_pgsql na autenticação. Vale lembrar que, como agora existem dois módulos a serem verificados para a autenticação do usuário, eles serão usados na ordem em que forem

inseridos. Isso significa que, no caso acima, a configuração verificará o usuário primeiramente no PostgreSQL, e só depois na libnss (que retornará ao PostgreSQL) ou nos arquivos tradicionais. Um exemplo disso é que, na hora de entrar no sistema como root, a senha será requisitada duas vezes, retornando um erro na primeira tentativa, a menos que o usuário root também esteja cadastrado no banco de dados, o que não é recomendável. ■

Mais Informações [1] PgFoundry: http://pgfoundry.org/ projects/sysauth [2] Patch de correção para o libnss-pgsql: http://www.claudineimatos. com/files/libnss-pgsql/libnsspgsql-1.4.0-setgrent_fixed.patch [3] Ebuild com patch para o libnss-pgsql: http://www.claudineimatos. com/files/libnss-pgsql/ libnss-pgsql-1.4.0.ebuild [4] Ebuild do pam-pgsql: http://bugs.gentoo.org/ show_bug.cgi?id=34517 [5] Libmhash: http://sourceforge.net/ projects/mhash [6] PAM-pgsql: http://sourceforge.net/projects/ pam-pgsql [7] Libnss-pgsql: http://sysauth-pgsql.sourceforge. net/docs/index.html [8] Documentação do NSS-MySQL e PAMMySQL:

http://www.weltraumsofa.de/pam_ mysql/doku_pamnssmysql_jh_en.pdf

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

59


Visualização de grafos com o Graphviz

TUTORIAL

Comando para desenhar A ferramenta de linha de comando Graphviz é capaz de acelerar o processo de criação de imagens, usando apenas texto. por Tim Schürmann

O

Graphviz é uma valiosa ferramenta para se ter por perto quando se precisa gerar grafos de forma automatizada (veja o quadro 1). Os usuários de computador costumam enfrentar problemas ao tentar gerar grafos, começando com diagramas E/R para visualização de esquemas de bancos de dados, e chegando a estruturas hierárquicas em árvores para representar as ações de uma empresa ou uma cadeia de comando. Normalmente, a informação se localiza em caixas quadradas que devem ser posicionadas cuidadosamente, sem sobrepor outras caixas, antes de desenhar qualquer seta de conexão. Esse é o tipo de desafio

no qual o Graphviz se sobressai – os usuários simplesmente especificam os relacionamentos entre os elementos, e a ferramenta automaticamente gera um atraente desenho. Nem é preciso procurar um sofisticado editor gráfico no qual seja possível especificar os relacionamentos. Em vez disso, o Graphviz lê uma descrição textual do grafo em uma linguagem de marcação especial. A linguagem LaTeX utiliza uma técnica semelhante, embora os dois sistemas nada tenham em comum a fora isso.

O Graphviz já está incluído há anos em todas as distribuições Linux populares. Instalar o pacote é fácil – apenas clique em seu gerenciador de pacotes preferido. Também se pode baixar o código-fonte da versão mais recente do programa em sua página ([1]), e seguir o procedimento padrão para compilálo e instalá-lo: configure && make && make install

Qualquer que seja a forma escolhida de instalação, deve-se ter uma coleção de ferramentas no disco ao final.

Quadro 1: Terminologia Um grafo utiliza linhas para conectar múltiplas caixas. As caixas são chamadas de vértices, e as linhas são as arestas. Um exemplo de grafo poderia ser um mapa rodoviário, no qual as cidades são os vértices e as estradas são as arestas. Um grafo no qual as ligações são representadas por setas são chamados de grafos direcionados (ou digrafo). Sem as setas, ele se torna um grafo não direcionado (ou simplesmente grafo). Arestas direcionadas podem ser comparadas as ruas de mão única.

pai

Existe uma forma matematicamente elegante – e, portanto levemente críptica, – de expressar isso. Um grafo (direcionado): G = (V,E)

filho Figura 1

filha

A descrição do exemplo 1 cria este grafo direcionado.

compreende um conjunto de vértices, e também um conjunto de arestas (E), onde a letra contém pares de vértices (direcionados) na forma: e = (x,y)

http://supertuxbr.blogspot.com 60

http://www.linuxmagazine.com.br


Graphviz | TUTORIAL

Clovis Bornay

O comando a seguir cria um arquivo PNG (figura 1):

Empregado + salário : int + nome : string

dot -Tpng exemplo1.dot -o exemplo1.png

Primogenito Clovina Figura 2

Clovisson Com poucas instruções, o Graphviz consegue colorir de vermelho o vértice do pai.

Não se esqueça de escrever Antes de pôr em uso as ferramentas do Graphviz, é necessária a descrição do grafo a ser criado. Para gerar uma descrição, é preciso escrever um arquivo texto na linguagem dot, fácil de aprender. O exemplo 1 implementa um grafo simples e direcionado. A descrição começa definindo um grafo direcionado chamado G, com três vértices: pai, filho e filha. Diferentemente de várias outras linguagens de programação, não há necessidade de declarar os vértices explicitamente. As setas especificam quais vértices são conectados pelas arestas. Loops são permitidos. Essa linha apontaria para si mesma: pai -> pai

Um ponto-e-vírgula opcional termina cada linha. Como se pode ver pelos parênteses, a sintaxe se parece com a da linguagem C, que também é a fonte para a marcação dos comentários, com /* e */.

Ferramenta dot

Para converter essa descrição para uma figura, é necessário executar a ferramenta dot. A ferramenta utiliza o mesmo nome da linguagem de marcação.

Clovis

filhos

Clovisson Figura 3

Clovina

A descrição do exemplo 3 destaca o subgrafo com os filhos.

Além disso, o dot suporta PostScript (parâmetro -Tps), JPG, GIF, Fig, SVG e vários outros formatos mais ou menos exóticos. Ainda não há suporte para a saída direta em PDF, mas pode-se usar a ferramenta ps2pdf do Ghostscript para contornar essa limitação. É importante lembrar de especificar a opção -o junto com o nome do arquivo, caso contrário, a ferramenta direcionará a saída diretamente para o console. O mesmo se aplica ao parâmetro -T: sem ele, o dot simplesmente mostrará uma descrição em modo texto do grafo.

Alerta vermelho

Se a descrição não contiver instruções em contrário, o dot criará vértices ovais, com seus nomes estampados. Para mudar isso em nosso exemplo, vamos alterar o nome de pai, usando retângulos vermelhos cheios. A linguagem dot possui vários atributos que nos ajudam a implementar essas mudanças. Para modificar um atributo específico como cor ou texto, só é necessário atribuir um valor diferente a ele: color = red label = “Clovis Bornay”

É preciso separar por vírgulas os atributos, inserindo-os após o nome do vértice entre colchetes. No caso de pai, a sintaxe seria assim: pai [shape = box, style = filled, color = ➥red, label = “Clovis Bornay”];

Em seguida, devemos inserir essa linha em algum ponto entre as chaves no grafo. A abordagem recomendada é definir primeiro a aparência dos vértices, antes de prosseguir com a definição das arestas. Se isso funcionar para os vértices, é de se esperar que também funcione com as arestas que, assim como os primeiros, podem ser coloridas, ter seu estilo de linha alterado ou receber rótulos de texto. Mais uma vez, só é necessário inserir pares de valores entre colchetes à aresta em questão, como nesse caso: pai -> filha [style = bold, label = ➥“primogenito”, color = “blue”]

+ trabalho() : void 1..* 1 empresa + pagaSalário() : void Figura 4

Um pequeno diagrama UML definido no exemplo 4.

O exemplo 2 mostra uma árvore genealógica, e seus resultados após a execução pelo dot são mostrados na figura 2.

Um por todos

Alterar o formato de todos os vértices em um grande grafo pode parecer muito trabalhoso. A linguagem de marcação dot utiliza duas palavras-chave – node (vértice) e edge (aresta) – para facilitar a tarefa. Alterar os atributos das palavras-chave aplica as mudanças a todos os elementos do grafo. Por exemplo, o trecho de código: digraph G { node [shape = box]; ... }

atribui uma borda quadrada aos vértices – a menos que o vértice individual contenha instruções de atributos em contrário. A instrução edge faz o mesmo com as arestas.

Divisível

Subgrafos também são muito úteis. Podese usá-los para agrupar vértices que precisem ficar próximos, como mostra o exemplo 3.

Exemplo 1: exemplo.dot 01 digraph G { 02 /* O pai tem um filho e uma filha */ 03 pai -> filho; 04 pai -> filha; 05 }

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

61


TUTORIAL | Graphviz

Exemplo 2: exemplo2.dot

Exemplo 3: exemplo3.dot

digraph G { 02 pai [shape = box, style = filled, color = red, label=”Clovis Bornay”]; 03 filha [label =”Clovina”]; 04 filho [label = “Clovisson”]; 05 pai -> filho; 06 pai -> filha [style = bold, label = “primogenito”, color = blue]; 07 }

01 digraph G { 02 subgraph cluster_filhos { 03 style = filled; 04 color = lightgrey; 05 label = “Filhos”; 06 07 filha [label =”Clovina”]; 08 filho [label = “Clovisson”]; 09 } 10 11 pai [label = “Clovis Bornay”]; 12 13 pai -> filha; 14 pai -> filho; 15 }

Nesse caso, introduzimos um subgrafo que contém a filha e o filho. Para forçar o dot a destacar o agrupamento na saída, é necessário iniciar o nome com um prefixo cluster. Os outros atributos pertencem ao subgrafo. Nesse caso, eles definem a cor e o rótulo. A figura 3 mostra os resultados.

Classes

Até agora, os vértices do exemplo receberam apenas rótulo simples. Entretanto, o diagrama de classe UML referido anteriormente necessita de vértices com múltiplas subdivisões. Para essa tarefa com o dot, primeiro será necessário alterar as bordas para um modo especial – record: no [shape = record]

edge [headlabel = “1”, taillabel = “1..*” ]

O exemplo 4 mostra a descrição de um pequeno diagrama UML, enquanto a figura 4 apresenta seu resultado final.

Slots

Um record pode fazer mais. Os usuários podem utilizar as divisões do vértice para controlar as ligações com múltiplos vértices subseqüentes, como mostram o exemplo 5 e a figura 5. Os

valores entre < e > marcam pontos especiais, conhecidos como slots, dos quais as setas do diagrama saem ou chegam.

Sem direção

Grafos direcionados são a especialidade do dot; se você precisar de grafos não direcionados, é possível usar outra ferramenta da coleção – o neato. Novamente, a ferramenta espera descrições em dot; porém, ela só suporta a palavrachave graph, em vez de digraph. Arestas direcionadas são convertidas em não

Exemplo 4: Diagrama UML

A partir desse ponto do código, o dot fará algo especial com o rótulo desse vértice, acrescentando linhas verticais que irão subdividir o vértice em múltiplas seções: empregado [label = “{Empregado|+ salario : ➥int\l+ nome : string\l + trabalho() : ➥void\l}” ]

Os termos \l acrescentam uma nova linha, e os | inserem barras verticais. Isso oferece uma representação mais ou menos perfeita da classe UML; depois disso, apenas os rótulos e as arestas são necessários. Em UML, as

Pai

Filho

cardinalidades podem ser posicionadas em ambas as extremidades de uma aresta. Para fazer isso, pode-se usar os atributos headlabel e taillabel:

01 digraph G { 02 node [shape = record] /* linhas verticais no rótulo são desenhadas como linhas */ 03 edge [arrowhead = “none”, headlabel = “1”, taillabel = “1..*” ] 04 /* chaves significam: desenhe uma linha horizontal, e não uma barra vertical ➥(rotacione a caixa 90 graus) */ 05 empregado [label = “{Empregado|+ salario : int\l+ nome : string\l | + trabalho() ➥: void\l}” ] 06 empresa [label = “{Empresa| | + pagarsalario() : void\l}” ] empregado -> empresa 07 }

Quadro 2: Alternativas O programa Graphviz espera uma curta descrição do grafo, a qual é automaticamente convertida em um diagrama. Isso dá aos usuários poucas opções para influenciar o tipo de resultados obtidos. Se você aprecia os benefícios oferecidos por linguagens de descrição, mas preferiria ter um controle mais granular sobre a posição e a forma dos elementos individuais do grafo, talvez seja preferível um dos concorrentes do Graphviz. O Asymptote[3] e o GLE[4], em particular, merecem menção. Ambos podem ser acessados a partir de documentos LaTeX. As linguagens baseadas em XML, como o popular SVG[5], também seguem uma abordagem semelhante, entretanto, há muito pouco nessa linha de softwares disponível no momento.

Exemplo 5: Ligações complexas

Filha

Figura 5 Os slots do exemplo 5 suportam o tipo de vértices que precisam ser visualizados, como funções hash e vetores.

01 digraph G 02 { 03 vertice [shape = record]; 04 /* As “portas” são mostradas entre colchetes */ 05 pai [ label =”<left> | <center> Pai | <right>”]; 06 filho [ label =”<left> | <center> Filho | <right>”]; 07 filha [ label =”<left> | <center> Filha | <right>”]; 08 09 <a href=”center”>pai</a> -> “filho”: left; 10 <a href=”center”>pai</a> -> “filha”:right; 11 }

http://supertuxbr.blogspot.com 62

http://www.linuxmagazine.com.br


Graphviz | TUTORIAL

Exemplo 6: Grafo não direcionado 01 graph G { 02 servidor 03 04 servidor 05 servidor 06 servidor 07 servidor 08 }

cliente_meyer

[label = “Servidor principal Samba”]; -----

cliente_zica

cliente_bornay; cliente_trinta; cliente_zica; cliente_meyer;

Servidor Principal Samba

Exemplo 7: API em C do Graphviz 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

cliente_bornay

#include <gvc.h>

cliente_trinta

int main() { GVC_t *context; graph_t *graph; FILE *fp;

Figura 7

contexto = gvContext(); fp = fopen(“exemplo.dot”, “r”); grafo = agread(fp); /* Parsear o grafo */ gvLayout(contexto, grafo, “dot”); /*Cria o layout com o algoritmo do dot */ gvRender(contexto, grafo, “png”, stdout); /* Mostra o grafo em formato PNG */ /*Limpa */ gvFreeLayout(contexto, grafo); agclose(grafo); gvFreeContext(contexto); }

direcionadas usando dois traços (--). O exemplo 6, juntamente com as figuras 6 e 7, mostram o processo de criação de diagramas pelo neato. As ferramentas usadas pelo dot e neato utilizam algoritmos de desenho distintos. Enquanto o dot organiza os vértices hierarquicamente, o neato substitui as arestas por molas virtuais e utiliza gravidade simulada para calcular a distância correta entre os vértices, criando assim um layout simétrico. As ferramentas twopi e circo também merecem atenção, pois arranjam os vértices em um padrão circular. Para mais detalhes dos algoritmos empregados para esse fim, veja a documentação do Graphviz[2].

Filtros

Com alguma ajuda de pipes e filtros, a ferramenta de linha de comando dot também pode ser usada para fazer scripts, ou integrada a outros programas para Linux. Para isso, primeiro é necessário preparar a descrição do grafo em um buffer de tex-

to, e então passá-la para dot, e ao final recolher os resultados. Um script de shell poderia fazer assim, por exemplo: echo “digraph G {pai->filho; pai->filha;}” ➥| dot -Tpng >exemplo7.png

Nesse exemplo, a saída do comando dot é simplesmente redirecionada para um arquivo, mas, obviamente, poderia entrar outro script (de shell ou não) nesse ponto, para outros processamentos. O editor gráfico dotty funciona da mesma forma. Ele não é particularmente conveniente, mas permite que se use apenas o mouse para criar grafos. Se esses recursos não fornecerem todas as opções necessárias, sempre é possível criar um programa em C para acessar as funções da biblioteca do Graphviz. Ela possui funções convenientes para tratar arquivos de texto em formato dot, e para redirecionar os resultados para uma estrutura de dados projetada explicitamente com esse propósito. Também é possível manipular grafos na memória e mostrar seus resultados.

Servidor Principal Leo

O grafo não direcionado do exemplo 6, renderizado pelo neato.

O programa no exemplo 7 oferece uma rápida demonstração. Ele examina um arquivo texto com comandos dot, desenha um grafo com uma pequena ajuda do algoritmo do dot, e mostra como saída os resultados. Na realidade, o próprio dot é feito basicamente dessa forma. Há alguns outros exemplos de programas no diretório dot.demo que vem com o pacote do código-fonte. A página do Graphviz possui uma extensa referência da API. Caso você use a API para seu próprio desenvolvimento, favor notar que as bibliotecas estão licenciadas sob a Common Public License.

Conclusões

Uma vez que o usuário adquira familiaridade com a linguagem de descrição de grafos dot, as ferramentas do Graphviz serão muito apreciadas. É difícil encontrar uma forma mais veloz de se criar grafos. Graças aos pipes e filtros, o dot e companhia são fáceis de integrar a outras seqüências e scripts de shell. Além disso, se o pacote não agradar, pode-se procurar algo semelhante no quadro 2. ■

Mais Informações [1] Página do Graphviz: http://www.graphviz.org [2] Informações sobre os algoritmos usados pelo Graphviz (em inglês):

http://www.graphviz.org/ Documentation.php [3] Página do Asymptote: http://asymptote.sourceforge.net [4] Página do GLE: http://www.gle-graphics.org

cliente_bornay Figura 6

cliente_trinta

cliente_zica

O grafo não direcionado do exemplo 6, renderizado pelo dot.

cliente_meyer

[5] Especificações do formato SVG: http://www.w3.org/Graphics/SVG/

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

63


Backup de dados e sistema com Mondo e Mindi

SYADMIN

Ataque dos clones A simplíssima ferramenta Mondo prova que backups não precisam ser difíceis e trabalhosos. por Karl Deutsch

I

magine que você tenha passado dias configurando cada parte de seu sistema até que tudo estivesse funcionando perfeitamente. As partições estão exatamente como deveriam, os sistemas operacionais estão instalados, e tudo transcorre satisfatoriamente. Antes de efetivamente usar o sistema, talvez seja interessante fazer um backup dessa máquina dos sonhos, de forma a facilitar a restauração do sistema em caso de desastres. O utilitário de backup de código aberto Mondo[1] consegue fazer uma cópia de segurança das configurações do sistema operacional. O programa é capaz de fazer o backup de toda uma instalação de Linux, ou até mesmo um disco rígido inteiro – incluindo o particionamento e o gerenciador de inicialização – em um DVD, CD ou servidor NFS externo. Pode-se usar o Mondo para criar uma cópia do sistema que seja fácil de restaurar. Um dos objetivos da ferramenta é permitir mudanças no sistema subjacente – as-

sim como no hardware ou no sistema de arquivos – e ainda preservar a configuração anterior do mesmo. O Mondo permite encolher ou expandir partições, trocar o sistema de arquivos, mudar a atribuição de

Figura 1

dispositivos ou acrescentar volumes, e ainda consegue preservar o sistema anterior sem necessidade de uma reinstalação. O Mondo é feito para funcionar com outro utilitário, chamado Min-

O Mondo permite a criação de backups através de uma conveniente interface em modo texto.

http://supertuxbr.blogspot.com 64

http://www.linuxmagazine.com.br


Backup | SYSADMIN

Tabela 1: Parâmetros do programa Parêmtro

Efeito

O

Alvo de saída (confira a tabela 2)

d

Dispositivo ou diretório para a saída

s

Capacidade da mídia ou do arquivo a ser criado(a)

9

Taxa de compactação, de 0 (nenhuma) a 9 (compactação máxima)

E

Diretórios para omitir

V

Verificar o backup

p

Nome do arquivo(1)

g

Interface em modo texto(2)

D

Gravar apenas os dados alterados

I

Diretório de início

H

Ao restaurar, particionar o disco rígido e instalar o carregador de inicialização

l

Gerenciador de inicialização a ser usado, como o Grub

f

Disco rígido que contém o gerenciador de inicialização, como /dev/hda, por exemplo

(1) O nome padrão para arquivos ISO é mondorescue-numeroserial.iso. Se forem necessários múltiplos backups para máquinas diferentes, o parâmetro -p nome atribui o nome nome-numeroserial.iso aos arquivos. (2) Executar o Mondo com esse parâmetro o faz mostrar mensagens e prompts de statusem uma tela de texto baseada em diálogos. Esse modo não é adequado para inclusão de scripts em tarefas do cron.

di[1], que cria uma imagem de CD ou DVD com as informações de backup do sistema geradas pelo Mondo. Essa dupla pode ser usada em conjunto para salvar sua configuração do Linux em um CD ou DVD inicializável. Se um backup completo for grande demais para caber em um único disco, é possível acomodar seus dados ao longo de múltiplas imagens de disco.

armazena partições físicas individuais do disco rígido, diferentemente do Partition Image[2]; em vez disso, é possível copiar tanto um disco inteiro quanto diretórios individuais. Se uma mídia única não for suficientemente grande para abrigar todo o backup, o utilitário Mondo gravará os dados em múltiplas mídias.

Backup profissional

Os requisitos mínimos do Mondo são um PC com ao menos 128 MB de memória, 800 MB livres em disco e

O Mondo é uma solução de backup rápida e confiável, usada por empresas como Siemens, HP e IBM. Devido a sua capacidade de usar tanto a linha de comando quanto uma interface em texto para controlar o programa, até mesmo usuários de Linux menos experientes conseguem utilizar a ferramenta. O Mondo suporta LVM 1 e 2, RAID por software ou hardware, e os sistemas de arquivos Ext2, Ext3, JFS, XFS, ReiserFS e VFAT. Durante a etapa de restauração, é possível modificar a geometria do disco rígido e também o sistema de arquivos, caso seja necessário. O programa suporta ainda a migração de discos individuais para arranjos RAID, assim como a migração de sistemas RAID para discos individuais. Ele não

Requisitos

Figura 2

uma unidade para backup, que pode ser óptica (CD-R/RW, DVD-R/RW, DVD+R/RW), remota (um diretório NFS), ou simplesmente um pouco mais de espaço em disco. É recomendado um kernel 2.2.19 ou mais recente. As dependências de software do Mondo incluem os pacotes afio, gzip, mkisofs e busybox. A maioria das distribuições inclui esses softwares por padrão. Então é bem fácil instalá-los com o gerenciador de pacotes nativo de sua distribuição.

Teste e recuperação com Mindi O Mondo se baseia no Mindi para criar mídias inicializáveis. Pode-se usar o Mindi para criar um CD de recuperação com o kernel, módulos, ferramentas e bibliotecas do seu sistema. Antes de começar a usar o Mondo, provavelmente é uma boa idéia certificar-se de que o Mindi realmente cria um CD inicializável de testes para seu sistema. Para confirmar isso, entre com o superusuário e digite mindi para iniciar o processo. Vários prompts são mostrados. É interessante responder às perguntas confirmando o uso de seu próprio kernel, e negando o uso do LILO e a criação da inicialização e dos dados. Ao final, confirme a criação da imagem de CD inicializável. O aplicativo guardará a imagem mindi.iso em /root/images/mindi. Ainda como superusuário, queime a imagem em um disco com o comando cdrecord -v -data /root/ images/mindi/mindi.iso . Em seguida,

É possível incluir e excluir caminhos específicos dos alvos do backup.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

65


SYSADMIN | Backup

Tabela 2: Alvos de saída Parâmetro

Efeito

-Oi

Arquivo ISO

-Oc

CD-R

-Ow

CD-RW

-Or

DVD-R

-On

Unidade em servidor NFS

com quaisquer partições que porventura estejam montadas. Figura 3 Após criar uma imagem ISO, o Mondo pergunta se o Durante uma reusuário deseja criar um disco de inicialização. Esse disco só é necessário caso seus dados estejam numa cuperação interativa, unidade de fita ou num servidor NFS. pode-se usar a ferramenta integrada para inicie a máquina a partir do CD re- modificar a tabela de partições com cém-criado, assim já deve ser possí- fins de garantir que o Mondo recupevel acessar um console de texto no re somente as partições que possuam sistema de recuperação. backup. Se o processo de inicialização funcioÉ importante notar que, caso o genar, você conseguirá usar o utilitário de renciador de inicialização utilizado seja o Grub, é necessário acrescentar backup em seu sistema. os seguintes parâmetros adicionais ao comando:

Backup completo

Feche todos os aplicativos que não forem necessários no momento, para evitar a interrupção do backup – isso é particularmente importante para bancos de dados e conexões com estes. Crie um diretório como /tmp/iso/ para as imagens ISO. A seguir, execute o Mondo com privilégios de superusuário numa janela de terminal, usando o comando mondo-archive . Se não for fornecido qualquer parâmetro adicional, devese ver o texto em diálogos conforme a figura 1. A linha de comando é bem mais flexível. O exemplo a seguir mostra como usar a maior compressão possível para arquivos ISO (-9) e criar um arquivo de 650 MB ou menos no diretório /tmp/ iso/. O comando não faz backup dos diretórios /proc/, /tmp/ e /home/. Como superusuário, digite: mondoarchive -Oi -d /tmp/iso -s 650m -0 -H ➥-E /proc -E /tmp -E /home

Veja mais detalhes nas tabelas 1 e 2. Ao ser iniciado, o Mondo analisa sua máquina, e então cria os arquivos ISO com o backup completo. Se o disco de sua máquina possuir múltiplos sistemas em partições diversas, o Mondo apenas salvará aquele pelo qual ele foi chamado, juntamente

-l GRUB -f /dev/hda

Também é fundamental substituir

/dev/hda pelo disco que contém o setor

de inicialização. Depois, o Mondo pergunta se o usuário deseja criar um disco de inicialização (figura 3), que só é necessário caso seus dados se encontrem numa unidade de fita ou num servidor NFS. Em seguida, grave seus arquivos ISO em um CD ou DVD; é possível iniciar a partir da primeira mídia mais tarde.

Evitando a corrupção Apesar de o problema presente no utilitário de backup Mondo não ter gerado arquivos corrompidos desde maio de 2000, ainda é importante verificar seus arquivos em vez de simplesmente confiar na sorte. Para checá-los, inicie seu sistema a partir do primeiro CD ou DVD de backup, ou pelo disco de inicialização. No prompt, digite compare, siga as instruções que apare-

Figura 4

cem na tela e espere os resultados da comparação. O Mondo registra as mudanças no arquivo /tmp/changed.txt; pode-se esperar diferenças em arquivos dinâmicos, como os de registro, e também nas entradas em /var/. Se não houver discrepâncias incomuns, pode-se concluir que o backup está correto.

Recuperação

Após inserir um novo disco, é necessário restaurar o sistema completo. Não importa para o Mondo se a capacidade total do novo disco é maior ou menor do que o disco original, contanto que haja espaço suficiente. Iniciando a partir da primeira mídia (CD, DVD ou disquete), basta digitar o comando restore no prompt de inicialização para restaurar o sistema. Se for especificado o parâmetro -H no estágio de backup, o Mondo fará automaticamente o particionamento e a formatação do disco, e instalará também o gerenciador de inicialização no registro mestre de inicialização (MBR, ou Master Boot Record). Para personalizar a restauração, basta omitir essa opção, formatar o disco interativamente, e então recuperar os

Com o Mondo, pode-se salvar diretórios individuais, como seu diretório home. A opção -D restringe a ISO aos dados que tenham sido modificados.

http://supertuxbr.blogspot.com 66

http://www.linuxmagazine.com.br


Backup | SYSADMIN

diretórios e arquivos individuais conforme necessário. Insira o próximo disco quando for pedido, e então remova a mídia final, e reinicie seu sistema.

Salvando seu diretório home Para criar um backup inicial de seu diretório home, /home/nome_do_usuario, é preciso tornar-se superusuário e digitar o seguinte comando: mondoarchive -Oi -d /tmp/iso -s 4200m -9 ➥I /home/nome_do_usuario Figura 5

Obviamente, é necessário substituir

nome_do_usuario pelo nome do seu usuá-

rio (figura 4). É interessante queimar os arquivos ISO com seus dados de usuário em um DVD. O Mondo pede que seja especificado o tamanho da imagem ISO. Após navegar com sucesso pelo primeiro backup, pode-se usar a opção -D para rodadas sucessivas: mondoarchive -Oi -d /tmp/iso -s 4200m -9 ➥D -I /home/nome_do_usuario

Um home para chamar de seu Para restaurar seu diretório home, inicie a partir do primeiro disco e, no prompt de inicialização, digite interactive. Nos prompts que se seguirão, responda “não” às consultas sobre particionamento, formatação e recuperação completa do disco. Em seguida, digite o caminho para seu diretório home quando for perguntado qual caminho deve ser restaurado. Ao ser perguntado a respeito da instalação de um gerenciador de inicialização, responda negativamente e espere a recuperação ser finalizada, removendo, enfim, o último disco, e reiniciando a máquina.

O Mondo permite que se especifique um nível de compactação para o arquivo.

Backups agendados

O Mondo geralmente faz o backup de dados e sistemas no modo inerativo. Se for omitido o parâmetro -g ao se iniciar o programa, ele será executado sem interação com o usuário. O Mondo suporta tarefas do Cron em modo interativo, embora esse uso só faça sentido em condições especiais, como: ➧ quando apenas uma mídia for necessária para o backup, ou ➧ quando o backup estiver sendo feito num diretório no disco ou num servidor NFS. Para usar a tarefa do Cron de forma interativa, é necessário um macete, usando o At e o multiplexador de terminais Screen, conforme consta na página 22 do manual do Mondo [3] . Caso a MBR de seu disco falhe, inicie a partir da primeira mídia. Digite expert no prompt de inicialização e espere o programa iniciar. O comando para recuperar a MBR é mondorestore -mbr.

Futuro

O Mondo elimina as dores de cabeça do backup de sistemas. O abrangente manual possui mais exemplos de apli-

Quadro 1: Windows Apesar de o Mondo ter sido originalmente desenvolvido para fazer backup de sistemas Linux, também é possível utilizá-lo em sistemas Windows. No entanto, deve-se estar atento às seguintes restrições: ➧ Windows 95/98/ME: As partições precisam ser montadas primeiro, antes do backup, como as partições Linux. ➧ Windows NT/2000/XP: O Mondo restaura partições NTFS em arquivos grandes. É necessário especificar a unidade que abriga a partição WIndows através da linha de comando, usando o parâmetro -x, como em -x /dev/hda1, por exemplo.

cação ( [3] e [4]). As FAQ e listas de email também são muito úteis caso seja preciso solucionar algum problema específico. Caso seja necessário migrar o tipo de disco de IDE para SATA ou de SCSI para SATA durante uma restauração, o Mondo auxiliará nessa tarefa. Um guia escrito por François-Xavier Horel[5] explica como fazer isso. Além disso, existe suporte profissional para o Mondo. Se o Mondo não satisfizer totalmente suas necessidades, talvez valha a pena averiguar o Mkcdrec (Make CD-ROM Recovery) e o Rear (Relax & Recover). ■

O autor Karl Deutsch é autor de “Linux para administradores de Windows”, professor de TI e proprietário do website it-works.co.at. Karl já utilizou várias distribuições Linux em seu trabalho cotidiano desde 1997.

Mais Informações [1] Mondo e Mindi: http://www.mondorescue.org [2] Partition Image: http://www.partimage.org [3] Manual do Mondo (PDF): http://www.mondorescue.org/ docs/mondorescue-howto.pdf [4] Documentação do Mondo: http://www.mondorescue. orgdocs.shtml [5] François-Xavier Horel, “Linux image deployment from SCSI server to SATA server”: http://www.mondorescue.

org/docs/HOWTO-_Deploy_Linux_ from_SCSI_to_SATA.pdf

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

67


SYSADMIN Bash versus Powershell

Embate das shells A Powershell, da Microsoft, baseia-se no framework .NET. Mas isso supera as funcionalidades do Bash?

por Marcus Nasarek

T

anto o Bash quanto a Powershell, apresentada ao mundo através do novo sistema operacional da Microsoft, incluem comandos para navegar através dos diretórios, gerenciar arquivos e chamar outros programas. A administração do sistema é uma importante função da shell, e os dois representantes comparados neste artigo são equipados para ajudar a gerenciar sistemas a partir da linha de comando. Enquanto o Bash normalmente depende de uma combinação de novas ferramentas e utilitários clássicos do Unix, a Powershell possui seu próprio conjunto de programas de linha de comando. O Windows se refere aos comandos da Powershell como cmdlets. O cmdlet chamado Get-Process é o equivalente ao ps, e o Get-Content corresponde ao less. A Powershell tem diferenças significativas em relação às shells de comando presentes nas versões anteriores do Windows. Neste artigo mostramos

como a Powershell do Windows Vista se compara ao Bash. Para suportar o controle de programas, uma shell precisa de elementos para execução condicional. Os termos for e while avaliam uma variável para suportar um número definido de iterações. O quadro 1 compara a saída de um contador com for na Powershell e no Bash. Ambas as shells são semelhantes com relação ao controle de fluxo com if e switch. A definição de funções, o uso de variáveis de ambiente, a definição de escopos, o uso de expressões regulares e a avaliação do valor de retorno dos programas são semelhantes nos dois sistemas.

Permissão limitada

Uma diferença inicial entre a Powershell e o Bash se mostra quando um script é executado. A Powershell não executa arquivos de script por padrão, e portanto só suporta o uso interativo. Entretanto, a shell da Microsoft roda

scripts que tenham sido assinados digitalmente. A assinatura digital identifica o autor do script, pois essa é a única pessoa capaz de criar a assinatura por meios digitais. Aceitar o certificado de assinatura do autor significa que o usuário merece sua confiança.

Quadro 1: Laços Um laço for na Powershell: PS:> for ($i=1;$i -le 3;$i++) { Write-Host $i } 1 2 3 PS:> O mesmo laço no Bash: bash[~]$ for ((i=1;i<=3;i++)); do echo $i; done 1 2 3 bash[~]$

http://supertuxbr.blogspot.com 68

http://www.linuxmagazine.com.br


Bash e Powershell | SYSADMIN

Exemplo 1: Saída de Get-Member 01 02 03 04 05 06 07 08 09 10 11 12 13 14

PS:> Get-Content Textdatei.txt | Get-Member TypeName: System.String Name MemberType ------------Clone Method CompareTo Method Contains Method CopyTo Method ... Length Property

Definition ---------System.Object Clone() System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB) System.Boolean Contains(String value) System.Void CopyTo(Int32sourceIndex, Char[] destination, Int32 destinationIn...

PS:>

A Powershell não executa nenhum script “desconhecido”. Para executar um script sem assinatura, é necessário mudar a política de execução para RemoteSigned (assinado remotamente) na linha de comando, assim: PS:> Set-ExecutionPolicy RemoteSigned

Esse comando ordena que a Powershell aceite todos os scripts locais. Caso os dados tenham sido baixados, ou se tiverem sido anexados a um email, a shell continuará insistindo com relação à assinatura. A capacidade de evitar a execução de comandos de fontes externas é um novo recurso de segurança, e vírus em scripts como o Love Letter[1] perdem sua virulência. De forma bastante diferente, o Bash não depende apenas de assinaturas digitais para avaliar as permissões de execução de um script. Em vez disso, as permissões do sistema de arquivos determinam se o script pode ser executado. As duas shells compartilham um número surpreendente de recursos na forma como lidam com a configuração do sistema. Uma novidade no mundo do Windows, contudo, é a forma como sua shell trata tudo como um sistema de arquivos, navegando não apenas nos sistemas de arquivo e nas unidades, mas também no temível Registro, o armazém de certi-

ficados e as variáveis de ambiente. Podese copiar, renomear e mover valores do Registro da mesma forma simples como se faz com arquivos em uma unidade de armazenamento. A Powershell se refere a esses sistemas de arquivo virtuais como Providers (provedores), implementando, então, uma filosofia que o Linux sempre ofereceu no Bash: “tudo é um arquivo”.

Encaminhamento

A ferramenta mais poderosa da Powershell é o pipe, que suporta a passagem de valores ordenada, permitindo assim que se use a saída de um comando como entrada de outro. O Bash evidentemente também suporta pipes, mas não exige nada dos arquivos de entrada e saída. Ele confia na capacidade do próximo comando em fazer algo de útil com a saída do comando anterior. Os objetos podem ser consultados com o comando Get-Member, que gera como saída os elementos e funções do objeto, como mostra o exemplo 1. Por exemplo, o comando: PS:> Get-Content Arquivotexto.txt | Sort { ➥$_.Length }

pemite que se ordene as linhas de um arquivo texto de acordo com a propriedade Length (comprimento) do objeto.

Exemplo 2: Mostra-LinuxRSS.ps1 01 02 03 04 05 06 07 08 09 10 11 12 13

# Show-RSS.ps1 # Declaracao de variaveis para a URL $feed=”http://rss.news.yahoo.com/rss/linux”) Write-Host -ForegroundColor “green” “RSS-Feed: “ $feed # Baixar o feed RSS $wco = New-Object System.Net.WebClient $rss = [xml]$wco.DownloadString($feed) # Mostrar o titulo Write-Host -ForegroundColor “red” $rss.rss.channel.title # Mostrar o formulario pequeno $rss.rss.item | Select-Object title,description | format-table # Mostrar titulo e descricao das entradas $rss.rss.channel.item | Select-Object title,pubDate,description | format-list

Apesar de a passagem de dados ser um pouco mais complexa, essa orientação a objetos ajuda a padronizar as operações, e suporta o tratamento de estruturas de dados complexas. O Bash não pode competir nesse ponto; em vez disso, ele utiliza as capacidades de programas externos para lidar com estruturas de dados. Por exemplo, o Bash precisa de um parser de XML externo, como o Saxon ou o Xalan-J, para examinar arquivos XML. O exemplo 2 é um pequeno script de Powershell que carrega um feed RSS da Internet na forma de um arquivo XML. O script define a função Mostra-LinuxRSS, que obtém os feeds RSS atuais.

Conclusões

De uma forma, a Powershell se baseia no conceito do Unix segundo o qual vários pequenos utilitários são melhores que um único e grande programa. Ao mesmo tempo, ela adota uma abordagem orientada a objetos que simplifica a composição de grandes projetos ao custo de uma curva de aprendizado mais íngreme. O maior problema com objetos é a necessidade de investir muito tempo para descobrir de qual função ou objeto se precisa. O cmdlet Get-Member provavelmente verá um uso intensivo na Powershell. O Bash é útil como ferramenta simples e direta para a maioria das tarefas cotidianas. Se houver a necessidade de se utilizar estruturas de dados mais complexas, pode-se lançar mão de linguagens mais complexas, como Python, Perl, Ruby, Tcl... ■

Mais Informações [1] Alerta do CERT CA-2000-04 “Love Letter Worm”:

http://www.cert.org/ advisories/CA-2000-04.html

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

69


PROGRAMAÇÃO Os algoritmos da ferramenta diff

Qual é a diferença? O diff busca diferenças entre duas versões de um arquivo. Mostraremos como o programa as encontra sem afetar os recursos do sistema. por Andreas Romeyke

P

ara usuários da linha de comando, descobrir as diferenças entre dois arquivos de texto é fácil: basta um simples comando, como diff versao1. txt versao2.txt. Entretanto, examinando mais de perto, parece que o programa necessitaria de grandes quantidades de memória e alguns algoritmos engenhosos para comparar arquivos. Este artigo investiga como o diff consegue encontrar semelhanças e diferenças em arquivos de vários megabytes sem consumir todos os recursos do sistema.

r

t

o

a 17 0 19 n 4 13 6 o 3 14 5

14 1 0

Figura 1

a

A visão de matriz facilita a visualização das coincidências (valores zero), apesar de a posição dos caracteres ter sido alterada entre os dois arquivos.

Distância de edição

Toda cadeia de caracteres pode ser transformada em outra mediante a inserção, remoção ou substituição de caracteres individuais. Um possível método para se converter rato em ano seria efetuar as seguintes alterações: rato -> ato -> ao-> ano. Porém, uma solução alternativa com menos passos intermediários seria: rato -> ato -> ano. O menor número de passos necessários para uma alteração oferece uma métrica para avaliarmos a similaridade de duas cadeias de caracteres. Essa métrica

é chamada de Métrica de Levenshtein, ou distância de edição, e esse método é a base usada pelo diff para marcar alterações. Em aplicações práticas, a maior parte dos arquivos permanecerá inalterada na maioria das comparações. Portanto, o primeiro passo é excluir os trechos idênticos. Para encontrar as alterações, mesmo que estejam diferentes do estado original, é necessário organizarmos o texto em uma matriz, como mostra a figura 1. Os números da tabela se referem às diferenças entre os valores, em byte, dos caracteres individuais. Assim, um zero representa um

Quadro 1: Programação dinâmica A programação dinâmica é um conceito importante na ciência da computação, e freqüentemente representa a melhor abordagem para se resolver problemas de otimização. Em muitos casos, é mais fácil desmembrar um problema, resolver suas sub-tarefas e usar os resultados num outro passo de processamento. Calcular potências é um exemplo simples que data da época em que os recursos computacionais eram escassos: para calcular a oitava potência de um número, podese desmembrar o cálculo n*n*n*n * n*n*n*n em passos intermediários de ((n*n) * (n*n) * (n*n) * (n*n)). Se forem armazenados temporariamente os resultados de (n*n) e ((n*n) * (n*n)), serão necessárias apenas três multiplicações, em vez de sete.

http://supertuxbr.blogspot.com 70

http://www.linuxmagazine.com.br


Diff | PROGRAMAÇÃO

a

s

f 5 o 14 s 18 s 18 a 0

13 4 0 0 18

Figura 2

s

a

13 5 4 14 0 18 0 18 18 0

r 12 3 1 1 17

Trechos que casam são visíveis como diagonais de zeros paralelas à diagonal principal da matriz.

a

d

i

a

s

s 18 a 0 i 8 d 3 a 0

15 3 5 0 3

10 8 0 5 8

18 0 8 3 0

0 18 18 15 18

Figura 4

Palíndromos (caracteres com ordem invertida) aparecem na matriz como diagonais que vão do canto superior direito até o canto inferior esquerdo.

Exemplo 1: Busca da LCS 01 sub lcs { 02 my $refmatrix=shift; 03 my $refxlst=shift; 04 my $refylst=shift; 05 my $m=scalar @$refxlst-1; 06 my $n=scalar @$refylst-1; 07 foreach my $i (1 .. $m) { 08 foreach my $j (1 .. $n) { 09 if ($refxlst->[$i] eq $refylst->[$j]) { 10 $refmatrix->[$i]->[$j] = $refmatrix->[$i-1]->[$j-1]+1; 11 } elsif ($refmatrix->[$i-1]->[$j] >= $refmatrix->[$i]->[$j-1]) { 12 $refmatrix->[$i]->[$j] = $refmatrix->[$i-1]->[$j]; 13 } 14 else { 15 $refmatrix->[$i]->[$j] = $refmatrix->[$i]->[$j-1]; 16 } 17 } 18 } 19 return $refmatrix; 20 }

r a t o Figura 3

r

t

a

o

0 17 2 3

2 19 0 5

17 0 19 14

3 14 5 0

Trocas de caracteres aparecem na matriz como diagonais de zeros interrompidas. Os caracteres trocados (em amarelo) localizam-se em uma linha a 90 graus da diagonal.

caractere inalterado. A coincidência (também chamada de “casamento”) mais longa é chamada de maior subseqüência comum, ou LCS, na sigla em inglês. A distância de edição pode ser deduzida a partir do comprimento da LCS, aplicando-se a seguinte fórmula: d(X, Y) = n + m - 2 * |LCS|, onde X = x_1 … x_n e Y = y_1 … y_m. Numa matriz como essa, as modificações são fáceis de detectar: na comparação entre assar e fossa (figura 2), os zeros (casamentos) localizam-se ao longo de uma linha descendente paralela à diagonal principal da matriz (aquela que vai do canto superior esquerdo até o canto inferior direito). Trocas (rato para rtao, figura 3) são mostradas como interrupções na matriz, com os zeros a 90 graus da diagonal principal, atravessando seu centro. Palíndromos (ordem dos caracteres invertida) aparecem como uma seqüência de valores zero, desde o canto superior direito até o inferior esquerdo (diagonal secundária), na matriz (figura 4).

Otimização durante o uso O tamanho da matriz depende do comprimento dos textos comparados. Se forem usados dois arquivos de 10 KB, o número de comparações torna-se surpreendentemente grande: 10 mil vezes 10 mil, totalizando 100 milhões, o que significa que são necessários 100 MB de memória RAM apenas para armazenar a matriz. Buscar casamentos exige ainda mais memória. Processos computacionais que calculam valores repetidamente podem ser otimizados. A programação dinâmica (quadro 1) reduz o consumo de memória

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

71


PROGRAMAÇÃO | Diff

Exemplo 2: Backtracking 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

# efetua o backtracking numa matriz lcs sub backtracking_lcs { my $refmatrix=shift; my $ref_xlst=shift; my $ref_ylst=shift; my @lcs; my $x=scalar @$ref_xlst -1; my $y=scalar @$ref_ylst -1; while ($y>0 && $x>0) { my $valor_real=$refmatrix->[$x]->[$y]; my $x_real=$x; if ( ($refmatrix->[$x-1]->[$y-1] >= $refmatrix->[$x-1]->[$y]) && ($refmatrix->[$x-1]->[$y-1] >= $refmatrix->[$x]->[$y-1]) ) { # seguir para a esquerda e para cima $x--; $y--; } elsif ($refmatrix->[$x-1]->[$y] >= $refmatrix->[$x]->[$y-1]) { # seguir para a esquerda $x--; } else { # seguir para cima $y--; } # verificar se o valor mudou, e entao inserir (push) em @lcs if ($valor_real > $refmatrix->[$x]->[$y]) { push @lcs, $x_real; } } @lcs=reverse @lcs; # eh reverse por causa do backtracking return \@lcs; } # imprimir a matriz lcs sub print_lcs { my $ref_matrix=shift; my $ref_xlst=shift; my $ref_ylst=shift; print “LCS: ‘”; foreach my $i (@{backtracking_lcs($ref_matrix,$ref_xlst,$ref_ylst) }) { print $ref_xlst->[$i]; } print “’\n”; }

e economiza tempo computacional, pois mantém baixo o número de comparações ao comparar duas versões de um texto em uma matriz. Isso é possível porque, em vez de armazenar a diferença em bits entre os dois caracteres, a matriz mostrada na figura 5 guarda o número de caracteres que casam, desde o início da cadeia de caracteres. O

t e e r Figura 5

0 0 0 0 0

t

i

e

r

0 1 1 1 1

0 1 1 1 1

0 1 2 2 2

0 1 2 2 3

Em vez de usar as distâncias entre os valores dos caracteres, é mais eficiente mostrar o comprimento das subseqüências na análise inicial.

exemplo 1 mostra o código em Perl usado para implementar essa técnica. Usando os valores mostrados na figura 5, um algoritmo de backtracking pode rapidamente determinar a maior subseqüência comum em uma cadeia de caracteres: ➧ Comece com o valor máximo. Selecione a maior entrada acima e à esquerda, ou à esquerda, ou acima da posição atual; ➧ Se houver múltiplas entradas com valores iguais, use o caminho acima e à esquerda; ➧ Percorrendo a matriz, a LCS é encontrada se ocorrerem múltiplas entradas com o mesmo valor máximo. A figura 6 mostra o caminho que esse algoritmo percorre ao longo da matriz. O exemplo 2 implementa o algoritmo de comparação em Perl. Para permitir que o script termine corretamente, a cadeia de caracteres deve conter uma seqüência de valores nulos no início, como mostrado nas figuras 5 e 6.

Não é necessário acrescentar muito ao algoritmo discutido na última seção para mostrar as diferenças entre dois arquivos ou cadeias de caracteres como o diff. Sempre que o caminho de volta ao longo da matriz mudar de direção para cima ou para a esquerda, um caractere terá sido deletado ou inserido na nova versão. O script do exemplo 3 detecta essas mudanças. O laço while nas linhas 43 e 47 assegura que o algoritmo leve em consideração os caracteres representados por zeros na matriz. Apesar de a programação dinâmica evitar cálculos repetitivos, os desenvolvedores do diff para Unix (depois conhecido como diff-utils[1]) precisaram tirar uma nova carta da manga. A ferramenta diff foi criada principalmente para uso com código-fonte. Para conseguir lidar com tamanhos de arquivos comuns com a memória disponível nos computadores da década de 1980, o diff não compara letra por letra, e sim linha por linha.

http://supertuxbr.blogspot.com 72

http://www.linuxmagazine.com.br


Diff | PROGRAMAÇÃO

Exemplo 3: Algoritmo do Diff 01 # Efetua o backtracking na matriz lcs 02 sub backtracking_lcs { 03 my $refmatrix=shift; 04 my $ref_xlst=shift; 05 my $ref_ylst=shift; 06 my @lcs; 07 my $x=scalar @$ref_xlst -1; 08 my $y=scalar @$ref_ylst -1; 09 while ($y>0 && $x>0) { 10 my $valor_real=$refmatrix->[$x]->[$y]; 11 my $x_real=$x; 12 my $y_real=$y; 13 my $direcao_real; 14 if ( 15 ($refmatrix->[$x-1]->[$y-1] >= $refmatrix->[$x-1]->[$y]) && 16 ($refmatrix->[$x-1]->[$y-1] >= $refmatrix->[$x]->[$y-1]) 17 ) { # seguir para a esquerda e para cima 18 $x--; $y--; 19 $direcao_real=”ul”; 20 } elsif ($refmatrix->[$x-1]->[$y] >= $refmatrix->[$x]->[$y-1]) { # ir 21 ➥para a esquerda 22 $x--; 23 $direcao_real=”l”; 24 } else { # ir para cima 25 $y--; 26 $direcao_real=”u”; 27 } 28 # checa se o valor mudou, e entao insere (push) em @lcs 29 if ($valor_real > $refmatrix->[$x]->[$y]) { 30 # push @lcs, $x_real; 31 push @lcs, “(“.$ref_xlst->[$x_real].”)”; 32 } else { 33 if ($direcao_real eq “u”) {

Para isso, o programa primeiro calcula uma hash para cada linha, antes de calcular as diferenças entre as hashes na segunda etapa. O programa não precisa comparar as linhas letra por letra caso suas hashes sejam idênticas. Essa técnica economiza muita memória. Em 1986, Eugene Myers desenvolveu um algoritmo veloz que é a base da popular diff-utils[2]. As alternativas gráficas ao programa de linha de comando diff, como o Meld[3] e a ferramenta Kompa-

t e e r Figura 6

34 push @lcs,”+(“.$ref_ylst->[$y_real].”)”; 35 } elsif ($direcao_real eq “l”) { 36 push @lcs,”-(“.$ref_xlst->[$x_real].”)”; 37 } else { 38 push @lcs,”+(“.$ref_ylst->[$y_real].”)”; 39 push @lcs,”-(“.$ref_xlst->[$x_real].”)”; 40 } 41 } 42 } 43 while ($y > 0) { # pega o ultimo valor de ylst 44 push @lcs, “+(“.$ref_ylst->[$y].”)”; 45 $y--; 46 } 47 while ($x > 0) { # pega o ultimo valor de xlst 48 push @lcs, “-(“.$ref_xlst->[$x].”)”; 49 $x--; 50 } 51 @lcs=reverse @lcs; # invertido devido ao backtracking 52 return \@lcs; 53 } 54 55 # imprimir matriz lcs 56 sub print_diff { 57 my $ref_matrix=shift; 58 my $ref_xlst=shift; 59 my $ref_ylst=shift; 60 print “DIFF: ‘”; 61 foreach my $i (@{ backtracking_lcs($ref_matrix,$ref_xlst, ➥$ref_ylst) }) { 62 print $i; 63 } 64 print “’\n”; 65 }

re[4], do KDE, baseiam-se nessa técnica. Na realidade, apesar dos gráficos sofisticados, o Kompare de fato se baseia na ferramenta diff legada sob o capô.

Mais aplicações

A técnica empregada pelo diff é adequada não apenas para descobrir diferenças em códigos-fonte. Ao invés de encontrar diferenças, o algoritmo do diff também pode encontrar coincidências, mostrando assim a reutilização de código. Em projetos de software de grande escala, a ocorrência de muitas duplicatas de código é uma prova de sucesso na reutilização de código. Uma variante do tema do diff consegue até comparar notas tocadas com os tons produzidos por um músico. Se a matriz de distâncias (figura 4) mostrar a diferença entre as teclas pressionadas em um teclado (chamando-se, nesse Para encontrar a subseqüência mais longa, inicie pelo caso, de distância de divalor máximo da tabela e retorne (backtracking) pelos gitação), ela poderá ser campos, usando um algoritmo simples. usada para tentar adivi-

0 0 0 0 0

t

i

e

r

0 1 1 1 1

0 1 1 1 1

0 1 2 2 2

0 1 2 2 3

nhar o que uma pessoa queria escrever, no caso de erros de digitação. Uma aplicação interessante do diff encontra-se na biologia, mais especificamente na bioinformática, onde o algoritmo é utilizado para comparar seqüências de DNA e proteínas. ■

Mais Informações [1] Manual do GNU Diffutils, 2002: http://www.gnu.org/software/ diffutils/manual/diff.html [2] E. W. Myers, “An o(ND) difference algorithm and its variations” (em inglês): Algorithmica, 1(2), pg.251266, 1986; http://citeseer.ist.

psu.edu/myers86ond.html [3] Meld: http://meld.sourceforge.net [4] Kompare: http://www. caffeinated.me.uk/kompare

O autor Após graduar-se em Telecomunicações e Ciência da Informação, Andreas Romeyke agora trabalha como desenvolvedor de software para o Instituto Max Planck de Neurociências e Ciências Cognitivas, em Leipzig, Alemanha. Andreas é co-fundador do Linux Usergroup Leipzig, e também da Sociedade pela Aplicação de Sistemas Abertos.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

73


Algoritmos genéticos com o Acovea

PROGRAMAÇÃO

Evolução na compilação

Richard Wheeler (Zephyris, Wikipédia)

O Acovea imita a evolução de organismos vivos para definir as melhores opções de compilação do GCC. por Pablo Hess

O

papel de principal ferramenta de desenvolvimento de todas as distribuições Linux rende ao conjunto de compiladores GCC (GNU Compiler Collection)[1] um certo misticismo. Na verdade, é até compreensível que um compilador C, C++, Objective-C, Fortran, Ada e Java que funciona em mais de 20 plataformas seja tratado como algo sobrenatural. Especificamente em relação a C e derivados (Objective-C e C++), entre as tarefas altamente especializadas efetuadas pelo GCC, a mais freqüentemente encarada como “feitiçaria” é a otimização de código binário para uma determinada microarquitetura de processadores. Por exemplo, basta passar ao compilador as opções -march=athlon-xp -O2 para que seu código seja compilado de forma a rodar significativamente mais rápido em processadores AMD Athlon XP. Como demonstração, um pequeno aplicativo de benchmark baseado em uma aplicação científica, disponível em[2], roda em 463 segundos sem qualquer otimização, enquanto o tempo de execução com um bom nível de otimização (opções -march=athlon-xp -O3) é de 249 segundos. O extenso manual do GCC[3] aborda todas as opções de compilação, incluindo tanto as genéricas quanto aquelas específicas para cada arquitetura de processador (são 51 opções para a arquitetura x86, no GCC 4.1.2). Contudo, a simples existência dessas opções não facilita muito a vida do programador. A opção -finline-functions, por exemplo, pode tornar um código mais rápido, pois embute as funções no corpo do código, economizando com isso algumas chamadas de função. No entanto, ela também torna o código binário maior, o que pode fazê-la degradar o desempenho do programa quando usada em conjunto com outras opções. Chega-se então a um problema complexo: como saber quais funções interagem bem entre si, contribuindo positivamente para gerarem o código binário mais veloz possí-

vel? Os acadêmicos oferecem duas classes de soluções a esse tipo de problema: ➧ Busca exaustiva: todas as combinações possíveis seriam testadas, e escolheríamos a melhor dentre todas; ➧ Busca heurística: em vez de varrermos todo o espaço de possibilidades de combinações das opções disponíveis, seguimos algum tipo de algoritmo para eliminar de antemão aqueles que parecerem pouco promissores.

Entra Darwin

Embora a busca exaustiva pareça simples, ela geralmente demanda um tempo maior do que pessoas normais estão dispostas a esperar. Levando em conta as 51 opções existentes para um código C em x86, as combinações possíveis ultrapassam o número de 2×10^15 (ou dois quatrilhões). Se cada uma dessas opções levar um segundo para ser compilada e executada em nossos testes, levaremos algo como 71 milhões de anos para concluir as comparações. Como algumas dessas opções aceitam parâmetros, esse número cresce ainda mais.

Figura 1

Fica claro, então, que é saudável apelarmos para uma busca heurística. Na modesta visão do autor deste artigo, a solução mais interessante para isso é composta pelos algoritmos evolutivos, descritos no quadro 1. Aparentemente, os desenvolvedores do GCC concordam com essa colocação, pois essa é justamente a abordagem empregada por eles. O Acovea [4] (Analysis of Compiler Options Via Evolutionary Algorithms) é um programa desenvolvido pelo americano Scott Robert Ladd, da Coyote Gulch Productions. O software é empregado pelos desenvolvedores do GCC para determinar quais opções de compilação em C (comumente chamadas de CFLAGS) geram o código mais veloz. Além desse tipo de comparação, o autor ressalta a utilidade do software no teste de combinações pessimistas de opções, o que permite que se teste, de uma forma geral, a confiabilidade do próprio compilador. O principal resultado do uso do Acovea no desenvolvimento do compilador C livre é percebido nas opções genéricas de otimização -On, onde n é um número de 0 a 3, ou a letra s. Uma vez informada ao compilador

Mecanismo básico dos algorítimos genéticos

http://supertuxbr.blogspot.com 74

http://www.linuxmagazine.com.br


Acovea | PROGRAMAÇÃO

a arquitetura do processador, a opção -O1, ou simplesmente -O, ativa opções básicas de otimização, tornando o código menor (em tamanho) e mais veloz, porém sem alongar muito o tempo de compilação. Naturalmente, as opções -O2 e -O3 prolongam o tempo de compilação progressivamente, aumentando também o número de otimizações aplicadas ao código binário, e tornando-o mais e mais rápido. A opção -Os visa a diminuir o tamanho do executável. Baseada em -O2, ela não utiliza as opções que aumentem o tamanho do binário, e ainda aplica outras destinadas a reduzi-lo.

Exemplo 1: gcc412_core2.acovea <?xml version=”1.0”?> <acovea_config> <acovea version=”5.1” /> <description value=”gcc 4.1.2 Core 2 (ia32/x86)” version=”1.2.0-personalizado” /> <get_version value=”gcc -dumpversion” /> <quoted_options value=”false” /> <prime command=”gcc” flags=”-lrt -lm -std=gnu99 -O1 -march=nocona ACOVEA_OPTIONS -o ACOVEA_OUTPUT ACOVEA_INPUT” /> <baseline description=”-O1” command=”gcc” flags=”-lrt -lm -std=gnu99 -O1 -march=nocona -o ACOVEA_OUTPUT ACOVEA_INPUT” /> <baseline description=”-O2” command=”gcc” flags=”-lrt -lm -std=gnu99 -O2 -march=nocona -o ACOVEA_OUTPUT ACOVEA_INPUT” />

Funcionamento

Este artigo utiliza como base a versão mais recente do Acovea no momento de sua escrita, a de número 5.1.1. Caso essa versão não esteja disponível para sua distribuição em um pacote binário, é possível baixar seu código-fonte, assim como as bibliotecas necessárias (Libacovea, Libevocosm e Libcoyotl), em[5]. Compile e instale cada uma delas sobre /usr/local/ com o comando ./configure && make && make install. Em seguida, o mesmo procedimento pode ser seguido para o Acovea propriamente dito. Para utilizar o programa, basta digitar o comando runacovea com os parâmetros obrigatórios: um arquivo de configuração (localizado em /usr/local/share/libacovea/config/, ou /usr/share/libacovea/config/, no Gentoo) e um arquivo de benchmark (em /usr/local/ share/libacovea/benchmarks/, ou /usr/share/ libacovea/benchmarks, no Gentoo). O arquivo de configuração utiliza o formato XML, e é razoavelmente auto-explicativo. É importante ressaltar, no entanto, que seu formato mudou da versão 4.x para a 5.x. A tag <prime> define o comando e as opções que serão usados em todas as compilações. As tags <baseline>, por sua vez, informam ao Acovea quais níveis de otimização padrão serão usados para fins de comparação. Abaixo dessa seção, encontra-se cada uma das opções que o programa testará, separadas pelo menor nível de otimização que as ativa. Em seguida, há opções não incluídas em nenhum nível de otimização, além daquelas específicas para a arquitetura x86 e das relacionadas à opção -ffast-math. Há arquivos de configuração já construídos para determinados pares de versão do gcc/g++ e microarquiteturas de processador. O arquivo de configuração gcc40_pentium4.acovea, por exemplo, deve ser usado com o GCC 4.0 em processadores Pentium 4 ou derivados. Esse arquivo contém 86 opções, sendo que sete delas aceitam parâmetros. Voltando ao assunto

<baseline description=”-O3” command=”gcc” flags=”-lrt -lm -std=gnu99 -O3 -march=nocona -o ACOVEA_OUTPUT ACOVEA_INPUT” /> <baseline description=”-O3 -ffast-math” command=”gcc” flags=”-lrt -lm -std=gnu99 -O3 -march=nocona -ffast-math -o ACOVEA_OUTPUT ACOVEA_INPUT” /> <baseline description=”-Os” command=”gcc” flags=”-lrt -lm -std=gnu99 -Os -march=nocona -o ACOVEA_OUTPUT ACOVEA_INPUT” /> <!-- Lista de opções que serao “evoluidas” pelo ACOVEA --> <flags> ...

de combinações possíveis, o número aqui já ultrapassaria 2×10^26. É importante notar que o primeiro bloco de opções é constituído por negações das opções incluídas em -O1. Como a linha da tag prime já inclui a opção -O1, isso significa que o Acovea não parte de um ponto sem qualquer otimização; em vez disso, ele utiliza por padrão o nível -O1, apenas negando algumas opções incluídas neste, a cada rodada.

Benchmarks

Cada arquivo de benchmark, por sua vez, é o código-fonte de um pequeno programa em C. O Acovea utiliza o tempo de compilação e execução do benchmark escolhido para medir a velocidade com cada conjunto de opções. No entanto, os resultados provenientes de um único benchmark jamais devem ser considerados suficientes; em vez disso, sempre deve ser usado o maior número pos-

Quadro 1: Algoritmos Evolutivos A constatação do fenômeno da Seleção Natural por Charles Darwin influenciou diversas áreas da ciência, incluindo a Ciência da Computação. Os algoritmos evolutivos, também chamados de algoritmos genéticos, baseiam-se na idéia de sucessivas rodadas de descendência com modificações, seguidas da seleção dos sobreviventes (e conseqüentemente reprodutores), como mostra a figura 1. Partindo da população mais diversa possível – quatro indivíduos absolutamente diferentes –, os indivíduos reproduzem-se, gerando filhos que possuem uma mistura de suas características. Após a eliminação daquelas variações muito distantes de nosso alvo (cor azul e boca sorridente), a população remanescente entrará em novas rodadas de reprodução e seleção, produzindo, ao final, uma população quase inteiramente formada pelas características que selecionamos. Na figura 1 pode-se ver que todos os indivíduos da população final têm cor azul ou verde (que é semelhante ao azul), ou têm boca sorridente, sendo que muitos possuem ambas as características. No caso do Acovea, as características presentes em cada indivíduo não são a cor ou o formato da boca, e sim as opções de compilação. E a característica a ser selecionada é a velocidade de execução do programa. Aquelas combinações de opções que alcançarem maior velocidade de execução serão mantidas na população, enquanto as mais lentas serão eliminadas. A reprodução representa a mistura entre as opções de compilação de maior êxito, enquanto a mutação é responsável por perturbar isso, inserindo outras opções de compilação aleatoriamente entre as melhores combinações da população. Embora as mutações pareçam prejudiciais ao resultado final, elas têm grande importância para que a combinação de opções de compilação consiga atingir o melhor resultado possível, em vez de parar de evoluir ao atingir um valor simplesmente bom.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

75


PROGRAMAÇÃO | Acovea

Tabela 1: Detalhes dos benchmarks Benchmark

Descrição

almabench.c

Abusa das funções sin, cos e sqrt. Pode ser bastante beneficiado pela opção -ffast-math.

distbench.c

Efetua multiplicações maciças de matrizes. Não faz uso intensivo da unidade de ponto flutuante.

evobench.c

Emprega um algoritmo genético para minimizar uma função 2D.

fftbench.c

Resolve uma grande equação linear.

huffbench.c

Implementa a compressão Huffman. Como o código não está otimizado, é bastante sujeito às decisões do compilador.

linbench.c

Mais uma solução de uma grande equação linear.

treebench.c

Lida com árvores balanceadas.

sível de benchmarks, pois cada um deles se foca em apenas alguns recursos das CPUs modernas. A tabela 1 dá mais detalhes sobre cada um dos benchmarks. Com o comando runacovea -input /caminho/para/almabench.c -config /caminho/para/ gcc34_opteron.acovea, por exemplo, execu-

taremos uma longa carreira de testes. Por padrão, serão geradas cinco populações (o parâmetro -n pode definir outros números) de 40 indivíduos (parâmetro -p), que evoluirão por 20 gerações (opção -g), com os parâmetros demostrados no quadro 2.

Personalizando

Tudo isso faz sentido para os desenvolvedores do GCC. Foram justamente eles que verificaram que um determinado conjunto de opções, quando ativadas, produzem código um pouco menor e mais veloz, por isso todas elas são incluídas na opção -O1. Contudo, pode ser necessário um certo nível de personalização nas configurações. Por exemplo, o Acovea não traz arquivos de configuração para a nova arquitetura Core 2, da Intel, que ainda não possui uma opção adequada para o parâmetro -march do GCC 4.1.2. Se quisermos testar as opções de configuração do GCC 4.1.2 para esse processador (em 32 bits), utilizando a opção -march=nocona (recomendada pela Intel para esse processador), precisaremos criar nosso próprio arquivo de configuração, como no exemplo 1. Outros tipos de testes personalizados também podem ser interessantes, como o uso de -mtune ou -mcpu no lugar de -march, por exemplo. Um cenário onde isso pode ser útil é um parque de máquinas composto por múltiplas microarquiteturas, no qual a otimização com -march quebraria a compatibilidade dos binários com diversas máquinas. As opções -mtune (presente no GCC 4.0 em diante) e -mcpu (versões anteriores do GCC)

Exemplo 2: Início da saída do Acovea 01 Acovea completed its analysis at 2007 May 06 08:30:12 02 03 Optimistic options: 04 05 -fno-cprop-registers (2.366) 06 -fexpensive-optimizations (1.819) 07 -finline-functions (1.819) 08 -fno-function-cse (1.819) 09 -ftree-vectorize (2.366) 10 -mieee-fp (1.819) 11 12 Pessimistic options: 13 14 -momit-leaf-frame-pointer (-2.554) 15 -fforce-addr (-2.007) 16 -funroll-loops (-2.007) 17 -fbranch-target-load-optimize2 (-2.007) 18 -mfpmath=387 (-1.734) 19 -mfpmath=sse (-1.734)

ativam apenas as otimizações que não tornam o código binário resultante incompatível com outras microarquiteturas. Outra forma de personalização, que também pode ajudar a reduzir o tempo de execução do Acovea, é já partir de um nível seguro de otimização, como -O1. Como ressaltamos acima, o Acovea já parte do nível -O1, mas desfaz algumas otimizações através de opções de negação (especificadas na seção <flags> do arquivo de configuração). Para deixar de negar as opções incluídas em -O1, basta comentar as linhas referentes a elas, na seção <flags>. Um último exemplo de uso de opções personalizadas seria a eliminação das medições com -mfpmath=sse,387. De acordo com o manual do GCC, o uso dessa opção para aumentar o número de registros responsáveis pelo armazenamento de valores em ponto flutuante pode ter resultados imprevisíveis, pois o alocador de registros do compilador ainda não é capaz de fazer uma boa modelagem de unidades de ponto flutuante distintas. Para não utilizar essa opção, basta alterar a linha: <flag type=”enum” value=”-mfpmath=387|➥mfpmath=sse|-mfpmath=sse,387” />

para:

Ainda lento

O Acovea adota um algoritmo de alta eficiência para determinar o comportamento interativo das opções de compilação do GCC. No entanto, por se tratar de um problema complexo, mesmo uma solução heurística eficiente demanda longos tempos de execução. Para executar o Acovea com os parâmetros padrão (veja a tabela 1), passando por todos os benchmarks, geralmente são necessárias mais de 24 horas de processamento. É comum imaginarmos que os culpados sejam os arquivos de benchmark, possivelmente muito grandes. No entanto, qualquer processador moderno é capaz de compilar e executar um dos diminutos benchmarks (o maior binário ocupa 20 KB) em menos de seis segundos. Naturalmente, a duração dos testes depende do processador utilizado. Processadores de núcleos múltiplos e sistemas multiprocessados podem acelerar bastante os testes através da execução paralela de diferentes benchmarks, desde que o administrador tome o cuidado de garantir que apenas uma instância do Acovea esteja rodando em cada núcleo ou CPU.

<flag type=”enum” value=”-mfpmath=387|➥mfpmath=sse” />

Tamanho ou velocidade

O arquivo de configuração para processadores da arquitetura Core 2 com o GCC 4.1.2 está disponível para download em [6]. Um outro arquivo de configuração, esse destinado a descobrir qual a melhor opção a ser usada nos parâmetros -march e -mtune com essa arquitetura, pode ser baixado em [7].

Se o motivo do teste for avaliar o uso da memória, o Acovea também pode ser valioso. Existe a opção, embora não seja muito divulgada, de se utilizar o programa para otimizar, ou seja, minimizar, o uso de memória pelos códigos binários gerados. Para isso, é necessário utilizar a opção de linha de comando -size, como mostra o quadro 2.

http://supertuxbr.blogspot.com 76

http://www.linuxmagazine.com.br


Acovea | PROGRAMAÇÃO

Exemplo 3: Combinações de opções na saída do Acovea

Conclusão

Planejar as opções de compilação do GCC não é uma tarefa simples, e exige uma Acovea’s Common Options: enorme quantidade de trabagcc -lrt -lm -std=gnu99 -O1 -march=athlon-xp -fno-cprop-registers ... lho computacional. Os algoritmos genéticos empregados -O1: pelo Acovea são fundamentais gcc -lrt -lm -std=gnu99 -O1 -march=athlon-xp ... para estudar a melhor com-O2: binação de opções para seu gcc -lrt -lm -std=gnu99 -O2 -march=athlon-xp ... processador. Evidentemente, nem sempre é necessário (...) otimizar tão extremamente (4.09586) 25 Acovea’s Best-of-the-Best: ************************************************* seus programas, assim como 26 Acovea’s Common Options: ************************************* (3.10256) as próprias opções ótimas de 27 -O1: ************************************* (3.06374) compilação costumam ser 28 -O2: ************************************ (2.98601) diferentes entre programas 29 -O3: ********************************** (2.8677) distintos. 30 -O3 -ffast-math: ********************************** (2.85065) 31 -Os: ************************************************** (4.1257) Apesar de toda a “magia negra” que o GCC pode fazer, a eficiência de um programa tos – positivos e negativos – sobre a velocidade de execução dos binários. ainda depende primordialmente do proA saída do Acovea não é absoluta- Em seguida, o exemplo 3 especifica as gramador, e não do compilador. Porém, mente intuitiva. Isso ocorre porque combinações de opções que se destaca- utilizar de forma eficiente os recursos do o programa não é projetado para dar ram, com um gráfico do desempenho processador sempre será uma boa idéia, e um parecer definitivo sobre as opções de cada uma. Barras menores repre- um bom compilador faz toda a diferença de compilação, mas sim para calcular sentam binários mais velozes. nesse momento. ■ tendências. A interpretação dos resulPode-se ver que as opções -O3 -ffasttados fica totalmente a cargo do usu- math e -O3 obtiveram o melhor resultaMais Informações ário. O exemplo 2 mostra um trecho do, enquanto -Os gerou os binários mais [1] GCC, GNU Compiler Collection: da saída da execução do Acovea com lentos. As Common Options são aquelas http://gcc.gnu.org o benchmark huffbench.c. Nele, são presentes em todas as populações finais, mostradas as opções que causaram, ou seja, as comuns a todas as combina[2] Ziheng Yang, Speed2: http://abacus.gene.ucl.ac.uk/ individualmente, os maiores impac- ções “vencedoras”. 01 02 03 04 05 06 07 08 09 10 11

Acovea’s Best-of-the-Best: gcc -lrt -lm -std=gnu99 -O1 -march=athlon-xp -fno-thread-jumps ...

Saída

Quadro 2: Parâmetros do Acovea Além dos parâmetros obrigatórios -config e -input, é possível utilizarmos outros parâmetros para ajustar o funcionamento do Acovea. O parâmetro -p define o tamanho das populações. Isso regula o número de variações que competirão pelo melhor desempenho ao mesmo tempo. Quanto maior esse número, mais tempo o programa levará para ser executado. Enquanto isso, -n especifica o número de populações usadas pelo programa. Quanto maior for esse parâmetro, maior será o número de “melhores combinações” evoluindo paralelamente, o que é bom para o resultado final. Porém, o tempo de execução também cresce com esse número. O valor padrão para -g, o número de gerações, é 20, que deve ser um valor no mínimo bom. Quanto maior for esse número, mais confiável será o resultado final, que em contrapartida também levará muito mais para ser atingido. Os parâmetros -sr, -mr, -cr e -ir, todos definidos entre 0 e 1, determinam quanta variação será criada (ou mantida, dependendo do parâmetro) na população. Valores muito baixos dificultam a substituição de combinações de opções simplesmente boas por outras que sejam melhores. No entanto, se esses valores forem muito altos, combinações ótimas também poderão ser facilmente suplantadas por outras piores. Esses parâmetros não afetam o tempo de execução, e seus valores padrão são adequados na maioria dos casos.

software/speed2.tar.gz

[3] Manual do GCC.4.1.2: http://gcc.gnu.org/onlinedois/ [4] Acovea: http://www.coyotegulch. com/products/acovea/ [5] Download das bibliotecas do Acovea: http://www.coyotegulch.com/ products/ [6] Arquivo gcc412_core2.acovea: http://www.linuxmagazine.com.br/ arquivos/LM30/gcc412_core2.acovea [7] Arquivo gcc412_core2_opcoes.acovea: http://www.linuxmagazine. com.br/arquivos/LM30/gcc412_ core2_opcoes.acovea [8] Algoritmos genéticos, na Wikipédia (em inglês): http://en.wikipedia. org/wiki/Genetic_algorithm

A opção -no-scaling simplesmente não deve ser usada, pois desativa a normalização das medições, o que torna as comparações menos precisas.

O autor

-size deve ser aplicado quando se desejar otimizar não a velocidade de execução, e sim o espaço ocupado pelo código binário na memória. De forma semelhante, -retval é a opção certa quando o importante for o valor de retorno do programa.

Pablo Nehab Hess é editor da Linux Magazine e tem mestrado em genética. Após conhecer o Linux através da computação científica, interessou-se imediatamente pela administração de sistemas e redes, as quais praticou em alguns laboratórios na universidade.

Todas as execuções do Acovea com os mesmos parâmetros e o mesmo valor para -seed terão o mesmo resultado.

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

77


Linux.local

SERVIÇOS

O maior diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por Estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 2161-5400 ou anuncios@linuxmagazine.com.br

Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6

Empresa

Cidade

Endereço

Telefone

Web

85 3252-3836

www.f13.com.br

1 2 3 4 5 6

Ceará F13 Tecnologia

Fortaleza

Rua Coronel Solon, 480 – Bairro de Fátima Fortaleza - CE - CEP 60040-270

Linux Shopp

Vila Velha

Rua São Simão (Correspondência), 18 – CEP: 29113-120

27 3082-0932

www.linuxshopp.com.br

Megawork Consultoria e Sistemas

Vitória

Rua Chapot Presvot, 389 – Praia do Canto – CEP: 29055-410 sl 201, 202

27 3315-2370

www.megawork.com.br

✔ ✔

Spirit Linux

Vitória

Rua Marins Alvarino, 150 – CEP: 29047-660

27 3227-5543

www.spiritlinux.com.br

✔ ✔

✔ ✔

✔ ✔

Espírito Santo ✔ ✔

✔ ✔

Minas Gerais Instituto Online

Belo Horizonte

Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011

31 3224-7920

www.institutoonline.com.br

Linux Place

Belo Horizonte

Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000

31 3284-0575

corporate.linuxplace.com.br

✔ ✔

✔ ✔

Microhard

Belo Horizonte

Rua República da Argentina, 520 – Sion – CEP: 30315-490

31 3281-5522

www.microhard.com.br

✔ ✔ ✔

✔ ✔

TurboSite

Belo Horizonte

Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141

0800 702-9004

www.turbosite.com.br

✔ ✔

Paraná iSolve

Curitiba

Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000

41 252-2977

www.isolve.com.br

Mandriva Conectiva

Curitiba

Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430

41 3360-2600

www.mandriva.com.br

NSI Training

Rio de Janeiro

Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 21 2220-7055

www.nsi.com.br

Open IT

Rio de Janeiro

Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120

21 2508-9103

www.openit.com.br

Unipi Tecnologias

Campos dos Goytacazes

Av. Alberto Torres, 303, 1ºandar - Centro – CEP 28035-581

22 2725-1041

www.unipi.com.br

✔ ✔ ✔ ✔

Solis

Lajeado

Rua Comandante Wagner, 12 – São Cristóvão – CEP: 95900-000

51 3714-6653

www.solis.coop.br

✔ ✔ ✔ ✔ ✔

✔ ✔

✔ ✔ ✔ ✔

Rio de Janeiro

Rio Grande do Sul

DualCon

Novo Hamburgo

Rua Joaquim Pedro Soares, 1099, Sl. 305 – Centro

51 3593-5437

www.dualcon.com.br

Datarecover

Porto Alegre

Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003

51 3018-1200

www.datarecover.com.br

LM2 Consulting

Porto Alegre

Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140

51 3018-1007

www.lm2.com.br

Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193

51 3331-1446

Lnx-IT Informação e Tecnologia Porto Alegre

✔ ✔

✔ ✔

www.lnx-it.inf.br

✔ ✔

Plugin

Porto Alegre

Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 51 4003-1001

www.plugin.com.br

TeHospedo

Porto Alegre

Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008

51 3286-3799

www.tehospedo.com.br

✔ ✔

Ws Host

Arthur Nogueira

Rua Jerere, 36 – Vista Alegre – CEP: 13280-000

19 3846-1137

www.wshost.com.br

DigiVoice

Barueri

Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010

11 4195-2557

www.digivoice.com.br

✔ ✔ ✔

✔ ✔

Dextra Sistemas

Campinas

Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045

19 3256-6722

www.dextra.com.br

✔ ✔

São Paulo ✔

Insigne Free Software do Brasil Campinas

Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001

19 3213-2100

www.insignesoftware.com

Microcamp

Campinas

Av. Thomaz Alves, 20 – Centro – CEP: 13010-160

19 3236-1915

www.microcamp.com.br

PC2 Consultoria em Software Livre

Carapicuiba

Rua Edeia, 500 - 06350-080

11 3213-6388

www.pc2consultoria.com

✔ ✔ ✔

✔ ✔ ✔

Savant Tecnologia

Diadema

Av. Senador Vitorino Freire, 465 – CEP: 09910-550

11 5034-4199

www.savant.com.br

Epopéia Informática

Marília

Rua Goiás, 392 – Bairro Cascata – CEP 17509-140

14 3413-1137

www.epopeia.com.br

Redentor

Osasco

Rua Costante Piovan, 150 – Jd. Três Montanhas – CEP: 06263-270

11 2106-9392

www.redentor.ind.br

Go-Global

Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038

11 2173-4211

www.go-global.com.br

AW2NET

Santo André

Rua Edson Soares, 59 – CEP: 09760-350

11 4990-0065

www.aw2net.com.br

Async Open Source

São Carlos

Rua Orlando Damiano, 2212 – CEP 13560-450

16 3376-0125

www.async.com.br

Delix Internet

São José do Rio Preto

Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909

11 4062-9889

www.delixhosting.com.br

✔ ✔ ✔ ✔

✔ ✔ ✔ ✔ ✔ ✔

http://supertuxbr.blogspot.com 78

http://www.linuxmagazine.com.br


Linux.local | SERVIÇOS

Empresa

Cidade

Endereço

Telefone

Web

1 2 3 4 5 6

São Paulo (continuação) 4Linux

São Paulo

Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031

11 2125-4747

www.4linux.com.br

A Casa do Linux

São Paulo

Al. Jaú, 490 – Jd. Paulista – CEP 01420-000

11 3549-5151

www.acasadolinux.com.br

✔ ✔

Accenture do Brasil Ltda.

São Paulo

Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004

11 5188-3000

www.accenture.com.br

✔ ✔

ACR Informática

São Paulo

Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010

11 3873-1515

www.acrinformatica.com.br

Agit Informática

São Paulo

Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030

11 3255-4945

www.agit.com.br

✔ ✔

Altbit - Informática Comércio e Serviços LTDA.

São Paulo

Av. Francisco Matarazzo, 229, Cj. 57 – Água Branca – CEP 05001-000

11 3879-9390

www.altbit.com.br

AS2M -WPC Consultoria

São Paulo

Av. Tiradentes, 615, Ed. Santiago, 2º andar Bom Retiro – CEP: 01101-010

11 3228-3709

www.wpc.com.br

✔ ✔

✔ ✔

✔ ✔

Big Host

São Paulo

Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010

11 3033-4000

www.bighost.com.br

✔ ✔

Blanes

São Paulo

Rua André Ampére, 153 – 9º andar – Conj. 91 CEP: 04562-907 (próx. Av. L. C. Berrini)

11 5506-9677

www.blanes.com.br

✔ ✔ ✔

✔ ✔

Commlogik do Brasil Ltda.

São Paulo

Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000

11 5503-1011

www.commlogik.com.br

✔ ✔ ✔

✔ ✔

Computer Consulting Projeto e Consultoria Ltda.

São Paulo

Rua Vergueiro, 6455, Cj. 06 – Alto do Ipiranga – CEP: 04273-100 11 5062-3927

www.computerconsulting.com.br

✔ ✔

Consist Consultoria, Sistemas e Representações Ltda.

São Paulo

Av. das Nações Unidas, 20.727 – CEP: 04795-100

11 5693-7210

www.consist.com.br

Domínio Tecnologia

São Paulo

Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080

11 5017-0040

www.dominiotecnologia.com.br

EDS do Brasil

São Paulo

Av. Pres. Juscelino Kubistcheck, 1830 Torre 4 - 5º andar

11 3707-4100

www.eds.com

Ética Tecnologia

São Paulo

Rua Nova York, 945 – Brooklin – CEP:04560-002

11 5093-3025

www.etica.net

Getronics ICT Solutions and Services

São Paulo

Rua Verbo Divino, 1207 – CEP: 04719-002

11 5187-2700

www.getronics.com/br

✔ ✔ ✔ ✔ ✔

✔ ✔ ✔

✔ ✔

✔ ✔

Hewlett-Packard Brasil Ltda.

São Paulo

Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000

11 5502-5000

www.hp.com.br

✔ ✔ ✔ ✔

IBM Brasil Ltda.

São Paulo

Rua Tutóia, 1157 – CEP: 04007-900

0800-7074 837

www.br.ibm.com

iFractal

São Paulo

Rua Fiação da Saúde, 145, Conj. 66 – Saúde – CEP: 04144-020 11 5078-6618

www.ifractal.com.br

Integral

São Paulo

Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001

11 5545-2600

www.integral.com.br

Itautec S.A.

São Paulo

Rua Santa Catarina, 1 – Tatuapé – CEP: 03086-025

11 6097-3000

www.itautec.com.br

✔ ✔ ✔

Linux Komputer Informática

São Paulo

Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001

11 5034-4191

www.komputer.com.br

Linux Mall

São Paulo

Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001

11 5087-9441

www.linuxmall.com.br

Livraria Tempo Real

São Paulo

Al. Santos, 1202 – Cerqueira César – CEP: 01418-100

11 3266-2988

www.temporeal.com.br

Locasite Internet Service

São Paulo

Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000

11 2121-4555

www.locasite.com.br

Microsiga

São Paulo

Av. Braz Leme, 1631 – CEP: 02511-000

11 3981-7200

www.microsiga.com.br

Novatec Editora Ltda.

São Paulo

Rua Luis Antonio dos Santos, 110 – Santana – 02460-000

11 6979-0071

www.novateceditora.com.br

Novell América Latina

São Paulo

Rua Funchal, 418 – Vila Olímpia

11 3345-3900

www.novell.com/brasil

Oracle do Brasil Sistemas Ltda. São Paulo

Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170

11 5189-3000

www.oracle.com.br

Proelbra Tecnologia Eletrônica Ltda.

São Paulo

Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001 11 5052- 8044

www.proelbra.com.br

Provider

São Paulo

Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005

11 2165-6500

Red Hat Brasil

São Paulo

Av. Angélica, 2503, 8º andar Consolação – CEP: 01227-200

Samurai Projetos Especiais

São Paulo

SAP Brasil

São Paulo

Simples Consultoria

✔ ✔

✔ ✔ ✔ ✔ ✔

✔ ✔ ✔ ✔ ✔ ✔ ✔

✔ ✔ ✔

✔ ✔ ✔

✔ ✔ ✔ ✔

www.e-provider.com.br

✔ ✔

11 3124-6000

www.redhat.com.br

Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002

11 5097-3014

www.samurai.com.br

✔ ✔

Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000

11 5503-2400

www.sap.com.br

✔ ✔

São Paulo

Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010

11 3898-2121

www.simplesconsultoria.com.br

✔ ✔

Smart Solutions

São Paulo

Av. Jabaquara, 2940 cj 56 e 57

11 5052-5958

www.smart-tec.com.br

Snap IT

São Paulo

Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000

11 3731-8008

www.snapit.com.br

Stefanini IT Solutions

São Paulo

Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919

11 3039-2000

www.stefanini.com.br

Sun Microsystems

São Paulo

Rua Alexandre Dumas, 2016 – CEP: 04717-004

11 5187-2100

www.sun.com.br

Sybase Brasil

São Paulo

Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000

11 3046-7388

www.sybase.com.br

The Source

São Paulo

Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020

11 6698-5090

www.thesource.com.br

Unisys Brasil Ltda.

São Paulo

R. Alexandre Dumas 1658 – 6º, 7º e 8º andares – Chácara Santo Antônio – CEP: 04717-004

11 3305-7000

www.unisys.com.br

Utah

São Paulo

Av. Paulista, 925, 13º andar – Cerqueira César – CEP: 01311-916

11 3145-5888

Visuelles

São Paulo

Rua Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP 04455-310

Webnow

São Paulo

Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000

WRL Informática Ltda.

São Paulo

Systech

Taquaritinga

✔ ✔

✔ ✔

✔ ✔

✔ ✔

✔ ✔

✔ ✔ ✔

✔ ✔

✔ ✔

www.utah.com.br

✔ ✔

11 5614-1010

www.visuelles.com.br

✔ ✔

11 5503-6510

www.webnow.com.br

Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 11 3362-1334

www.wrl.com.br

Rua São José, 1126 – Centro - Caixa Postal 71 – CEP: 15.900-000

www.systech-ltd.com.br

✔ ✔

16 3252-7308

✔ ✔

http://supertuxbr.blogspot.com Linux Magazine #30 | Maio de 2007

79


SERVIÇOS

Calendário de eventos Evento

Data

Local

Website

Open Source Business Conference

22 e 23 de maio

San Francisco, EUA

osbc.com

IV Encontro de Software Livre do Amazonas

25 e 26 de maio

Manaus, AM

www.eslam.comunidadesol.org

Linux Tag 2007

30 de maio a 2 de junho

Berlim, Alemanha

www.linuxtag.org

3ª Semana do Software Livre da Universidade Federal do Ceará

6 a 9 de junho

Fortaleza, CE

www.sesol.ufc.br

OSS 2007

11 a 14 de junho

Limerick, Irlanda

oss2007.dti.unimi.it

Linux Day

23 de junho

São Paulo, SP

www.fiti.com.br

Latinoware 2007

13 e 14 de novembro

Foz do Iguaçu, PR

www.latinoware.org

Índice de anunciantes Empresa

Pág.

Celepar

15

Dextra

39

Easy

43

Fracto

02

Intel

84

Itautec

07

Linux New Media

11

Linux Park

83

Linux Solutions

77

Linux World

81

LPI

55

Microsoft

09

Plugin

13

Xandros

29

http://supertuxbr.blogspot.com 80

http://www.linuxmagazine.com.br


�������������������������������

���������������� ������

��������������������

�����������������

������

�����������������������

����������������������

������

��������������������

�����������������������

��������������

��������������������

����������������������

��������

�����������������������

�����������������������

����������

�������������������

�����������������������

�������

������������������������

������������������������

��������

������������������������������

���������������������

http://supertuxbr.blogspot.com �����������������������������������������������������������������

���������������������������


PREVIEW

Na Linux Magazine #31… DESTAQUE

SYSADMIN

Um groupware é um sistema baseado em computador que auxilia grupos de pessoas envolvidas em tarefas ou objetivos comuns, e que provê interface para um ambiente compartilhado. O principal mote para a adoção do groupware nas empresas é a sua capacidade de tornar o trabalho em grupo mais eficiente, diminuir o tempo gasto nas atividades conjuntas e diminuir o custo de realização das atividades que devam ter mais de um executante. O Linux e o Código Aberto marcam pontos nesse mercado competitivo, mostrando que os sistemas livres sabem entrar no ritmo da sua empresa quando a palavra-chave é colaborar, inclusive interagindo com soluções proprietárias ou transferindo informações, de maneira segura, via Internet. ■

Virtualização é uma palavra que vem ganhando importância nos últimos dois anos, a ponto de ser um dos pivôs do inusitado acordo entre Novell e Microsoft. A economia de espaço, a segurança operacional e as facilidades de administração são inegáveis. Um produto de código aberto, o VirtualBox, virtualizador muito parecido ao Vmware, traz o que há de melhor em sistemas virtualizados, inclusive no Ubuntu, a custo zero. ■

Groupware

Computador virtual

ANÁLISE

Amigo do pingüim

Software profissional dedicado a análises avançadas, tanto lineares quanto não-lineares, de processos e projetos de Engenharia, o Abaqus é famoso em todo mundo como sinônimo de ferramenta técnica de alta produtividade. O que pouca gente sabe, todavia, é que o Abaqus é compatível com sistemas Linux de longa data... e poderíamos até dizer que eles são amigos e trabalham juntos, colaborando em projetos como o desenvolvimento de modelos de carros de luxo para a Audi alemã!. ■

Na EasyLinux #09… DESTAQUE

Games no Linux

Nem só de trabalho duro vive o Linux. O sistema do Pingüim também surpreende quando o tema é games e faz rodar alguns dos jogos mais emocionantes da atualidade, feitos nos moldes dos sistemas proprietários. Como isso é possível? Através do Cedega – software pago – ou do virtuoso Wine. Com algumas configurações e entradas básicas na linha de comando, você vai aprender a instalar jogos como o famoso City of Heroes, dentre outros. Não perca a série de artigos completa, com passo-apasso, screenshots e soluções, especialmente preparada para a sua diversão! ■

LABORATÓRIO

Tudo sob controle

Você quer saber qual o uso que seu computador faz da CPU, memória e outros recursos, além de verificar o recebimento de emails? Delegue essa tarefa ao GKrellM, um programa enxuto, que oferece plugins adicionais, especialista em monitorar o sistema na forma de eficientes gráficos. ■

http://supertuxbr.blogspot.com 82

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com LM30_capa.indd 2

27.04.07 15:37:23


05/2007

ENTREVISTA p.22 O compromisso da Fujitsu com os padrões abertos

FISL 2007 p.18 Usuários, desenvolvedores, empresas e Governo juntos

CEZAR TAURION p.28 A liderança do Linux nos sistemas embarcados

Assinante

A REVISTA DO PROFISSIONAL DE TI

GESTÃO E PRODUTIVIDADE COMPIERE OPENCRX SUGARCRM POSTGRESQL DIFF POWERSHELL

http://supertuxbr.blogspot.com © 2007 Microsoft Corporation. Todos os direitos reservados. Microsoft e “Seu potencial. Nossa Inspiração.” são marcas comerciais, registradas ou não, da Microsoft Corporation nos Estados Unidos e/ou em outros países.

LM30_capa.indd 1 An. Porta 25 Less 1

p.29

O CÓDIGO ABERTO INVADE O MUNDO DOS ERP/CRM COM BAIXO CUSTO, CONSULTORIAS BEM ESTABELECIDAS E ALTO PODER DE CUSTOMIZAÇÃO

» Compiere: Implementando a ferramenta de gestão livre do momento p.30 » OpenCRX: toda a força do Java em forma de CRM p.34 » Desempenho e adaptalidade com o SugarCRM p.38 » Tendências de mercado: por que um ERP livre? p.42

POSTGRESQL p.55 Como montar um sistema prático para autenticação local de usuários

CLONAGEM EFICIENTE p.64 Backup precisa ser trabalhoso e difícil? O Mondo mostra que não!

MONDO

Quem quer saber mais sobre open source não pode ficar de fora do Porta 25. Agora na versão 2.0, o site está ainda mais interativo e aberto à sua participação. Ele tem novas funcionalidades e a navegação está mais completa, com mais espaço para as iniciativas do mercado brasileiro. Entre agora mesmo: www.porta25.com.br

GRAPHVIZ

O blog do Open Source Software Lab da Microsoft está de cara nova.

GESTÃO E PRODUTIVIDADE

ven d a p ro i b i d a 9 771806 942009

Maio 2007

# 30

R$ 13,90 € 7,50

00030 exemplar de

Linux Magazine

# 30

#30 05/07

VEJA TAMBÉM NESTA EDIÇÃO: » As novidades do Oracle OpenWorld p.26 » Preparação para a LPI: Aula 5 p.48 » Criação de imagens a partir de texto com o Graphviz p.60 » Programação: Os poderes matemáticos do diff p.70 » Desktop nacional: O insigne Insigne Linux p.45 WWW.LINUXMAGAZINE.COM.BR 27.04.07 15:37:15

4/13/07 20:16:24


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.