Для целей этого примера, наш файл спецификации будет иметь следующие три источника тегов: [1]
source: source-zero.tar.gz
source1: source-one.tar.gz
source2: source-two.tar.gz
Для распаковки первого источника не сложно; Все, что требуется, чтобы использовать настройки% без каких-либо опций:
%setup
Это приводит следующий набор команд:
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 .
....
Теперь давайте добавим второй исходный файл. Здесь интереснее. Во-первых, нам нужно определить, какой исходный тег (и, следовательно, какой исходный файл) мы говорим. Поэтому нам нужно использовать опцию -a или -b, в зависимости от характеристик исходного архива. Для этого примера предположим, что -a - это тот вариант, который мы хотим. Добавление этой опции, плюс «1», чтобы указать исходный файл, указанный в теге source1, мы имеем:
%setup -a 1
Так как мы уже видели, что с помощью -a или -b результатов варианта в двух экземплярах распаковки , нам нужно отключить по умолчанию распаковка, добавив -T опции:
%setup -T -a 1
Далее, нам необходимо убедиться, что каталог верхнего уровня не удаляется. В противном случае первый исходный файл, который мы только что распаковали, исчезнет. Это означает, что нам нужно включить параметр -D, чтобы это не происходило. Добавление этого окончательного варианта, и в том числе в настоящее время полного макроса в нашем% приготовительном сценарии, мы теперь имеем:
%setup
%setup -T -D -a 1
Это приведет к следующим командам:
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 .
До сих пор, так хорошо. Давайте укажем последний исходный файл, но с этим, мы скажем, что его нужно распаковать в подкаталоге cdplayer-1.0, называемой базой данных. Можем ли мы использовать% setup в этом случае?
Мы могли бы, если source-two.tgz создал подкаталог базы данных. Если нет, тогда это необходимо будет сделать вручную. Для целей нашего примера предположим, что source-two.tgz не был создан для включения подкаталога базы данных, поэтому мы должны будем сделать это сами. Вот наш% скрипт приготовительный Сейчас:
%setup
%setup -T -D -a 1
mkdir database
cd database
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -
Вот результирующий скрипт:
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 -
три команды, которые мы добавили распаковывать последний набор источников были добавлены к концу сценария% преп.