Repository 32bit  Forum
Repository 64bit  Wiki

Slackware & SlackBuild: differenze tra le versioni

Da Slacky.eu.
 
Riga 4: Riga 4:
in modo tale da generare un pacchetto Slackware base, installabile semplicemente
in modo tale da generare un pacchetto Slackware base, installabile semplicemente
con i tool pkgtool, installpkg o upgradepkg.
con i tool pkgtool, installpkg o upgradepkg.
  +
Lo script lavora sulla base di programmi standard come make, gcc etc etc.
Lo script lavora sulla base di programmi standard come make, gcc etc etc.
  +
Normalmente viene accompagnato dai sorgenti originali del programma da lavorare
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
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.
usato per impartire comandi esterni di modifica o altro a files esterni.
  +
Ricordiamo che la Slackware utilizza i pacchetti .tgz che sono dei precompilati
Ricordiamo che la Slackware utilizza i pacchetti .tgz che sono dei precompilati
achiviati con tar e compressi con gzip.
achiviati con tar e compressi con gzip.
  +
A differenza dell'.rpm o del .dep il .tgz non gestisce le dipendenze ma gli utilizzatori
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 :)
della distro dei SubGenius non ci fanno tanto caso :)
  +
Questi file li trovate nell'ftp della Slackware nella cartella source o in alcuni siti
Questi file li trovate nell'ftp della Slackware nella cartella source o in alcuni siti
come questo o http://zuul.slackware.biz .............
come questo o http://zuul.slackware.biz .............
  +
Attenzione sull'ftp della Slackware troverete anche i file *.build che a differenza dello *.SlackBuild
Attenzione sull'ftp della Slackware troverete anche i file *.build che a differenza dello *.SlackBuild
installa e basta, senza creare il package.
installa e basta, senza creare il package.
Riga 26: Riga 32:
Ricapitolando nella vostra directory ci sarà lo *.SlackBuild i sorgenti lo slack-desc e l'eventuale
Ricapitolando nella vostra directory ci sarà lo *.SlackBuild i sorgenti lo slack-desc e l'eventuale
doinst.sh.
doinst.sh.
Ora se decidete di eseguire lo script così come lo trovate utilizzerete le CFLAGS standard,
+
  +
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.
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.
Se volete ottimizzare il package dovete modificare questi parametri in base al vostro processore.
Riga 32: Riga 38:
con processori x86 inferiori, ovvero processori che non implementano tutte le istruzioni utilizzate dalla
con processori x86 inferiori, ovvero processori che non implementano tutte le istruzioni utilizzate dalla
CPU dichiarata in "-mcpu" (ad es. MMX, 3dNow, ecc...).
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".
Se non siete sicuri di dove verranno eseguiti i vostri binari, quindi, usate "-march=i486" o "-march=i386".
Riga 50: Riga 57:
sulla vostra console scorreranno tutti i comandi scritti nel file, alla restituzione del prompt vi troverete
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.
il pacchetto pronto nella directory /tmp pronto per l'installazione.
  +
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: =
Riga 129: Riga 137:
Ottimizzare alcune applicazioni e molto altro......
Ottimizzare alcune applicazioni e molto altro......
autore: [[Utente:Loris]] 2004
+
autore: [[Utente:Loris | Loris ]] 2004

Versione delle 08:08, 29 ago 2006

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: Loris 2004

Strumenti personali
Namespace

Varianti