Slackware & SlackBuild: differenze tra le versioni
(Nessuna differenza)
|
Versione delle 09:08, 29 ago 2006
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: Loris 2004