11 julho 2007

Sobre pacotes e gerenciadores de pacotes

Estou fazendo outro teste com outra distribuição Linux, a distribuição Zenwalk. Esta distribuição é baseada no Slackware mas bem personalizada. Entre as principais personalizações, posso destacar o XFCE como gerenciador de janelas padrão, montagem automática de dispositivos USB (pelo menos no Slackwware 11 isso não existia), programa para detecção de redes wirelles, vários pacotes atualizados e muito mais. Mas a principal característica é que sua imagem "iso" tem pouco mais que 400 MB de tamanho, ou seja, um sistema completo que cabe em 1 CD, e sobra espaço. Mas meu objetivo não é falar sobre o Zenwalk, mas sim sobre sistemas de pacotes para Linux.

Instalei o Zenwalk por 2 motivos principais: é baseado no Slackware e é um sistema completo em um só CD. Mas como sempre, preciso personalizar a distribuição para que eu possa utilizar com mais comodidade, e faço isso instalando alguns pacotes e desinstalando outros. Nesse processo eu venho encontrado algumas coisas que poderiam ser melhorados no Linux em relação a instalação e desinstalação de programas.

1 - Para deixar o sistema do jeito que gosto instalei o KDE, onde os principais pacotes são: kdebase, kdeutils, kdelibs e o qt. Como ainda uso conexão discada, preciso de um discador (Zenwalk não traz nenhum), e o qual eu gosto é o KPPP. Para instalá-lo é preciso instalar o pacote kdenetwork, mas esse pacote traz vários outros programas que eu não uso. Conclusão, instalei vários programas que não preciso só por causa do KPPP. Sim, eu poderia instalar outro discador, mas gosto do KPPP ;-). Não é uma reclamação que estou fazendo aqui, mas acho que seria muito interessante se pudéssemos escolher quais programas dentro de um determinado pacote nós queremos instalar. Citei o pacote kdenetwork pois esse é um caso recente, mas existem vários outros casos onde isso ocorre.

2 - A maioria das distribuições Linux trazem aplicativos para facilitar a instalação e desinstalação de pacotes, como por exemplo o apt-get e seus derivados e similares. A principal função desses programas, como todos sabem, é buscar em repositórios os pacotes dos programas que você queira instalar, e resolver os problemas de dependências instalando os pacotes necessários quando for preciso. Isso funciona muito bem quando tudo esta dentro dos repositórios, mas quando o pacote e suas dependências não estiverem nos repositórios? A situação que imaginei é a seguinte:

Você quer instalar um software que esta empacotado e pronto para instalar, mas nem ele nem suas dependências são encontrados nos repositórios. Para instalar esse software você teria que procurar na internet as dependências dele, o que iria consumir bastante tempo. Mas o desenvolvedor saber onde encontrar essas dependências.

Com isso, imaginei que as informações de onde estão as dependências são colocadas dentro de cada pacote, e os gerenciadores de pacotes pegam essas informações e buscam esses pacotes automaticamente, seja lá onde eles estiverem, desde que se tenha uma conexão com a internet, claro. Isso eliminaria a necessidade de se manter repositórios cadastrados em nossos computadores e acrescentar mais um a cada vez que temos que instalar um pacote que não está nos repositórios cadastrados. Sei que isso não é uma idéia original, se não me engano no FreeBSD é assim, mas seria ótimo se isso fosse portado para o Linux, utilizando os formatos atuais de pacotes.

3 - Quando instalamos um pacote utilizando um gerenciador de pacotes, caso exista uma dependência não satisfeita, o gerenciador resolve essa dependência e as instala automaticamente. Mas o processo contrário não é feito, ou seja, ao desinstalar um pacote as dependências dele não são desinstaladas automaticamente, somente os pacotes que dependem dele. O ideal seria que todas as dependências do pacote que será desinstalado fossem desinstaladas também, desde que estas não sejam utilizadas por mais nenhum outro pacote, isso evitaria que ficassem pacotes que não são utilizados pelo sistema. Devo salientar que essas são conclusões a que eu cheguei, segundo o que eu pude perceber no meu uso diário, posso muito bem estar enganado, sendo assim, ignorem isso.

Mas para fazer tudo isso seria necessário criar um formato novo de pacotes, ou alterar os existentes hoje, que acredito que seja a melhor opção. Eu iria adorar desenvolver essas melhorias, mas infelizmente não tenho tempo para isso, me restando tempo somente de expor minhas idéias ;-). Mas também acredito que se fosse desenvolvido por um desenvolvedor ou grupo de desenvolvedores isolados, ou seja, que não fizessem parte do desenvolvimento de alguma distribuição, esse trabalho não seria facilmente notado, mesmo que se demonstre um excelente trabalho. Então a idéia seria também manter uma distribuição própria, poderia ser algo parecido com o Zenwalk, bem básico porém funcional.

Um dia quem sabe eu chego lá...

Um comentário:

Anônimo disse...

Do piru....