Métricas para avaliação de ferramentas para administração de aplicativos em ambiente GNU/Linux.



Documentos relacionados
SISTEMA OPERACIONAL & SOFTWARE LIVRE

16:21:50. Introdução à Informática com Software Livre

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

Aula 01. Introdução ao Linux

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

Sistema Operacional LINUX

Prof. Luis Nícolas de Amorim Trigo

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

Laboratório de Redes de Computadores e Sistemas Operacionais

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

PLANO DE AULA. Ambiente Operacional Unix Profa. Morganna

Oficina de ferramentas de Gerência para Redes em Linux. Prof. Jefferson Santiago

Aula 01 Visão Geral do Linux

Administração de Sistemas Livres. Prof. Lais Farias Alves

I N F O R M Á T I C A. Sistemas Operacionais Prof. Dr. Rogério Vargas Campus Itaqui-RS

Curso de Linux Básico

Universidade Federal de Goiás. Alexandre Ferreira de Melo CERCOMP / UFG

Fundamentos de Sistemas Operacionais

Noções de Software. André Aziz Francielle Santos

4. Conceitos Básicos de Computação: Sistemas Operacionais

1 / 6. Cartilha O ABC do Software Livre. O que é PcLivre?

Sistemas Operacionais

Introdução aos Sistemas da InformaçãoAula 4 p. 1

Introdução ao Sistema UNIX

Introdução a Sistemas Abertos

Introdução a Computação

Estudo de Caso II: LINUX

Entendendo como funciona o NAT

Desenvolvendo Websites com PHP

Curso Introdução ao Linux. Desmistificando o Software Livre. Nícholas André nicholas@iotecnologia.com.

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

Laboratório de Redes. Professora Marcela Santos

Sistemas Operacionais

Everson Scherrer Borges João Paulo de Brito Gonçalves

EDITORES DE TEXTO Capítulo 1: Avaliação técnica e econômica dos principais editores de texto do mercado.

UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE INFORMÁTICA

Hardware & Software. SOS Digital: Tópico 2

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Martin Vincent Bloedorn. GNU/Linux

Linux pra mim, Linux pra você!

ISO/IEC 12207: Gerência de Configuração

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

1

Escola Adalgisa de Barros

Introdução à Computação

Universidade Paulista

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

NetEye Guia de Instalação

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

UNIVERSIDADE FEDERAL DA PARAÍBA PRÓ REITORIA DE EXTENSÃO E ASSUNTOS COMUNITÁRIOS

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Aula 2. Objetivo: Saber qual a funcionalidade de um sistema operacional de rede.

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

FACULDADE DE TECNOLOGIA SENAC PELOTAS CURSO TÉCNICO EM INFORMÁTICA PRONATEC PROFESSOR: NATANIEL VIEIRA ALUNOS: ANA CAROLINA, ROMÁRIO, WAGNER.

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Um Driver NDIS Para Interceptação de Datagramas IP

INTRODUÇÃO À LINGUAGEM C/C++

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Indicie. 1.Introdução Como Surgiu Para que serve Instalação Oque ele permite fazer Primeiro Cenário...

LINGUAGEM C UMA INTRODUÇÃO

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

INTRODUÇÃO: 1 - Conectando na sua conta

Principais Sistemas Operacionais. Prof. Fernando Nakayama de Queiroz

Rotina de Discovery e Inventário

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Sistema Operacional. História Sistema Operacional 1. QI Escolas e Faculdades Apostila de Linux

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Figura 01 Kernel de um Sistema Operacional

Software. Livre. Será que é isso mesmo que eu quero? João Eriberto Mota Filho Eriberto jun. 10

SISTEMAS OPERACIONAIS

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

UNIX: Uma Breve Apresentação

Permissões de compartilhamento e NTFS - Parte 1

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

5 Mecanismo de seleção de componentes

Marco A. M. de Melo e Fernando S. P. Gonçalves MANAGER

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

UFRJ IM - DCC. Sistemas Operacionais I

Aplicação Prática de Lua para Web

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Manual do Ambiente Moodle para Professores

4 Estrutura do Sistema Operacional Kernel

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

Circuito Curitibano de Software Livre

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Everson Scherrer Borges João Paulo de Brito Gonçalves

Cursos de Computação. Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 01 - História e Funções dos Sistemas Operacionais

Módulo 4: Gerenciamento de Dados

Curso de Linux Básico com o Linux Educacional

Informática. Aula 03 Sistema Operacional Linux. Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos

Transcrição:

