Theo mục đích của ví dụ này, file spec của chúng tôi sẽ có ba thẻ nguồn sau: [1]
source: source-zero.tar.gz
source1: source-one.tar.gz
source2: source-two.tar.gz
Để giải nén nguồn đầu tiên không khó; tất cả những gì cần thiết là sử dụng thiết lập% không có tùy chọn:
%setup
này tạo ra các thiết lập sau các lệnh:
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 .
....
Bây giờ chúng ta hãy thêm các tập tin nguồn thứ hai. Mọi thứ trở nên thú vị hơn ở đây. Đầu tiên, chúng ta cần phải xác định thẻ nguồn nào (và do đó, tệp nguồn nào) mà chúng ta đang nói đến. Vì vậy, chúng ta cần sử dụng tùy chọn -a hoặc -b, tùy thuộc vào đặc tính của kho lưu trữ nguồn. Trong ví dụ này, giả sử rằng -a là tùy chọn chúng ta muốn. Thêm tùy chọn đó, cộng với một "1" để trỏ đến file nguồn định trong thẻ source1, ta có:
%setup -a 1
Vì chúng ta đã thấy rằng việc sử dụng các -a hoặc kết quả lựa chọn -b thành hai bản giải nén , chúng tôi cần phải tắt tính năng giải nén mặc định bằng cách thêm tùy chọn -T:
%setup -T -a 1
Tiếp theo, chúng tôi cần đảm bảo rằng thư mục cấp cao nhất không bị xóa. Nếu không, tệp nguồn đầu tiên mà chúng tôi vừa giải nén sẽ biến mất. Điều đó có nghĩa là chúng ta cần phải bao gồm tùy chọn -D để ngăn chặn điều đó xảy ra. Thêm tùy chọn cuối cùng này, và bao gồm cả vĩ mô đã hoàn tất trong kịch bản% chuẩn bị của chúng tôi, bây giờ chúng ta có:
%setup
%setup -T -D -a 1
này sẽ dẫn đến các lệnh sau:
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 .
Cho đến nay, như vậy tốt. Hãy bao gồm tệp nguồn cuối cùng, nhưng với tệp này, chúng ta sẽ nói rằng nó cần phải được giải nén trong thư mục con của cơ sở dữ liệu cdplayer-1.0 được gọi là. Chúng ta có thể sử dụng% setup trong trường hợp này không?
Có thể, nếu source-two.tgz đã tạo thư mục con cơ sở dữ liệu. Nếu không, sau đó nó sẽ là cần thiết để làm điều đó bằng tay. Với mục đích ví dụ của chúng ta, giả sử rằng source-two.tgz không được tạo ra để bao gồm thư mục con cơ sở dữ liệu, vì vậy chúng ta sẽ phải tự làm điều đó. Dưới đây là% chuẩn bị kịch bản của chúng tôi bây giờ là:
%setup
%setup -T -D -a 1
mkdir database
cd database
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -
Dưới đây là kịch bản kết quả:
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 -
Ba lệnh chúng ta thêm vào giải nén tập cuối cùng của các nguồn đã được thêm vào phần cuối của kịch bản% prep.