Repository 32bit  Forum
Repository 64bit  Wiki

Slackware & SlackBuild: differenze tra le versioni

Da Slacky.eu.
m (Introduzione:)
m (Uso dello Script:)
Riga 62: Riga 62:
L'opzione --cleanup aiuta l'eliminazione automatica delle directory di lavoro.
L'opzione --cleanup aiuta l'eliminazione automatica delle directory di lavoro.
  +
= Esempio di SlackBuild: =
= Esempio di SlackBuild: =

Versione delle 09:35, 11 apr 2012

Indice

Introduzione:

Lo SlackBuild è semplicemente uno script contenente una lista di comandi strutturati 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-desc, 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 .txz che sono dei precompilati achiviati con tar e compressi con xz.

A differenza dell'.rpm o del .dep il .txz non gestisce le dipendenze ma gli utilizzatori della distro dei SubGenius non ci fanno tanto caso.

Questi file li trovate sull'ftp della Slackware nella cartella source, su http://slackbuilds.org, il nostro e diversi altri che in questi ultimi anni hanno capito l'importanza di rendere disponibili questi preziosi script.

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

Strumenti personali
Namespace

Varianti