Slackware & SlackBuild: differenze tra le versioni
m (→Uso dello Script:) |
|||
| (4 revisioni intermedie di un utente non mostrate) | |||
| Riga 2: | Riga 2: | ||
= Introduzione: = |
= Introduzione: = |
||
| − | Lo SlackBuild è semplicemente uno script contenente una lista di comandi stutturati |
+ | Lo SlackBuild è semplicemente uno script contenente una lista di comandi strutturati |
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. |
||
| Riga 9: | Riga 9: | ||
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-desc, 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 .txz che sono dei precompilati |
| − | achiviati con tar e compressi con gzip. |
+ | achiviati con tar e compressi con xz. |
| − | A differenza dell'.rpm o del .dep il .tgz non gestisce le dipendenze ma gli utilizzatori |
+ | 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 :) |
+ | 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 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. |
| − | 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. |
||
| + | |||
= Uso dello Script: = |
= Uso dello Script: = |
||
| Riga 53: | Riga 54: | ||
Ovviamente la lista è lunga questi sono solo alcuni dei processori x86 più usati, se volete una lista completa vi leggete il man di gcc |
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-4.5.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 |
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 |
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 prescelta pronto per l'installazione. |
| − | L'opzione --cleanup aiuta l'eliminazione automatica delle directory di lavoro. |
+ | L'opzione --cleanup, se prevista, aiuta l'eliminazione automatica delle directory di lavoro. |
| − | = Esempio di SlackBuild: = |
||
| − | Questo è un breve esempio (commentato) di SlackBuild: |
||
| − | <pre> |
||
| − | #! /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 |
||
| − | </pre> |
||
= Considerazioni Finali: = |
= Considerazioni Finali: = |
||
| Riga 136: | Riga 68: | ||
Ottimizzare alcune applicazioni e molto altro...... |
Ottimizzare alcune applicazioni e molto altro...... |
||
| − | autore: [[Utente:Loris | Loris ]] 2004 |
+ | autore: [[Utente:Loris | Loris ]] 2012 |
Versione attuale delle 13:01, 11 apr 2012
[modifica] 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.
[modifica] 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-4.5.2/gcc/Optimize-Options.html#Optimize%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 prescelta pronto per l'installazione.
L'opzione --cleanup, se prevista, aiuta l'eliminazione automatica delle directory di lavoro.
[modifica] 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 2012