Métricas para avaliação de ferramentas para administração de aplicativos em ambiente Marcelo da Silva Leal Graduando de Análise de Sistemas Prof. Ney Lemke Orientador Universidade do Vale do Rio dos Sinos - UNISINOS Av. Unisinos, 950, Cristo Rei São Leopoldo, RS,CEP: 93022-000 leal@procergs.rs.gov.br RESUMO O crescimento e afirmação do sistema operacional GNU/Linux, desencadeou no surgimento de inúmeras Distribuições GNU/Linux, criando uma necessidade real de estabelecimento de métricas, que nos permitam comparar as diferentes estratégias utilizadas para administração de aplicativos neste ambiente, e que facilitem a tomada de decisão por uma Distribuição GNU/Linux específica. Dada a complexidade estrutural e a evolução histórica dos grafos de dependência, esta questão é um problema ainda em aberto que possui um considerável apelo prático. Este artigo propõe métricas para a comparação das diferentes políticas de instalação de aplicativos em ambiente GNU/Linux, que visa auxiliar usuários, administradores de sistema, e também desenvolvedores, que podem introduzir políticas mais adequadas, facilitando a adoção deste sistema operacional. 1. Introdução Novas Distribuições GNU/Linux (DL) surgem constantemente com propostas inovadoras em termos de instalação de aplicativos, o que gera uma diversidade muito grande de políticas, ferramentas e características neste ambiente, e que supre diferentes necessidades e anseios por parte da comunidade usuária de software livre. Como a manutenção 1

de aplicativos é uma das principais tarefas executadas por usuários de computador, seja ele um administrador de sistemas ou usuário doméstico, existe uma necessidade vital de estabelecimento de métricas que nos permitam comparar as diferentes estratégias utilizadas para administração de aplicativos neste ambiente, e que facilitem a tomada de decisão por uma DL específica. Proposta apresentada neste artigo. Primeiramente, no item 2, temos um resumo histórico da criação e evolução do sistema operacional UNIX, e o surgimento do projeto GNU e do Linux são apresentados no item 3. No item 4 são tratadas as DL. A definição da unidade central utilizada para instalação de aplicativos neste ambiente, o pacote, é definida e são propostos requisitos para sua estruturação e criação, no item 5, e as propriedades inerentes das relações de dependências entre os pacotes que compõe uma DL, são apresentadas no item 6. 2. Unix Em 2004 a indústria de computadores comemora o 35 aniversário da introdução do conceito de sistema operacional UNIX [Vahalia, 1996]. Este sistema desempenhou um papel importante na história da computação, tanto por ter introduzido conceitos chave, como por ter sido utilizado em um sem número de aplicações tecnológicas e comerciais, que vão desde a automação industrial até o controle de naves espaciais. Estritamente falando, UNIX é uma marca registrada, e se refere a um sistema operacional compatível com a especificação XPG4.2 administrada pelo consórcio X/Open [Matthew & Stones, 2003]. Também conhecida como SPEC1170, esta especificação define os nomes, interfaces e comportamentos das funções de todos sistemas operacionais UNIX. As especificações X/Open são largamente uma adaptação de uma série de especificações anteriores (P1003 ou especificações POSIX), que são ativamente desenvolvidas pelo IEEE (Institute of Electrical and Eletronic Engineers) [Matthew & Stones, 2003]. A história do UNIX começou em 1968 [Libes & Ressler, 1989], quando Ken Thompson e outros programadores ainda trabalhavam no Computer Research Group no Bell Lab s (parte da gigante de telecomunicações AT&T) [Matthew & Stones, 2003], no projeto MULTICS (Multiplexed Information and Computing System). Embora um ambiente computacional sofisticado, as versões de produção eram "pesadas" e lentas, o que tornou o MULTICS um sistema visionário, mas que tomou o caminho errado [Libes & Ressler, 1989]. Contudo, muitas versões de MULTICS foram desenvolvidas, fornecendo excelentes e confortáveis ambientes operacionais. Existiam outras alternativas, mas não se comparavam ao MULTICS por serem pouco amigáveis ou orientadas a processamento batch, 2

