Ai fini di questo esempio, il nostro file spec avrà le seguenti tre etichette di origine: [1]
source: source-zero.tar.gz
source1: source-one.tar.gz
source2: source-two.tar.gz
Disimballare la prima fonte non è difficile; tutto quello che serve è quello di utilizzare l'installazione% senza opzioni:
%setup
Questo produce il seguente serie di comandi:
cd /usr/src/redhat/BUILD
rm -rf cdplayer-1.0
gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf -
if [ $? -ne 0 ]; then
exit $?
fi
cd cdplayer-1.0
cd /usr/src/redhat/BUILD/cdplayer-1.0
chown -R root.root .
chmod -R a+rX,g-w,o-w .
....
Ora aggiungiamo il secondo file di origine. Le cose diventano un po 'più interessanti qui. Innanzitutto, dobbiamo identificare quale tag sorgente (e quindi, quale file sorgente) stiamo parlando. Quindi dobbiamo usare l'opzione -a o -b, a seconda delle caratteristiche dell'archivio sorgente. Per questo esempio, diciamo che -a è l'opzione che vogliamo. L'aggiunta di questa opzione, oltre a un "1" per puntare al file di origine specificato nel tag source1, abbiamo:
%setup -a 1
Dal momento che abbiamo già visto che utilizzando il -a o risultati di opzione -b in duplice copia disimballaggio , abbiamo bisogno di disattivare il default disimballaggio aggiungendo l'opzione -T:
%setup -T -a 1
Avanti, abbiamo bisogno di fare in modo che la directory di livello superiore non viene eliminato. Altrimenti, il primo file sorgente che abbiamo appena scompattato sarebbe scomparso. Ciò significa che dobbiamo includere l'opzione -D per evitare che ciò accada. L'aggiunta di questa opzione finale, compresa la macro terminata nel nostro script% prep, ora abbiamo:
%setup
%setup -T -D -a 1
Questo si tradurrà nei seguenti comandi:
cd /usr/src/redhat/BUILD
rm -rf cdplayer-1.0
gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf -
if [ $? -ne 0 ]; then
exit $?
fi
cd cdplayer-1.0
cd /usr/src/redhat/BUILD/cdplayer-1.0
chown -R root.root .
chmod -R a+rX,g-w,o-w .
cd /usr/src/redhat/BUILD
cd cdplayer-1.0
gzip -dc /usr/src/redhat/SOURCES/source-one.tar.gz | tar -xvvf -
if [ $? -ne 0 ]; then
exit $?
fi
cd /usr/src/redhat/BUILD/cdplayer-1.0
chown -R root.root .
chmod -R a+rX,g-w,o-w .
Fin qui, tutto bene. Includiamo l'ultimo file sorgente, ma con questo, diremo che deve essere decompresso in una sottodirectory di cdplayer-1.0 chiamata database. Possiamo usare% setup in questo caso?
Si potrebbe, se source-two.tgz ha creato la sottodirectory del database. Altrimenti, sarà necessario farlo a mano. Per gli scopi del nostro esempio, supponiamo che source-two.tgz non sia stato creato per includere la sottodirectory del database, quindi dovremo farlo da soli. Ecco il nostro script di preparazione% attuale:
%setup
%setup -T -D -a 1
mkdir database
cd database
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -
Ecco lo script risultante:
cd /usr/src/redhat/BUILD
rm -rf cdplayer-1.0
gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf -
if [ $? -ne 0 ]; then
exit $?
fi
cd cdplayer-1.0
cd /usr/src/redhat/BUILD/cdplayer-1.0
chown -R root.root .
chmod -R a+rX,g-w,o-w .
cd /usr/src/redhat/BUILD
cd cdplayer-1.0
gzip -dc /usr/src/redhat/SOURCES/source-one.tar.gz | tar -xvvf -
if [ $? -ne 0 ]; then
exit $?
fi
mkdir database
cd database
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -
I tre comandi che abbiamo aggiunto per decomprimere l'ultima serie di fonti sono stati aggiunti alla fine dello script% prep.