Table of Contents

Construindo um pacote

Este é um esboço para a criação de pacotes do Slackware. Algumas etapas podem não ser necessárias, algumas etapas podem estar ausentes. Use a página de discussão para notas secundárias, como usar slacktrack (quando o DESTDIR falha) e outros utilitários como o checkinstall.

A maneira boa e decente

Configure e compile a fonte como você costuma fazer:

./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
make

Disponibilize um diretório de destino temporário:

mkdir /tmp/build

Instale no diretório temporário:

make install DESTDIR=/tmp/build

Agora, libere libs/bins dentro do diretório temporário:

strip -s /tmp/build/usr/lib/* /tmp/build/usr/bin/*

Você também quer ter certeza de que qualquer coisa em <tt>/usr/man</tt> seja no formato gzip antes de você fazer o pacote:

gzip -9 /tmp/build/usr/man/man?/*.?

Crie o diretório <tt>install</tt>, onde a descrição e o script de instalação serão armazenados:

cd /tmp/build
mkdir install
cd install

One-liner (para as pessoas do copiar e colar):

cd /tmp/build; mkdir install; cd install

Usar um editor de texto (ou esta ferramenta), criar um arquivo chamado slack-desc e preencha com o seguinte conteúdo:

slack-desc
       |-----handy-ruler------------------------------------------------------|
appname: appname (Short description of the application)
appname:      <this line is generally left blank>
appname: Description of application  -  this description should be fairly
appname: in-depth; in other words, make it clear what the package does (and 
appname: maybe include relevant links and/or instructions if there's room),
appname: but don't get too verbose.  
appname: This file can have a maximum of eleven (11) lines of text preceded by
appname: the "appname: " designation.  
appname:
appname: It's a good idea to include a link to the application's homepage too.
appname:

A string “appname” deve corresponder exatamente à parte do nome do aplicativo do pacote do Slackware (por exemplo, um pacote intitulado “gaim-1.5-i486-1.tgz” deve ter um arquivo slack-desc com a string <appname> de “gaim:” em vez de “Gaim:” ou “GAIM:” ou outra coisa.

A primeira linha deve mostrar o nome do aplicativo seguido por uma breve descrição (entre parênteses).

Crie o pacote atual:

 cd /tmp/build
makepkg ../app-version-arch-tag.tgz

(Os traços devem aparecer como acima, portanto, se a versão tiver uma subversão como “1.0 RC2”, certifique-se de usar 1.0_RC2 e não 1.0-RC2. A arquitetura deve ser algo como “i486” por exemplo. A tag deve consistir no número de compilação e seus iniciais, por ex. 1zb para a primeira build de Zaphod Beeblebrox, 2zb para sua segunda build, etc. Pacotes slackware oficiais possuem apenas números como tags.)

Quando solicitado a recriar links simbólicos, clicar em <tt>Sim</tt><br> Quando solicitado a redefinir as permissões, clicar em <tt>Não</tt>

Nota: Usar o makepkg -l y -c n lhe dará o mesmo comportamento que responder sim à questão dos links simbólicos, e não à pergunta de permissões.

Se tudo correu bem, agora você pode instalar o pacote. cd .. installpkg app-version-arch-tag.tgz

Ajustes Específicos

Info para Perl: pacotes perl vem com /usr/lib64/perl5/perllocal.pod e você provavelmente não quer sobrescrever a versão local. Em vez disso você pode mover o arquivo para a raíz do seu pacote root/tmp e usar o doinst.sh para adicionar a nova informação ao pacote antigo com algo como:

( cat /tmp/perllocal.pod >> /usr/lib64/perl5/perllocal.pod )

O caminho "Eu não tenho tempo"

Felizmente, o Slackware também é bastante flexível. Se você não se importa muito com o que é a fonte (cuidado!) que você está compilando, você pode gravar alguns estágios e fazer algo assim:

./configure --prefix=/usr
make install DESTDIR=$(pwd)/PACKAGE
cd $(pwd)/PACKAGE
makepkg -l y -c n ../app-version-arch-tag.tgz
installpkg ../app-version-arch-tag.tgz

Naturalmente, você terá um pacote sem descrição, (provavelmente) páginas man descompactadas e binários não-fixados.

Fontes

* Fonte original: http://www.slackwiki.com/Building_A_Package
* Contribuição de arfon