o que incentivou Ken, Dennis, e Joseph Ossana, motivados a não perderem o ambiente confortável fornecido pelo MULTICS, a construir um sistema operacional próprio [Libes & Ressler, 1989]. Inicialmente este novo sistema operacional seria implementado em uma máquina de ponta para a época, um DEC-10 (Digital Equipament Corporation), mas em virtude do custo, o desenvolvimento foi direcionado para um PDP-7 que estava "jogado" em um canto e era pouco utilizado. Nascia então neste PDP-7, o primeiro interpretador de comandos (Shell), alguns utilitários para manipulação de arquivos, e um sistema de arquivos que já utilizava o conceito de I-NODES, e suportava tipos especiais para referenciar diretórios e dispositivos. Isto tudo para dois usuários simultâneos [Libes & Ressler, 1989]. O nome UNIX surgiu de uma brincadeira que Brian Kernigham fez em 1970 para referir-se ao seu sistema de dois usuários: UNICS (Uniplexed Information and Computing System), desde que o MULTICS, comparativamente, parecia ter sido um sistema super-dimensionado. Logo depois, "UNICS" tornou-se UNIX [Libes & Ressler, 1989]. Em virtude do PDP-7 não suportar a demanda para o serviço computacional, em 1970 o UNIX foi portado para um PDP-11/20, por ser este último mais eficiente que o PDP-7, e custar uma fração de um DEC-10. Nesta época o sistema operacional era todo escrito em assembly, e uma vez portado o sistema operacional, o roff (antecessor do troff), e um editor, já era aparentemente suficiente para ser chamado de um sistema para processamento de textos [Libes & Ressler, 1989]. É importante fazermos algumas considerações sobre esta primeira versão UNIX de produção: - Esta versão rodava sem proteção de memória. - Possuía um disco de 0,5 Mb. - Suportava três usuários concorrentes editando e formatando textos, mais um grupo de desenvolvimento UNIX. - A documentação foi nomeada "First Edition" e é datada de novembro de 1971 [Libes & Ressler, 1989]. Foi escrita no UNIX, utilizando o editor ed, e a ferramenta de formatação roff [Thompson e Ritchie, 1971]. Em 1972 era lançada a segunda edição e o sistema já continha o conceito de pipes. Esta nova edição também incorporou o uso e suporte de outras linguagens que não assembly. Como o MULTICS foi escrito em PL/I, Ken e Dennis sabiam por experiência própria que escrever um sistema operacional em uma linguagem de alto nível valia a pena, então Ken tentou reescrever o kernel em NB. A linguagem NB era uma versão 3

modificada da linguagem B, projetada por Ken e Dennis, a qual era descendente da BCPL, Basic CPL, projetada por Martin Richards em cambridge 1967. CPL, combined programming language veio fortemente da idéias do algol60, projetado em 1960 [Libes & Ressler, 1989]. NB evoluiu para a linguagem C, que rapidamente tornou-se a linguagem de escolha para novos utilitários e aplicações. Em 1973 a linguagem C tinha evoluído, suportava estruturas e variáveis globais, e o kernel do UNIX tinha sido reescrito com sucesso em C, juntamente com o shell [Libes & Ressler, 1989]. Após então desenvolver uma linguagem de programação adequada, que possibilitou fornecer ao UNIX uma portabilidade muito grande, Ken Thompson e Dennis Ritche estabeleceram um marco na computação e deram ao UNIX a característica necessária para ele tornar-se um sistema operacional muiltiusuário e multitarefa, para uma grande variedade de plataformas diferentes, tanto para servidores multiprocessados, quanto para supercomputadores [Matthew & Stones, 2003]. Estas qualidades tornaram o UNIX uma opção popular para fabricantes que eram dedicados principalmente à venda de hardware: SUN, SGI, Hewlett-Packard, IBM, DEC, Amdahl e dezenas de outros [Maxwell, 2000]. Um fabricante poderia portar o UNIX para um novo hardware por ele desenvolvido, e ter este novo equipamento apto a executar aplicações [Maxwell, 2000]. O que com o passar dos anos fez com que cada um dos fabricantes tivesse sua versão de UNIX, o que prendia seus clientes em virtude das particularidades de sua versão, e por outro lado criava um ambiente sem nenhuma ou pouca compatibilidade. Em virtude das regras anti-truste de 1956 a AT&T não pôde entrar no ramo dos computadores, mas podia distribuir o sistema operacional por um pagamento em dinheiro. O que aconteceu para o governo, e para universidades [Maxwell, 2000]. Uma dessas universidades foi a universidade da califórnia em Berkeley, que fez inúmeros melhoramentos ao sistema, e entre eles podemos destacar: - Funcionamento em rede TCP/IP - Um sistema de arquivos de usuários (UFS) - Controle de tarefas e melhoramentos no código de gerenciamento de memória. 3. Projeto GNU e o Linux Embora sendo um sistema eficiente, licenças comerciais UNIX são caras e restritivas [Camou & Couwenberghe], o que acabou por afastar este sistema de usuários domésticos e comerciais de pequeno porte. Após terminar seus serviços no Laboratório de inteligência artificial no MIT em 1984, Richard Stallman visando permitir que um grupo 4

