slackware.linuxbr.org
Menu
   Principal
   Comandos
   Configuração
   Documentos
   Artigos
   Screenshots
   Plataformas
   Downloads
   Contato
   Sobre

Links
   Slackware Linux
   GUS Brasil
   Linux Packages


   Host: LinuxLots
   English Version

Criando pacotes tgz

De acordo com o livro Slackware Linux Essentials: O processo de criação de pacotes no Slackware é simples e complicado ao mesmo tempo. A única regra é que o pacote deve ser um arquivo tar gzipped, e se houver um script pós-instalação, ele deverá ser /install/doinst.sh.

Não há uma forma específica de criação de pacotes. O método proposto aqui é simples e funcional, sem entrar em maiores detalhes quanto a scripts de instalação, dependências, etc.


Criando o tgz:

São 5 passos:

1) Crie um diretório para conter os pacotes tgz (i.e. /tmp/slackpacks). Dentro dele crie um diretório com o nome do pacote - que será o nosso diretório de trabalho - com um subdiretório usr/, que simulará onde normalmente os pacotes são instalados. Por exemplo:

pwd
/tmp/slackpacks/nome-do-prog/usr

2) Compile o programa (make). Se seguir a estrutura acima, configure-o da seguinte forma: ./configure --prefix=/usr.

3) Agora instale o programa no diretório de trabalho. Uma forma de indicar ao make para instalar no diretório que foi definido acima é esta:

make install prefix=/tmp/slackpacks/nome-do-prog/usr

4) Após instalado no diretório de trabalho (que chamarei de DIR_TRAB), crie uma árvore (mkdir doc; mkdir nome-do-prog) para conter os documentos relevantes (como README, COPYING, NEWS, entre outros) que acompanham o fonte. Por exemplo:

cd $DIR_TRAB/usr/doc/nome-do-prog
cp /opt/src/nome-do-prog/README* .

5) Agora basta utilizar o makepkg para criar o pacote. Entre no diretório de trabalho do programa (cd /tmp/slackpacks/nome-do-prog) e digite:

makepkg nome-do-pacote.tgz

O nome do pacote para o Slackware 8x deve respeitar o formato nome-versão-arch-build. Siga os prompts e instale o pacote com installpkg, e teste em seu sistema.


Contornando problemas...

O problema que pode surgir é que alguns programas, mesmo com o make prefix especificado, acabam instalando componentes em outros diretórios. Se este for o caso, tente substituir prefix por PREFIX ou DESTDIR. Com este último parâmetro, o comando seria um pouco diferente, isto é, sem se referir ao diretório usado no ./configure --prefix:

make install DESTDIR=/tmp/slackpacks/nome-do-prog install

Uma forma de testar se os arquivos foram copiados corretamente é simular a instalação com o parâmetro -n:

make -n prefix=/tmp/slackpacks/nome-do-prog/usr install

Se, apesar destes métodos, o pacote insistir em copiar arquivos para outros diretórios, verifique se o script de configure apresenta parâmetros para definir o diretório de destino destes arquivos.

Lembre-se de criar um subdiretório usr/ no diretório de trabalho. Os outros subdiretórios, em geral, são criados automaticamente. Verifique o caminho para onde eles seriam destinados com um make -n install. Outra coisa importante diz respeito à distribuição do seu pacote tgz recém-criado: mantenha uma cópia do código fonte disponível junto ao pacote, para não violar a licença GPL.

Há também utilitários para automatizar este processo, como o CheckInstall. Para mais informações, confira este tutorial de criação de pacotes do Linux From Scratch. Ele apresenta como é possível criar e utilizar pacotes Slackware em qualquer distribuição sem maiores problemas, graças à simplicidade e flexibilidade do pkgtool (a filosofia slack).


Referências:

Pacotes Slackware: um exemplo prático (licq)

LinuxPackages: package howto

Userlocal: general notes on making packages.


©2002 r_linux & misfit
Slackware® is a registered trademark of Slackware Linux, Inc. Linux is a registered trademark of Linus Torvalds.

XHTML 1.0 Transitional