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

Slackbuild e Prototypes

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.

©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