Instalar aplicativos em sistemas
GNU/Linux tem sido uma luta de longa data. Antes de 1993, para ter um sistema funcional, era necessário compilar tudo, desde o kernel, passando pelas ferramentas GNU, até as aplicações desejadas.
Hoje em dia isso é passado, e a instalação de programas no
Linux se tornou algo até mesmo trivial. Tendo uma conexão com a internet, basta um simples comando, como "apt-get install <programa>" ou "yum install <programa>" para termos o aplicativo desejado. Se ele não estiver nos repositórios padrão da distro, provavelmente pode ser encontrado em algum outro repositório. Se nem isso for possível, sempre existe a opção de compilar por conta própria, que embora nos remeta a um passado onde essa era a única opção, agora só se torna necessário em casos extremos.
Contudo, ainda existe um caminho a galgar.
Usuários Windows estão muito acostumados com o paradigma NNF (next, next, finish) quando se trata de gerenciar aplicações. Além disso, estão acostumados a baixar por sua própria conta o instalador do aplicativo, que consiste em um único arquivo executável que contém todo o necessário para rodar o aplicativo.
No mundo GNU/Linux, as coisas são diferentes. O usuário não precisa abrir o navegador e nem entrar em site algum para baixar o instalador. O "instalador" vem dividido em partes, ou seja, um pacote principal e suas dependências. O comando de instalar o programa é o mesmo de baixar.
Essas diferenças, além de outras, como o fato dos arquivos de aplicativo ficarem espalhados pelo sistema afora, confunde usuários vindos do Windows ou do Mac. Esta diferença de paradigma não é um fator crucial para determinar o uso ou não de sistemas GNU/Linux, mas não deve ser desconsiderada.
Além disso, temos um problema clássico, a instalação de aplicativos em máquinas offline, que abordei em uma outra dica:
No intuito de criar um sistema de instalação de aplicativos onde todos os pacotes se encontrassem em um único arquivo, e onde fosse possível instalá-los em qualquer máquina offline, mesmo que esta jamais tivesse atualizado sua lista de pacotes do repositório, criei um projeto no sourceforge chamado i4l (installers for linux):
O i4l não é uma nova forma de gerenciador de pacotes. Ele é uma espécie de "wrapper" ao redor do apt. Um pacote criado com o i4l contém todos os pacotes deb necessários para instalar determinada aplicação em um sistema qualquer, mesmo em máquinas offline, onde a lista de pacotes do repositório nunca foi baixada.
O código é feito integralmente em shell script e a interface com o usuário é feita com o zenity, ou o xmessage caso o zenity não esteja disponível. Por enquanto, ele é compatível com as versões i386 dos seguintes sistemas: Ubuntu 10.10, 10.04, 9.10, 9.04, 8.04 e Debian Lenny.
É possível criar instaladores para qualquer aplicação disponível nos repositórios da distro. É possível também criar instaladores para uma distro alvo diferente daquela que você está usando para criar o instalador.
A seguir, darei as instruções de como utilizar o i4l para criar instaladores.
Primeiro, baixe o preparador do sistema (i4l-system-preparer.sh), disponível no sourceforge:
Em seguida, execute o arquivo e siga as instruções da tela. Ao fim do processo, o seu sistema estára pronto para criar instaladores.
Se você é do tipo cuidadoso, que não sai executando todo arquivo que baixa por aí, abra o arquivo no gedit ou outro editor de texto qualquer. Trata-se de um arquivo compactado com o bzip2 com um cabeçalho de shell-script, encarregado de extrair e executar o conteúdo do arquivo. Este arquivo compactado auto-extraível, assim como os instaladores do i4l, são todos gerados usando o makeself, disponível na seguinte página:
Se quiser somente extrair o conteúdo do pacote para ver o que tem dentro, execute-o no terminal com os parâmetros "--keep e --noexec". Isto criará uma pasta no diretório atual com todo o conteúdo do pacote. Isto também vale para os instaladores gerados com o i4l.
Após executado o preparador do sistema, se quiser, execute o comando i4l-set-target-system.sh para escolher o sistema alvo para o qual deseja criar instaladores.
Quando quiser criar um instalador, basta executar o comando:
# i4l-installer-creator.sh <nome-do-programa>
para gerar um instalador, que será colocado no seu diretório home.
Note que <nome-do-programa> é o nome de qualquer pacote disponível nos repositórios de sua distro. Exemplos:
# i4l-installer-creator.sh gimp
# i4l-installer-creator.sh chromium-browser
# i4l-installer-creator.sh broffice.org
Conclusão
Meu objetivo maior, ao criar o i4l, foi desenvolver uma maneira fácil de instalar programas em máquinas offline. Além disso, ele se mostra útil para fazer backup de aplicativos, para aqueles que tem conexão lenta e não querem baixar um programa mais do que uma única vez.
Existe também a possibilidade de usar o aptoncd para fazer backup de pacotes deb, contudo quando se trata de fazer backup de um único aplicativo, e não de uma coleção deles, o uso do i4l se mostra mais simples. De fato, inicialmente o i4l foi inspirado pelo aptoncd.
Agradeço muito tanto àqueles que criaram o aptoncd, e aos criadores do makeself, que uso para criar os pacotes auto-extraíveis.
O i4l ainda está em fase inicial, mas já é capaz de fazer aquilo que ele propõe: Criar instaladores de aplicativos para Linux.
Ficaria extremamente grato de receber críticas e sugestões daqueles que o utilizarem.
Pretendo, futuramente, aumentar o escopo do i4l para abranger sistemas baseados em pacotes rpm.
No mesmo projeto do sourceforge, hospedei uma série de instaladores de aplicativos, para Ubuntu 10.10 e 10.04. Quem se sentir a vontade pode testa-los e me dizer o que achou.
Mandem as críticas e sugestões para:
gnumaru<arroba>users<ponto>sourceforge<ponto>net
Troquem o <arroba> por "@" e o <ponto> por ".". Procedimento padrão anti-spam.
Ficarei feliz se puder nortear o desenvolvimento do i4l com base nas sugestões dos usuários.