Repository 32bit  Forum
Repository 64bit  Wiki

Slackware & SlackBuild

Da Slacky.eu.
Versione delle 08:03, 29 ago 2006, autore: L1q1d (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Indice

Introduzione:

Lo SlackBuild è semplicemente uno script contenente una lista di comandi stutturati in modo tale da generare un pacchetto Slackware base, installabile semplicemente con i tool pkgtool, installpkg o upgradepkg. Lo script lavora sulla base di programmi standard come make, gcc etc etc. Normalmente viene accompagnato dai sorgenti originali del programma da lavorare da un file chiamato slack-desck, che contiene la descrizione del pacchetto e dal file doinst.sh usato per impartire comandi esterni di modifica o altro a files esterni. Ricordiamo che la Slackware utilizza i pacchetti .tgz che sono dei precompilati achiviati con tar e compressi con gzip. A differenza dell'.rpm o del .dep il .tgz non gestisce le dipendenze ma gli utilizzatori della distro dei SubGenius non ci fanno tanto caso :) Questi file li trovate nell'ftp della Slackware nella cartella source o in alcuni siti come questo o http://zuul.slackware.biz ............. Attenzione sull'ftp della Slackware troverete anche i file *.build che a differenza dello *.SlackBuild installa e basta, senza creare il package.

Uso dello Script:

L'utilizzo è molto semplice, scaricate i sorgenti (tar.gz tar.bz2 etc) lo *SlackBuild lo slack-desc e l'eventuale doinst.sh in una directory di vostro gradimento, io consiglio di chiamarla con lo stesso nome del programma che state per pacchettizzare, un rapido controllo ai permessi dello script con

# ls -al *SlackBuild e l'eventuale
# chmod 755 *SlackBuild per impostare i giusti permessi di esecuzione dello script.

Ricapitolando nella vostra directory ci sarà lo *.SlackBuild i sorgenti lo slack-desc e l'eventuale doinst.sh. Ora se decidete di eseguire lo script così come lo trovate utilizzerete le CFLAGS standard, Nelle versioni precedenti alla 9.1 Volkerding usava -O2 -march-i386 -mcpu-i686, ora usa -O2 -march-i486 -mcpu-i686. Se volete ottimizzare il package dovete modificare questi parametri in base al vostro processore. In particolare i binari generati da una compilazione con l'opzione "-mcpu" producono binari non compatibili con processori x86 inferiori, ovvero processori che non implementano tutte le istruzioni utilizzate dalla CPU dichiarata in "-mcpu" (ad es. MMX, 3dNow, ecc...). Se non siete sicuri di dove verranno eseguiti i vostri binari, quindi, usate "-march=i486" o "-march=i386".

Alcuni esempi possono essere questi:

  • Celeron (Coppermine) -O2 -march=pentium3 -mcpu=pentium3
  • Celeron (Willamette) -O2 -march=pentium4 -mcpu=pentium4
  • Pentium III -O2 -march=pentium3 -mcpu=pentium3
  • Pentium 4 -O2 -march=pentium4 -mcpu=pentium4
  • Athlon (AMD) -02 -march=athlon -mcpu=athlon
  • Athlon XP (AMD) -02 -march=athlon-xp -mcpu=athlon-xp

Ovviamente la lista è lunga questi sono solo alcuni dei processori x86 più usati, se volete una lista completa vi leggete il man di gcc

http://gcc.gnu.org/onlinedocs/gcc-3.2.2/gcc/Optimize-Options.html#Optimize%20Options
http://gcc.gnu.org/onlinedocs/gcc-3.2.2/gcc/i386-and-x86-64-Options.html#i386%20and%20x86-64%20Options

OK ci siamo ora da root eseguite lo sript con # ./*.SlackBuild --cleanup sulla vostra console scorreranno tutti i comandi scritti nel file, alla restituzione del prompt vi troverete il pacchetto pronto nella directory /tmp pronto per l'installazione. L'opzione --cleanup aiuta l'eliminazione automatica delle directory di lavoro.

Esempio di SlackBuild:

Questo è un breve esempio (commentato) di SlackBuild:

#! /bin/bash
# definiamo alcune variabili contenenti la directory corrente e quella temporanea di lavoro:
CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi
PKG=$TMP/package-xine-lib
# Settiamo qualche altra variabile per velocizzare il lavoro:
NAME=xine-lib
VERSION=1.0
ARCH=i486
BUILD=1
if [ ! -d $TMP ]; then
mkdir -p $TMP # posizione dove creiamo il sorgente
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG # posizione dove creiamo il package
fi
echo "+-----------------+"
echo "| $NAME-$VERSION|"
echo "+-----------------+"
cd $TMP
# scompattiamo il sorgente
tar zxf $CWD/$NAME-$VERSION.tar.gz
# ci portiamo all'interno della directory appena scompattata
cd $NAME-$VERSION
# lanciamo il configure passandogli le opzioni di ottimizzazione di GCC
CFLAGS="-march=i486 -mcpu=i686" ./configure --prefix=/usr
# compiliamo
make
# passiamo a make , con il parametro DESTDIR la dir dove creiamo il package
make DESTDIR=$PKG install
# strippiamo gli eseguibili e le librerie
strip $PKG/usr/bin/*
strip --strip-unneeded $PKG/usr/lib/*.so
strip --strip-unneeded $PKG/usr/lib/xine/plugins/1.0.0/*.so
strip --strip-unneeded $PKG/usr/lib/xine/plugins/1.0.0/post/*.so
strip --strip-unneeded $PKG/usr/lib/xine/plugins/1.0.0/vidix/*.so
# rinominiamo e spostiamo la cartella doc standard, nel caso venga creata in un path non corretto
# come /usr/share/doc/xine-1.0
mv -f $PKG/usr/share/doc $PKG/usr/
mv -f $PKG/usr/doc/xine $PKG/usr/doc/$NAME-$VERSION
# copiamo i file con informazioni da conservare della dir doc
cp -a \
AUTHORS COPYING CREDITS ChangeLog INSTALL NEWS README TODO \
$PKG/usr/doc/$NAME-$VERSION
# gzippiamo le man pages
gzip $PKG/usr/man/man1/*
# impostiamo i permessi
chown -R root.bin $PKG/usr/bin
chown -R root.root $PKG/usr/doc
chmod -R 644 $PKG/usr/doc/$NAME-$VERSION/*
chown -R root.root $PKG/usr/include
chown -R root.root $PKG/usr/man
chown -R root.root $PKG/usr/share
mkdir -p $PKG/install
# copiamo slack-desc in install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
# Creiamo il pacchetto con makepkg
makepkg -l y -c n $TMP/$NAME-$SLVERSION-$ARCH-$BUILD.tgz
# eliminiamo le dir di lavoro qualora avessimo eseguito lo SlackBuild con l'opzione --cleanup
if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi

Considerazioni Finali:

L'uso di questi script è molto utile in caso di ricompilazioni sicure oppure se volete una versione nuova di un pacchetto non ancora disponibile nel ramo current potrete, editando a dovere lo SlackBuild compilare in modo automatico e sicuro i nuovi sorgenti. Ottimizzare alcune applicazioni e molto altro......

autore: Utente:Loris 2004

Strumenti personali
Namespace

Varianti