Für die Zwecke dieses Beispiels wird unsere spec-Datei die folgenden drei Quell-Tags: [1]
source: source-zero.tar.gz
source1: source-one.tar.gz
source2: source-two.tar.gz
Zum Auspacken der ersten Quelle ist nicht schwer; alles, was erforderlich ist, ohne Optionen% Setup zu verwenden:
%setup
Dies erzeugt die folgenden Befehle:
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 .
....
Nun wollen wir die zweite Quelldatei hinzuzufügen. Die Dinge werden hier ein bisschen interessanter. Zuerst müssen wir herausfinden, welches Quell-Tag (und damit welche Quelldatei) wir sprechen. Daher müssen wir abhängig von den Eigenschaften des Quellarchivs entweder die Option -a oder -b verwenden. Nehmen wir für dieses Beispiel an, dass -a die gewünschte Option ist. Das Hinzufügen dieser Option sowie ein „1“ auf die Quelldatei im source1 Tag angegeben zu zeigen, haben wir:
%setup -a 1
Da haben wir schon gesehen, dass die -a oder -b-Option führt in zweifacher Ausfertigung mit dem Auspacken , müssen wir den Standard Auspacken, indem Sie die Option -T deaktivieren:
%setup -T -a 1
Als nächstes müssen wir sicherstellen, dass das Top-Level-Verzeichnis wird nicht gelöscht. Andernfalls wäre die erste Quelldatei, die wir gerade entpackt haben, verschwunden. Das bedeutet, dass wir die Option -D hinzufügen müssen, um dies zu verhindern. Addiert man diese letzte Option, einschließlich der jetzt vollständigen Makro in unseren% prep Skript haben wir jetzt:
%setup
%setup -T -D -a 1
Das in den folgenden Befehlen führen:
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 .
So weit, so gut. Nehmen wir die letzte Quelldatei, aber mit dieser werden wir sagen, dass sie in einem Unterverzeichnis von cdplayer-1.0 namens Datenbank entpackt werden muss. Können wir in diesem Fall% setup verwenden?
Wir könnten, wenn source-two.tgz das Datenbank-Unterverzeichnis erstellt. Wenn nicht, dann muss es manuell gemacht werden. Für unser Beispiel nehmen wir an, dass source-two.tgz nicht erstellt wurde, um das Datenbank-Unterverzeichnis einzubeziehen, also müssen wir es selbst tun. Hier ist unsere% prep Skript jetzt:
%setup
%setup -T -D -a 1
mkdir database
cd database
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -
Hier ist das resultierende Skript:
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 -
Die drei Befehle wir den letzten Satz von Quellen zu entpacken an das Ende des% prep Skript hinzugefügt wurden.