2015-04-07 17 views
6

Ho creato un server di registrazione centralizzato su linux. A questo punto sto cercando di consolidare per rendere le cose un po 'più facili da caricare su un'altra macchina. Voglio avere un RPM che installerà più programmi in un colpo solo. Sto lavorando su un server CentOS 7. i programmi che sto cercando di mettere in valigia in un numero di giri sarebbero:file tar multipli (file di origine) nel file rpm.spec

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

ho fatto un po 'di lettura in RPM, solo che hanno difficoltà a capire come ottenere più fonti in un unico RPM. La ragione per cui sto installando questi e non solo yum installandoli è a causa delle configurazioni che devo chiamare all'interno di "./configure --enable-example". Quindi ho installato tutti questi programmi sulla mia macchina e li ho ripristinati e provando a usare quel file come sorgente. Qualsiasi idea o qualcuno che possa indicarmi la giusta direzione sarebbe molto apprezzata.

risposta

9

È possibile elencare tutte le linee Source necessarie e disporre di tutte le chiamate di macro %setup nel file spec necessario per la corrispondenza.

Dalla sezione Using %setup in a Multi-source Spec File della nella linea libro Maximum RPM troviamo:

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.

Problemi correlati