Mein eigenes RPM führt keine% Installationssequenz aus

511
Kalamarico

Ich baute zum ersten Mal ein RPM-Paket. Dieses RPM ist eine gepackte Front-End-App. Die Installation muss nur die App-Dateien verschieben und einen Nginx-Neustart durchführen. Dies ist meine Spezifikationsdatei:

Name: my-portal-app  Version: 2.1  Release: 1%{?dist}  Summary: Descripcion  License: No-license  URL: nourl  Source0: my-portal-app-2.1.tar.gz  %description My app install  %prep %setup -q   %build #%configure #make %{?_smp_mflags}  %install #rm -rf $RPM_BUILD_ROOT cp -r ./* /var/www/myapp service nginx restart  %clean rm -rf $RPM_BUILD_ROOT  %files %defattr(-,root,root,-) %doc  %changelog 

Alles ist in Ordnung, wenn ich rpmbuild -ba ausführen, 0 beenden und die Installationsreihenfolge von% berechnet wird (Dateien kopieren und nginx neu starten). Ok, rpmbuild generiert das RPM (in rpmbuild / RPMS) und das SRPM in (rpmbuild / SRPMS).

Aber wenn ich gut verstehe, wenn ich mein SRPM mit rpm -ivh name.rpm installiere, muss die% install-Sequenz ausgeführt werden. Wenn ja, wird die Sequenz nicht ausgeführt (Dateien nicht nach / var / www / myapp kopieren und Nginx nicht neu starten). Gleiche Ausführung des RPM.

Der Inhalt des SRPM ist korrekt, alle Dateien sind in. Und der RPM ist leer.

2

2 Antworten auf die Frage

2
Calg

Wie Sie gesagt haben, ist der %installAbschnitt für das Konfigurieren erster RPM-Build-Sätze vorgesehen, die Sie einrichten müssen.

Um Ihr Ziel zu erreichen, müssen Sie %postAbschnitt verwenden, indem Sie zum Beispiel die Ausführung Ihrer eigenen .sh definieren oder die Sätze, die Sie benötigen, nacheinander festlegen, zum Beispiel:

sudo service restart nginx 

Bei der Ausgabe des leeren RPM handelt es %filessich um einen nicht ordnungsgemäß ausgefüllten Abschnitt. Die in RPM verschobenen Binärdateien beziehen sich auf den Inhalt dieses Abschnitts (% files).

1
Kalamarico

Ok, ich habe mich geirrt ... wie dieses Dokument sagt:

Der% -Installationsabschnitt wird nicht ausgeführt, wenn das binäre RPM-Paket vom Endbenutzer installiert wird, sondern nur beim Erstellen eines Pakets.

Der richtige Abschnitt, um mein Ziel zu erreichen, ist% post Kalamarico vor 7 Jahren 0