mais extenso de usuários tivesse acesso ao sistema, começou seu trabalho em um novo sistema operacional a ser chamado GNU (acrônimo recursivo para "GNU is not UNIX") [Camou & Couwenberghe]. Este seria um sistema operacional completo, semelhante ao UNIX, com kernel, ferramentas de desenvolvimento, e aplicações para usuários finais [Maxwell, 2000], com código fonte aberto, sem custo e de livre redistribuição. Stallman então criou a Free Software Foundation (FSF), "Dedicada a eliminar restrições sobre cópia, redistribuição, entendimento e modificações em software" [Libes & Ressler], a missão da FSF é: "Preservar, proteger e promover a liberdade de uso, estudo, cópia, modificação, e redistribuição de programas de computador, e defender os direitos dos usuários de software livre" [FSF, 2004]. Embora o projeto ter começado em 1984, o kernel GNU (Hurd) ainda não está completo, ou pelo menos faltam algumas características necessárias para uma versão de produção [Camou & Couwenberghe], o que levou a comunidade a basicamente perder o interesse no Hurd [Camou & Couwenberghe]. E em meio a todo este desenvolvimento do GNU, em 1991 um estudante em fase final de graduação, Linus Torvalds, desejava aprender a respeito da nova cpu da intel, o 80386, e decidiu implementar um kernel para este processador, semelhante ao UNIX e compatível com a especificação POSIX [Maxwell, 2000]. Linux Torvalds desenvolveu sozinho seu projeto até a versão 0.02, quando já rodavam alguns utilitários, o compilador gcc, e o shell bash. Então começou a recrutar ajuda, por intermédio da internet, a desenvolvedores interessados a colaborar. Em três anos o Linux estava na versão 1.0 e com aproximadamente 100 mil usuários [Maxwell, 2000]. E Sendo um sistema operacional de código aberto e totalmente desenvolvido e mantido dentro dos padrões de interesse do projeto GNU, ganhou a cena [Camou & Couwenberghe]. O kernel de um sistema operacional apesar de ser o principal programa em um computador, não caracteriza um sistema operacional completo [FSF, 2004]. Ele faz o principal trabalho, administrando os recursos de hardware (cpu, memória, discos, etc) [Stevens, 1993]. Mas outros programas denominados aplicativos, são os responsáveis pelas tarefas "visíveis" aos usuários (editores de texto, compiladores, navegadores, e etc). Linus Torvalds e outros programadores espalhados pelo mundo, dedicaram o tempo necessário para portar os componentes necessários da infindável lista de utilitários do projeto GNU para o Linux. O desenvolvimento do Hurd continua e progride rapidamente, mas o objetivo original de Richard Stallman foi alcançado: "Disponibilizar um Sistema operacional 100% livre, com aplicações para todas as necessidades, sem custo [Camou & Couwnberghe]. 5

4. Distribuições GNU/Linux Para disponibilizar aos usuários o kernel (Linux), e o conjunto extenso de aplicativos (GNU), que formam um sistema operacional completo, nasceram as Distribuições GNU/Linux (DL). Uma das primeiras DL a ser criada foi a Slackware em abril de 1993 [Slackware, 2004], logo se seguiram outras tais como a Gentoo e a Debian/GNU Linux. Esta ultima se caracteriza por ser mantida exclusivamente por uma comunidade de desenvolvedores e colaboradores ao redor do mundo [Debian, 2004]. A RedHat [Red Hat, 2004] criadora do sistema RPM de instalação de software [Bailey, 1997], e hoje a principal DL comercial, fundada em 1994 por Bob Young e Marc Ewing, é um outro exemplo de identificação da necessidade da criação de ferramentas e políticas para instalação de aplicativos no ambiente A maioria das DL organizaram a instalação de aplicativos em unidades denominadas pacotes. Que são arquivos que contém programas e/ou arquivos de configuração necessários ao funcionamento do aplicativo em questão [RDL, 2002]. Associado às informações contidas em cada pacote, toda DL mantém uma base de dados, estruturada ou não, contendo informações consolidadas sobre os pacotes instalados: versões, localização no sistema de arquivos, páginas manuais, lista de arquivos que compõe cada pacote, checksum, dependências e etc [Bailey, 1997]. Apesar de ser um meio conveniente de distribuição e instalação de programas, os pacotes são componentes complexos no que diz respeito ao seu layout de dependências e manipulação. Os dois formatos predominantes no mundo das DL atualmente (RPM e Debian) [RDL, 2002], mantém suas informações sobre dependências de outros pacotes em bancos de dados, que uma vez corrompidos podem ameaçar a integridade do sistema. Levando em conta que a maioria dos pacotes tem alguma dependência, a sua instalação, atualização e remoção pode ser uma tarefa árdua e frustrante, caso a ferramenta para administração de aplicativos utilizada, não possua um controle consistente e políticas coerentes para manutenção dos aplicativos. Visando melhorar o desempenho do sistema, ou ainda atingir um nicho específico de mercado, novas DL surgem constantemente com propostas inovadoras em termos de instalação de aplicativos, segurança, usabilidade, customização, atualidade, ou outras funcionalidades. 5. Pacotes Como unidade central e conceito amplamente utilizado para intalação de aplicativos em ambiente GNU/Linux, e inclusive em outros sistemas operacionais compatíveis com a especificação POSIX ou não, os pacotes são nosso primeiro foco de estudo para entendermos o funcionamento e problemática da resolução de dependências, e da adminis- 6

