2016-06-03 19 views
0

Ich habe eine RPM, die Dateien auf dem Zielcomputer platziert. Wie kann Shellskript so geschrieben werden, dass es, wenn die Datei bereits existiert, nicht kopiert wird.Wie man Shell-Skript in RPM-Spezifikationsdatei ausführt?

Beschreibung:

Wenn das RPM installieren wird die Datei nicht ersetzen sollte, wenn die Datei in der Lage ist bereits vorhanden. Derzeit ändert sich die Konfiguration, während sie ausgetauscht wird. Ich plane, im Abschnitt% install script eine Bedingung zu schreiben. Ich habe es versucht und es funktioniert nicht, Fehler wie "sonst"/"fi" wird nicht gefunden.

+1

was meinst du mit "in specs folder"? Versuchen Sie in Ihrer Frage etwas präziser zu sein. Meinst du Dateien, die sich im Abschnitt% files befinden? Was passiert jetzt, wenn Sie die RPMs installieren? Was willst du passieren? –

+0

ah eine "Spezifikationsdatei"; ganzer unterschied mit "specs ordner" ... jeez –

+0

Sorry für die Verwirrung. Es war Datei :) –

Antwort

3

im Abschnitt% files Ihrer Spezifikationsdatei; Sie können Ihre Dateien mit% config (noreplace) markieren. Auf diese Weise, wenn die Datei bereits auf dem Zielcomputer vorhanden ist; es wird nicht überschrieben (außer wenn es unberührt gelassen wurde ... siehe mehr Details here).

Wenn Sie die vorhandene Datei behalten wollen, egal was; dann kannst du in% pre und% post sections chaotisch umgehen, aber vermeide das wenn du ... sowas wie:

%pre 
# gets executed before installation of the files: 
if [ -e /path/to/file] 
then 
    cp /path/to/file /path/to/backup 
fi 

%post 
# gets executed after installatin of the files 
if [ -e /path/to/file] 
then 
    cp /path/to/backup /path/to/file 
fi 
+0

Wird% pre-Abschnitt vor% prep-Abschnitt ausgeführt? –

+0

du bist verwirrt darüber, wie eine rpm funktioniert ... beim GEBÄUDEN einer rpm; Die Abschnitte% prep,% install,% files und% changelog werden verwendet, um eine * .rpm-Datei zu erstellen. Wenn Sie diese rpm installieren; Der Abschnitt% pre wird auf der Maschine ausgeführt, auf der die Drehzahl installiert ist. dann werden die Dateien (aus dem Abschnitt% files) eingefügt; und dann wird der% post-Bereich installiert. –

+0

normalerweise BUILDING und INSTALLATION geschehen auf verschiedenen Maschinen! –