Mein eigenes RPM führt die %install-Sequenz nicht aus

Mein eigenes RPM führt die %install-Sequenz nicht aus

Ich habe zum ersten Mal ein RPM-Paket erstellt. Dieses RPM ist eine gepackte Frontend-App. Bei der Installation müssen nur die App-Dateien verschoben und ein Nginx-Neustart durchgeführt werden. 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ühre, exit 0 und die %install-Sequenz 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 das richtig verstehe, wenn ich mein SRPM mit rpm -ivh name.rpm installieredie %install-Sequenz muss ausgeführt werden, habe ich Recht? Wenn ja, wird die Sequenz nicht ausgeführt (keine Dateien nach /var/www/myapp kopieren und kein Neustart von nginx). Das Ausführen des RPM ist dasselbe.

Der Inhalt des SRPM ist korrekt, alle Dateien sind vorhanden. Und das RPM ist leer.

Antwort1

Wie Sie sagten, %installdient dieser Abschnitt zum Konfigurieren der anfänglichen RPM-Build-Sätze, die Sie einrichten müssen.

Um Ihr Ziel zu erreichen, müssen Sie %postAbschnitte verwenden. Darin können Sie beispielsweise die Ausführung Ihrer eigenen .sh-Datei definieren oder die Sätze, die Sie benötigen, nacheinander festlegen, zum Beispiel:

sudo service restart nginx

Das Problem mit dem leeren RPM liegt daran, dass %filesder Abschnitt nicht richtig ausgefüllt wurde. Die in das RPM verschobenen Binärdateien beziehen sich auf den Inhalt dieses Abschnitts (%files).

Antwort2

Ok, ich habe mich geirrt... denn dasDokumentsagt:

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

verwandte Informationen