|
No artigo anterior expliquei como criar pacotes .tgz para serem instalados com o pkgtool.
Uma prática comum para automatizar esse processo é a criação de scripts SlackBuild, identificados por este nome (case-sensitive).
Os scripts SlackBuild não passam de scripts bash, e não é preciso nenhum programa específico para rodá-los além dos utilitários padrão do GNU/Linux.
Em geral, estes scripts descompactam, aplicam patches, e compilam o código-fonte automaticamente.
Um procedimento comum destes scripts é criar um subdiretório em /tmp com o formato $PROGNAME-$VERSION, e possuir alguma rotina para removê-los após a execução.
Um exemplo de SlackBuld:
#!/bin/sh
# Variáveis iniciais:
CWD=`pwd`
TMP=/tmp
NAME=nome_do_pacote
VERSION=1.0
ARCH=i386
BUILD=1
PKG=$TMP/package-$NAME
(
if [ ! -d $TMP ]; then
mkdir -p $TMP # local da compilação do fonte (/tmp)
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG # local da criação do pacote
fi
# Descompactar o framework do pacote:
cd $PKG
explodepkg $CWD/_$NAME.tar.gz
# Descompactar o tarball fonte:
cd $TMP
tar xjvf $CWD/$NAME-$VERSION.tar.bz2
cd $NAME-$VERSION
# Aplicar patches:
zcat $CWD/$NAME-$VERSION.patch.gz | patch -p1
# Iniciar a compilação:
make clean
CFLAGS="-O2 -march=i386 -mcpu=i686"
./configure --prefix=/usr i386-slackware-linux
make
make install DESTDIR=$PKG
( cd $PKG/usr/bin
strip *
chown -R root.bin . )
# Copiando documentação:
mkdir -p $PKG/usr/doc/$NAME-$VERSION
cp -r `ls [A-Z]*` $PKG/usr/doc/$NAME-$VERSION/
# Copiando o slack-desc com a descrição do pacote:
cat $CWD/slack-desc > $PKG/install/slack-desc
# Criando o pacote:
cd $PKG
makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.tgz
# Rotina de limpeza:
if [ "$1" = "--cleanup" ]; then
rm -rf $PKG
rm -rf $TMP/$NAME-$VERSION
fi
# Log do processo
) 2>&1 | tee $CWD/$NAME.build.log
Uma outra forma de automatizar o processo é através do protopkg, um utilitário criado por David Cantrell, do time do Slackware, e encontrado no diretório unsupported/ da distro.
O protopkg utiliza-se de "protótipos" (prototypes), que são arquivos que contém algumas funções que são interpretadas pelo protopkg para criar os pacotes tgz.
P.S.:
Para automatizar a criação de pacotes tgz a partir de scripts .build há o projeto slacktrack.
|