Pacotes auto-instaláveis

Muitos programas, como o Java distribuído pela Sun, o VMware e vários games, como o Quake 3, são distribuídos na forma de arquivos auto-executáveis. Você marca a permissão de execução para o arquivo, executa, e um instalador
(gráfico, ou em modo texto) cuida do resto. Estes pacotes são uma forma genérica de distribuir programas, pois podem ser instalados em qualquer distribuição, independentemente do sistema de pacotes usado. Eles são o que temos de mais próximo aos .exe do
Windows, dentro do mundo Linux.

Na verdade, estes pacotes são muito simples de criar. Tudo começa com um arquivo compactado, que contém os arquivos que serão instalados. No começo deste arquivo vai um shell script, que se encarrega de descompactar o
arquivo, fazer perguntas e executar os comandos necessários para concluir a instalação.

Lembre-se de que um shell script é sempre executado seqüencialmente. No final usamos o comando “exit”, que faz com que o bash termine a execução do script, mesmo que exista mais texto adiante. Escrevemos então um script que
ao ser executado remove o começo do arquivo (o próprio script), deixando apenas o arquivo compactado e, em seguida, o descompacta e executa os demais passos necessários.

Comece reunindo os arquivos do programa, como se fosse criar um pacote .rpm ou .deb. Imagine, por exemplo, que o programa será instalado dentro da pasta “/usr/local/programa/” e colocará alguns arquivos de configuração
dentro da pasta “/etc/programa”. Naturalmente, o programa deve ser escrito ou compilado de forma a incluir as bibliotecas e executáveis necessários, para que possa ser executado em várias distribuições. Não adianta nada criar um pacote genérico se o
programa só funciona no Debian Sarge, por exemplo.

Você criaria então uma pasta, contendo a pasta “usr/local/programa” e a pasta “etc/programa”, e colocaria dentro delas os arquivos, mantendo a estrutura que será copiada para o sistema.

Compacte o conteúdo desta pasta usando o tar, como em:

# tar -zcvf programa.tar.gz usr/ etc/

Agora temos um arquivo .tar.gz que, se descompactado no diretório raiz, vai copiar os arquivos do programa para os locais corretos. O próximo passo é incluir o script que fará a instalação.

linhas=6
tail -n +$linhas $0 | tar -zxvf – -C /
ln -s /usr/local/programa/programa.sh /usr/bin/programa.sh
kdialog –msgbox “Instalação concluída. Use o comando ‘programa.sh'”
exit 0

Ao ser executado, o script precisa remover as 5 primeiras linhas do arquivo antes de descompactá-lo. Para isso, usamos o comando tail. Nosso script tem 5 linhas, por isso dizemos que o tail deve escrever a partir da sexta
linha do arquivo (por isso o “linhas=6” e não 5). Normalmente, o tail escreveria tudo na tela, por isso usamos o pipe, que direciona a saída (as linhas válidas do arquivo compactado) para o tar.

O parâmetro “-” faz com que ele descompacte o fluxo de dados que está recebendo através do pipe e o “-C /” faz com que o arquivo seja descompactado no diretório raiz.

Em seguida temos o resto do script de instalação, com uma linha para criar um link para o executável do programa na pasta “/usr/bin/” e um comando para abrir uma mensagem de texto, avisando que a instalação foi concluída.
Esta parte cabe a você melhorar ;).

O passo final é juntar o script e o arquivo compactado, criando o arquivo de instalação, o que pode ser feito usando o cat:

# cat script.sh programa.tar.gz > programa.sh

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X