|
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.
|