tração de aplicativos em ambiente Podemos imaginar um pacote do ponto de vista computacional, com uma perspectiva muito parecida com um pacote no nosso mundo real [Bailey, 1997]. Ambos são métodos de agruparmos "objetos" que possuem alguma relação, ambos necessitam ser abertos antes de conseguirmos acessar seu conteúdo, e ambos podem ter uma "etiqueta" identificando seu conteúdo [Bailey, 1997]. Normalmente, no ambiente GNU/Linux, as ferramentas de administração de pacotes utilizadas pelas DL reúnem todos os diversos arquivos que contém programas, dados, configurações, documentação, manuais, e as colocam em um arquivo especialmente formatado para este fim - um pacote [Bailey 1997]. E no objetivo de estabelecimento de métricas, começamos levantando requisitos básicos para sua estruturação. Dividimos estes requisitos em 5 categorias: - Segurança - Usabilidade - Conteúdo - Instaladores - Escalabilidade 5.1. Segurança Hoje em dia a internet já é uma realidade, e o Linux e o projeto GNU nasceram quase que fundamentalmente em virtude da existência desta rede mundial de computadores. Dito isto, já fica expressa a importância deste mecanismo de acesso e disponibilização de conhecimento, bem como oportunidade de negócios [Mourani, 2001]. Portanto, qualquer micro computador instalado, seja como estação de trabalho, ou servidor de aplicação em uma empresa, é quase certo que estará conectado de alguma maneira à internet. Em decorrência disto, exposto a todos os riscos inerentes a grandiosidade e diversidade de usuários desta mega rede de informação [Mourani, 2001]. Autenticidade: Um pacote disponibilizado por uma DL para instalação de um aplicativo qualquer, deve ser autêntico, e portanto prover um mecanismo, simples, para o usuário verificar quem o criou. Ex.: Assinatura GPG do mantenedor [Mourani, 2001]. Integridade dos arquivos: O pacote deve prover um mecanismo para o usuário verificar a integridade dos arquivos que o mesmo fornece, uma vez que estejam instalados. Para tanto, o pacote pode por exemplo, fornecer uma lista relacionando cada arquivo e sua respectiva chave MD5 [Mourani, 2001]. Esta funcionalidade permite ao usuário, sempre que o mesmo achar necessário, checar se algum arquivo no seu sistema foi corrompido ou exposto a um comprometimento de qualquer sorte. 7

