Uno SlackBuild ben fatto rende l'installazione ripetibile, disinstallabile e condivisibile. Evita installazioni "a mano" sparse in
/usr/local senza controllo.1. Struttura tipica
nomeprogramma/
nomeprogramma.SlackBuild
slack-desc
doinst.sh # opzionale
nomeprogramma.info # opzionale / stile SBo
sorgenti/ oppure URL
2. Variabili base nello SlackBuild
PRGNAM=mioprogramma
VERSION=${VERSION:-1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_vl}
ARCH=${ARCH:-x86_64}
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
Usare variabili standard semplifica rebuild, upgrade e manutenzione.
3. Schema di lavoro consigliato
- Pulisci directory temporanee
- Estrai sorgenti
- Configura/compila
- Installa in
$PKG(mai direttamente nel sistema) - Aggiungi
slack-desce permessi corretti - Crea pacchetto con
makepkg
4. Esempio minimale di SlackBuild
#!/bin/sh
set -e
PRGNAM=helloapp
VERSION=${VERSION:-1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_vl}
ARCH=${ARCH:-x86_64}
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xf /path/to/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
./configure --prefix=/usr
make
make install DESTDIR=$PKG
mkdir -p $PKG/install
cp /path/to/slack-desc $PKG/install/slack-desc
find $PKG -type f -perm 777 -exec chmod 755 {} \;
chown -R root:root $PKG
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txz
5. File slack-desc
Descrive il pacchetto nel formato Slackware (11 righe, prefisso nomepacchetto). Mantieni testo chiaro e breve.
helloapp: helloapp (utility di esempio)
helloapp:
helloapp: Utility di esempio per mostrare la struttura di uno SlackBuild.
helloapp: Pacchetto creato per Slackware.
helloapp:
helloapp:
helloapp:
helloapp:
helloapp:
helloapp:
helloapp:
6. Buone pratiche
- Installa sempre in
DESTDIR=$PKG - Evita path hardcoded non standard se non necessari
- Normalizza ownership:
root:root - Rendi lo script ripetibile (pulizia iniziale)
- Versiona
BUILDeTAGcon criterio
Non eseguire
make install senza DESTDIR durante il packaging: sporchi il sistema e il pacchetto risultante sara' incompleto.7. Installazione e test pacchetto
installpkg /tmp/helloapp-1.0-x86_64-1_vl.txz
upgradepkg --install-new /tmp/helloapp-1.0-x86_64-1_vl.txz
removepkg helloapp
8. Debug rapido
sh -x ./helloapp.SlackBuild
tree /tmp/SBo/package-helloapp # se tree installato
less /var/log/packages/helloapp-*
Checklist finale
[ ] Script pulisce TMP/PKG
[ ] Build ripetibile
[ ] make install usa DESTDIR=$PKG
[ ] slack-desc presente
[ ] makepkg crea .txz con naming corretto
[ ] Pacchetto testato con installpkg/removepkg