2015-04-07 11 views
6

Ich habe einen zentralen Logging-Server auf Linux entwickelt. An diesem Punkt versuche ich zu konsolidieren, um die Dinge ein wenig leichter zu machen, um sie auf eine andere Maschine zu laden. Ich möchte ein RPM haben, das mehrere Programme auf einmal installiert. Ich arbeite an einem CentOS 7 Server. die Programme, die ich suche in eine Drehzahl wären zu packen:mehrere tar (Quelldateien) Dateien in rpm.spec Datei

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

ich ziemlich viel getan habe, liest in Umdrehungen pro Minute, nur eine harte Zeit zu verstehen, wie mehrere Quellen in eine RPM zu bekommen. Der Grund, warum ich die Quelle installiere und nicht nur die Installation, liegt an den Konfigurationen, die ich im "./configure --enable-example" aufrufen muss. Also habe ich Source diese Programme auf meinem Rechner installiert und dann habe ich sie auf die Festplatte gesetzt und versucht, diese Datei als Quelle zu benutzen. Irgendwelche Ideen oder jemand, der mich in die richtige Richtung zeigen könnte, würde sehr geschätzt werden.

Antwort

9

Sie können so viele Source Zeilen wie Sie benötigen und so viele %setup Makroaufrufe in Ihrer Spezifikationsdatei haben, wie Sie übereinstimmen müssen.

Vom Using %setup in a Multi-source Spec File Schnitt der in dem Online-Maximum RPM Buch finden wir:

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.