Atributos dos arquivos: O pacote deve conter informações descritivas sobre todos os atributos dos arquivos instalados (permissões, grupos, tamanho, etc) [Bailey, 1997]. Esta característica é importante para que o usuário possa verificar, se permissões e/ou grupos de um arquivo ou diretório foram modificados desde sua instalação [Bailey, 1997]. 5.2. Usabilidade Este requisito visa proporcionar uma noção do nível de facilidade de uso do pacote. Facilidade esta que está relacionada a criação e manipulação do mesmo [Bailey, 1997]. Ferramentas de acesso: O pacote deve ser criado e possibilitar acesso para utilização, por ferramentas UNIX padrões disponíveis na maioria dos sistemas GNU/Linux [Bailey, 1997]. Implementação - Criação do pacote: O pacote deve ser de fácil criação. O usuário interessado em incluir um aplicativo que não seja distribuído por uma DL específica, deve conseguir fazê-lo sem muita dificuldade, com um nível médio de conhecimento. Isto também facilita a disponibilização de produtos comerciais para a DL em questão [Bailey, 1997]. 5.3. Conteúdo Dependências: O pacote deve conter todas as informações sobre outros pacotes que o mesmo depende para o seu funcionamento. Podendo especificar níveis diferentes de dependências, e sempre com quantidades e versões específicas. Estas dependências não devem ser nunca ambíguas ou globais [Jackson e Schwartz, 2003]. Conflitos: Os conflitos devem ser evitados ao máximo, mas quando isto não for possível, o pacote deve sempre informar pacotes conflitantes com ele próprio, sempre que, e somente se, a instalação de ambos inviabilize o estado estável e íntegro do sistema [Jackson e Schwartz, 2003]. Pacotes Sugeridos e/ou Recomendados: Sempre que possível o pacote deve sugerir e/ou recomendar outros pacotes para seu melhor funcionamento. Mas é importante ressaltar que estes pacotes não são estritamente necessários para o funcionamento do pacote, e sua instalação ou não, é totalmente dependente do aceite do usuário. Pacotes Virtuais: Pacotes devem informar caso forneçam pacotes virtuais, habilitando outros pacotes a dependerem destes pacotes virtuais. Ex.: MTA (Mail Transport Agent), Web Server, etc. Esta característica impede qualquer pacote de depender de um aplicativo específico, quando na realidade ele depende de uma funcionalidade, fornecida por uma variedade de aplicativos [Jackson e Schwartz, 2003]. 8

Dependências complexas: O pacote deve fornecer possibilidade de suas dependências serem combinadas com diretivas "or" e/ou "and" [Jackson e Schwartz, 2003]. Prioridade: O pacote deve possuir informações sobre sua importância para o sistema [Jackson e Schwartz, 2003]. Isto é, pacotes essenciais, devem ser marcados para que o usuário tenha ciência que sua remoção pode indisponibilizar o sistema como um todo [Jackson e Schwartz, 2003]. Histórico: O pacote deve possuir dados do seu histórico, referente a correções de bugs, problemas de segurança, melhorias no empacotamento, e etc. Desde sua criação [Jackson e Schwartz, 2003]. 5.4. Instaladores Entenda-se aqui instaladores por todo e qualquer script ou programa que esteja contido no pacote, e sirva como meio auxiliar de instalação. Este tópico não se refere a ferramenta principal de instalação de pacotes da DL. Scripts auxiliares: Ferramentas para auxílio na instalação do pacote devem ser scripts e não binários. Estes instaladores normalmente executam tarefas de configuração e customização, que pode ser de fácil manipulação pelo usuário, caso sejam scripts. Interatividade: O instalador principal deve permitir interatividade entre os scripts auxiliares e o usuário. Regularmente, aplicativos necessitam de alguma interatividade para sua instalação. Portanto isto deve ser atendido pela ferramenta de administração de aplicativos [Jackson e Schwartz, 2003]. Backup: O pacote deve sempre prezar pela salvaguarda das configurações e customizações do usuário. As configurações e customizações dos usuários nunca devem ser perdidas. Atualizações de pacotes ou da DL inteira, devem tratar apenas de binários. Caso existam atualizações de compatibilidade para dados e/ou configurações, devem ser feitas em conjunto com o usuário, e sempre salvando o conteúdo anterior. 5.5. Escalabilidade Limites: O pacote não deve possuir limites fixos do tipo: N de campos, letras, N de versão, etc. Expansão: O pacote deve suportar o acréscimo de informações, arquivos de controle, binários, etc. Características que podem ser acrescidas ou retiradas da ferramenta principal de administração de aplicativos, sem alterações na estrutura do pacote, e sem quebra de compatibilidade. 9

