Piter PUNK (piterpk@terra.com.br)
Neste artigo, vamos mostrar como criar um pacote que seja auto-instalável. O usuário digita o nome do pacote e automáticamente ele se instala na sua máquina e faz a sua entrada no sistema de pacotes do Slackware.
O conceito aqui é bem simples. Iremos, de alguma maneira, fazer com que o próprio arquivo que estamos executando, localize a parte dele não executável e em seguida descompacte-a e execute os scripts de instalação.
Saiu um artigo falando como fazer em algum lugar, mas eu não consegui entrar na URL de jeito nenhum. Como achei a idéia interessante, analisei o CrossOver plugin (que utiliza a mesma técnica) e agora repasso adiante. Espero que vocês achem interessante.
Para fazer isso, primeiro vamos precisar de um pacote .tgz (formato utilizado pelo Slackware) uma boa maneira de fazer um pacote destes é utilizando o software checkinstall. Depois do pacote feito, trocamos o nome dele para algo do tipo pacote.sh e depois vamos editá-lo no elvis.
Neste edição, temos que incluir um cabeçalho com os comandos a serem executados e ONDE começa a parte com o arquivo .tgz a fim de que possa ser descompactado.
É bem mais simples entender o quê fazer lendo o código em questão:
skip=6 tail +$skip $0 | tar -xzf - -C / source /install/doinst.sh rm -rf /install exit
Edite o arquivo com todo cuidado. Apenas essas linhas devem ficar no começo do arquivo original. Veja como funciona:
Indica a partir de que linha vai começar o arquivo compactado. Como nosso cabeçalho tem 5 linhas, o arquivo compactado começa a partir da sexta linha. Se o seu cabeçalho for maior, deve mudar esse número.
tail +$skip $0 | tar -xzf - -C /
Aqui está o pulo do gato. O comando tail pega as última linhas de um arquivo e as mostra na tela. Se você faz:
tail +2 arquivo
Ele pega todas as linhas a partir da linha 2 do arquivo e mostra na tela. Nós utilizamos o $0 no lugar do arquivo. $0 é o nome do comando que foi executado. Então esta linha, o que queremos dizer é mais ou menos:
mostre o conteúdo do arquivo pacote.sh a partir da linha 6
O | redireciona a saída para o comando tar, que está fazendo o seguinte:
Vemos aqui que ele está pegando o resto do arquivo (o pacote .tgz) e transferindo para o tar que descompacta e coloca os arquivos nos locais corretos.
Executa o script de instalação, responsável (entre outras coisas) por colocar o nome dos pacotes gerados pelo checkinstall na lista de pacotes instalados.
Remove o diretório /install que depois de executado não é mais necessário.
Sai do script. Se você não colocar isto, ele vai executar a próxima linha (que é o arquivo compactado) e vai dar uma baita mensagem de erro.
Fácil, prático e eficiente -;) Com a vantagem de ser possível instalar em qualquer distro (tudo bem que as outras distros não irão aproveitar as informações sobre o pacote para desinstalar software depois). Qualquer dúvida a respeito, mande e-mail para piterpk@terra.com.br
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.