2015-04-07 39 views
6

Linux'ta merkezi bir günlüğe kaydetme sunucusu buldum. Bu noktada, işleri başka bir makineye yüklemek için biraz daha kolay hale getirmek için sağlamlaştırmaya çalışıyorum. Tek çekimde birden fazla program yükleyecek bir RPM'ye sahip olmak istiyorum. Bir CentOS 7 sunucusunda çalışıyorum. Bir rpm paketlemek için arıyorum programlar olacaktır: Sadece bir RPM içine birden fazla kaynağı anladıktan zorlanıyorum, RPM içine okuma biraz yapıyorçoklu katran (kaynak dosyaları) dosyaları

eventlog 2.12 
libdbi 0.9.0 
freetds 0.91 
libdbi-drivers 0.9.0 
json-c 
syslog-ng 3.5.6 

. Bunları yüklemek için kaynak oluşturmamın ve sadece onları yüklememenin nedeni, "./configure --enable-example" içinde çağırmam gereken yapılandırmalardan kaynaklanıyor. Bu yüzden tüm bu programları makineme yükledim ve sonra onları yedekledim ve bu dosyayı bir kaynak olarak kullanmaya çalıştım. Beni doğru yöne çevirebilecek herhangi bir fikir ya da herhangi biri çok takdir edilecektir.

cevap

9

İhtiyaç duyduğunuz kadar özellikte %setup makro çağrısına sahip olabileceğiniz kadar Source satırını listeleyebilir ve eşleştirmeniz gerekebilir. Online Maksimum RPM kitapta arasında Using %setup in a Multi-source Spec File bölümünden

buluruz: Bu örnek amaçları bakımından

, bizim özellik dosyası aşağıdaki üç kaynak etiketlerini sahip olacaktır: [1]

source: source-zero.tar.gz 
source1: source-one.tar.gz 
source2: source-two.tar.gz 

İlk kaynağı açmak için zor değil; 'gerekli tüm bu hiçbir seçenekleri ile% kurulum kullanmaktır:

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 . 

....

Şimdi

ikinci kaynak dosyasını ekleyelim:

%setup 

Bu komutlar aşağıdaki kümesi üretir. Burada işler biraz daha ilginç oluyor. İlk olarak, hangi kaynak etiketini (ve dolayısıyla hangi kaynak dosyayı) konuştuğumuzu belirtmeliyiz. Bu yüzden, kaynak arşivinin özelliklerine bağlı olarak ya-a veya -b seçeneğini kullanmamız gerekiyor. Bu örnek için, diyelim ki istediğimiz seçenek budur. Bu seçeneği ekleme, artı bir "1" kaynak1 etiketinde belirtilen kaynak dosyasına işaret etmek elimizde:

%setup -a 1 

biz zaten iki kopya halinde -a veya -b seçeneği sonuçlarını kullanarak açma gördüm yana biz -T seçeneği ekleyerek açma varsayılan devre dışı bırakmanız gerekir:

%setup -T -a 1 

sonra, üst düzey dizin silinmez emin olmak gerekir. Aksi halde, yeni açtığımız ilk kaynak dosyaya giderdi. Bu, bunun olmasını önlemek için -D seçeneğine yer vermemiz gerektiği anlamına gelir. Bu son seçenek ekleme ve bizim% hazırlık komut tamamlandı makro dahil, şimdi var:

%setup 
%setup -T -D -a 1 

Bu aşağıdaki komutları sonuçlanır: çok iyi

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 . 

Şimdiye kadar. En son kaynak dosyayı ekleyelim, ancak bununla birlikte, cdplayer-1.0 adlı veritabanı alt dizininde paketin açılması gerektiğini söyleyebiliriz. Bu durumda% kurulumunu kullanabilir miyiz?

Kaynak-two.tgz veritabanı alt dizinini oluşturduysa yapabilirdik. Değilse, o zaman el ile yapılması gerekecektir. Örneğimizin amacı için, kaynak-two.tgz'in veritabanı alt dizinini içerecek şekilde oluşturulmadığını söyleyelim, bu yüzden bunu kendimiz yapmak zorundayız. İşte% hazırlık komut artık var:

%setup 
%setup -T -D -a 1 
mkdir database 
cd database 
gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf - 

İşte ortaya çıkan senaryo: Biz kaynaklarının son setini açmak için eklenen üç komutları% hazırlık komut sonuna eklenmiştir

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 - 

.

İlgili konular