Compatibilidade: O pacote deve fornecer um mínimo de compatibilidade entre versões, para no mínimo possibilitar a ferramenta a detectar a versão do mesmo, e verificar que não está apta a tratá-lo [Jackson e Schwartz, 2003]. Base de Dados: A base de dados dos pacotes deve ser, preferencialmente, arquivos texto. Seguindo um padrão que nasceu com o UNIX, e facilita muito a manipulação dos dados por aplicativos comuns em ambiente GNU/Linux, que segue o mesmo padrão, tais como: sed, grep, vi, awk e etc [Siever e Spainbour, 2000]. 6. Grafo de Dependência Um dos pontos a serem analisados em uma ferramenta de administração de aplicativos em uma DL, é quão bem ela resolve as inúmeras dependências que cada pacote possui para estar configurado e apto a ser utilizado pelos usuários. Um sistema GNU/Linux instalado e fornecendo um ambiente operacional estável, possui um conjunto de elementos individuais (pacotes), relacionados com um outro elemento ou grupo de elementos (outros pacotes), que podemos visualizar gerando um grafo dirigido desta DL. Com base nesse grafo, poderemos estudar algumas propriedades inerentes aos grafos em geral [Barabási, 2002], e outras específicas ao nosso objeto de estudo, que são as relações de dependência entre os pacotes. Para conseguirmos nosso primeiro grafo utilizamos como amostra uma Distribuição Debian GNU/Linux, com 659 pacotes instalados, e uma Distribuição Gentoo Linux com 464 pacotes instalados. Extraímos em um arquivo texto as seguintes informações: Pacote, versão e lista de dependências. Para que estas informações possam ser processadas e tratadas futuramente por outros aplicativos, que não o que utilizamos para geração dos grafos, foi desenvolvido um script em Tcl/Tk [Welch, 2000] disponível em http://www.via-rs.com.br/pessoais/leal/linux/gix.txt, para gerar um arquivo XML [Walsh, 1997], descrevendo o arquivo texto inicial. Example 1. packages-debian-659.txt - Arquivo texto contendo as informações necessárias para geração do grafo de dependências, para uma Distribuição Debian/GNU Linux específica, com 659 pacotes instalados (Ex.: três pacotes). Package: telnet Version: 0.17-18 Depends: libc6 (>= 2.2.4-4), libncurses5 (>= 5.2.20020112a-1) Package: python-elisp Version: 2.1.3-3 10

Depends: python (>= 2.1), python (<< 2.2), python2.1-elisp (>= 2.1.3-1) Package: xpaint Version: 2.6.2-2 Depends: libc6 (>= 2.2.4-4), libjpeg62, libpng2 (>= 1.0.12), \ libtiff3g, libxaw7 (>> 4.1.0), xlibs (>> 4.1.0), zlib1g (>= 1:1.1.3)... Example 2. packages-debian659-xml - Arquivo XML descrevendo a relação de dependência entre pacotes de uma Distribuição GNU/Linux específica, com 659 pacotes instalados (Ex.: Dois pacotes). <?xml version="1.0" encoding="iso-8859-1"?> <!-- This file describes the dependence graph for a debian distribution --> <distribution> <name>debian</name> <version>3.0</version> <releasename>woody</releasename> <description>stable</description> <package> <name>telnet</name> <version> 0.17-18</version> <id>1</id> <depends> libc6 libncurses5 </depends> </package> <package> <name>vim</name> <version> 6.1.018-1</version> <id>2</id> <depends> libc6 libgpmg1 libncurses5 </depends>... Para geração do grafo das DL foi utilizado o aplicativo pajek, gratuito para aplicações não comerciais, e disponível em http://vlado.fmf.uni-lj.si/pub/networks/pajek/ para download. Para obtermos um arquivo válido para o pajek, foi desenvolvido um script em Tcl/Tk disponível em http://www.via-rs.com.br/pessoais/leal/linux/gip.txt, para converter o arquivo XML intermediário.. 11

Example 3. Grafo descrevendo a relação de dependência para uma DL Debian GNU/Linux específica, com 659 pacotes instalados Apenas iniciamos o processo de análie, levantamento dos dados e pesquisa bibiográfica a respeito de grafos aleatórios, e os resultados obtidos são apenas preliminares. E nessa nossa primeira análise dos grafos resultantes, podemos visualmente constatar que poucos pacotes são muito conectados, e que muitos pacotes tem um número pequeno e regular de conexões [Barabási, 2002]. Estudando o arquivo de entrada para o pajek, esta propriedade fica ainda mais nítida. Para comprovarmos esta característica constatada, utilizamos o aplicativo gnuplot para representarmos as relações de dependências entre os pacotes em um plano cartesiano. Para este estudo utilizamos os dados da DL Debian GNU/Linux, os resultados estão nas telas a seguir: Example 4. Plano Cartesiano descrevendo a relação de dependência de uma DL 12

Debian GNU/Linux específica, com 659 pacotes instalados (tela 1) Example 5. Plano Cartesiano descrevendo a relação de dependência de uma DL 13

Debian GNU/Linux específica, com 659 pacotes instalados (tela 2) Com o plano cartesiano da figura anterior, podemos enquadrar o grafo da DL Debian GNU/Linux seguindo uma lei de potência [Barabási, 2002], o que conseguimos visualizar com maior nitidez ordenando os vértices. Segue o resultado: Example 6. Plano Cartesiano descrevendo a lei de potência de uma DL Debian 14

GNU/Linux específica, com 659 pacotes instalados - ordenados (tela 3) 7. Conclusão Dentro da proposta de estabelecimento de métricas para a avaliação das ferramentas de administração de aplicativos em ambiente GNU/Linux, dado que os resultados obti- 15

dos ainda são preliminares, conseguimos até esta etapa identificar peças chave dentro deste objeto de estudo. Como é o caso dos pacotes, amplamente utilizados para instalação de aplicativos, e que foram definidos e alguns requisitos para sua criação e estruturação já foram levantados. O trabalho em cima de grafos e planos cartesianos se mostrou eficaz e esclarecedor das propriedades inerentes a problemática do controle de dependências, bem como na exposição de possíveis falhas ou má formação e/ou estruturação das diversas políticas de administração de aplicativos. O que nos permite futuramente trabalhar ainda mais utilizando estas ferramentas para descobrirmos propriedades relevantes das relações entre pacotes. Bibliografia [Thompson e Ritchie, 1971] Thompson, K and Ritchie, D. M., 1971, Edited by,, Bell Telephone Laboratories, Inc., "UNIX PROGRAMMER S MANUAL". [Matthew e Stones, 2003] Matthew, Neil and Stones, Richard, 2003, Edited by, 0-7645- 4373-3, wiley Publishing, Inc., Beginning Linux Programming 2nd Edition. [Welch, 2000] Welch, Brent. B., 2000, Edited by McNamara, Joan L., 0-13-022028-0,, Pratical Programming in Tcl and TK. [Bailey, 1997] Bailey, Edward C., 1997, Edited by, 1-888172-78-9,, Maximum RPM, Taking the Red Hat Package Manager to the limit. [Siever e Spainbour, 2000] Siever, Ellen, Spainbour, Stephen, Figgins, Stephen, and Hekman, Jessica P., 2000, Edited by Darren Kelly, 0-596-00025-1, O Reilly & Associates, Inc., Linux in a Nutshell. [Mourani, 2001] Gerhard, Mourani, 2001, Edited by, 0-9688793-0-6, Open Network Architecture, Securing & Optimizing Linux: The Ultimate Solution.. [Barabási, 2002] Albert-László, Barabási, 2002, Edited by, 0-7382-0667-9, Perseus Publishing, Linked: the new science of networks. [Stevens, 1993] Stevens, W. Richard, 1993, Edited by, 0-201-56317-7, Pearson Education Corporate, Advanced Programming in the UNIX Environment.. [Jackson e Schwarz, 2003] Jackson, Ian and Schwarz, Christian, 2003, Edited by Gilbey, Julian, Edited by Robinson, Branden, Edited by Rodin, Josip, Edited by Srivastava, Manoj,, The Debian Policy Mailing List, Debian Policy Manual. 16

[Camou e Couwenberghe, 2000] Camou, Mario and Couwenberghe, Aaron Van, 2000, Edited by Walsh, Karen A., 0-672-31700-1, Sams Publishing, Debian GNU/Linux 2.1 Unleashed. [Maxwell, 2000] Scott, Maxwell, 2000, Edited by Assumpção Filho Milton M. de, 85-346-1201-3, Makron Books do Brasil Editora Ltda., Kernel do Linux: Comentários detalhados do código do kernel do Linux.. [Vahalia, 1996] Uresh, Vahalia, 1996, Edited by,,, UNIX Internals: The new frontiers.. [Libes & Ressler 1989] Don, Libes and Sanford, Ressler, 1989, Edited by, 0-13-536657-7, Prentice-Hall, Inc., Life with UNIX : A guide for everyone. [Slackware, 2004] Slackware, 2004, Edited by,, Slackware Linux, Inc. [online], 2004, Disponível em (http://www.slackware.org/info). [Red Hat, 2004] Red Hat, 2004, Edited by,, Red Hat, Inc. [online], 2004, Disponível em (http://www.redhat.com). [Debian, 2004] Debian, 2004, Edited by,, Debian GNU/Linux [online], 2004, Disponível em (http://www.debian.org). [Gentoo, 2004] Gentoo, 2004, Edited by,, Gentoo Technologies, Inc. [online], 2004, Disponível em (http://www.gentoo.org/doc/en). [FSF, 2004] FSF, 2004, Edited by,, Free Software Foundation [online], 2004, Disponível em (http://www.fsf.org). [RDL, 2002] RDL, 2002, Edited by,, Revista do Linux, Nasce um pingüim: Conheça um pouco mais do processo de desenvolvimento de uma distribuição Linux.. [Walsh, 1997] XML: Principles, Tools, and Techniques, O Reilly & Associates, Inc., 1085-2301, Edited by Dan Connolly, A Guide to XML, Norman Walsh, 1997, 97-108. 17