Hallo! Ich habe mein eigenes rpm packet mit rpm -ba foo.spec erstellt (siehe unten). Dannach habe ich das erstelle rpm Packet mittels rpm -i /usr/src/packages/RPMS/i386/ivcall-0.1-3.i386.rpm installiert. In meinem %install Abschnitt habe ich zum Test ein mkdir /usr/local/tools eingefügt. Mkdir wird aber nur beim Builden des Packet ausgeführt, nicht beim installieren (rpm -i xx) Kann mir jemand sagen warum? Schonmal Danke im Vorraus! Gruss Mario cat foo.spec ---------------------------- Summary: bla Name: ivcall Version: 0.1 Release: 3 Copyright: me Source: ivcall-0.1.tar.gz Patch: fooblah.patch Group: System Environment/Base BuildRoot: /var/tmp/%{name}-buildroot %description later %prep %setup %install mkdir /usr/local/tools/ %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %changelog later rpm -ba foo.spec ------------------------------------- # rpm -ba foo.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.95417 + umask 022 + cd /usr/src/packages/BUILD + cd /usr/src/packages/BUILD + rm -rf ivcall-0.1 + /bin/gzip -dc /usr/src/packages/SOURCES/ivcall-0.1.tar.gz + tar -xvvf - drwxr-sr-x 1000/users 0 2002-03-25 23:43:42 ivcall-0.1/ -rw-r--r-- 1000/users 827 2002-03-25 23:37:51 ivcall-0.1/Makefile -rw-r--r-- 1000/users 2827 2002-03-25 23:43:40 ivcall-0.1/README.in -rw-r--r-- 1000/users 2819 2002-03-25 23:43:42 ivcall-0.1/README -rw-r--r-- 1000/users 17992 2000-10-09 13:59:01 ivcall-0.1/COPYING -rw-r--r-- 1000/users 15377 2000-10-09 14:05:59 ivcall-0.1/ivcall.c + STATUS=0 + '[' 0 -ne 0 ']' + cd ivcall-0.1 ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chown -Rhf root . ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chgrp -Rhf root . + /bin/chmod -Rf a+rX,g-w,o-w . + mkdir /usr/local/tools/ + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.82591 + umask 022 + cd /usr/src/packages/BUILD + cd ivcall-0.1 + RPM_BUILD_ROOT=/var/tmp/ivcall-buildroot + export RPM_BUILD_ROOT + test -x /usr/sbin/Check -a 0 = 0 + echo 'I call /usr/sbin/Check...' I call /usr/sbin/Check... + /usr/sbin/Check + /usr/lib/rpm/brp-compress /usr/lib/rpm/brp-compress: cd: /var/tmp/ivcall-buildroot: No such file or direct ory Processing files: ivcall-0.1-3 Wrote: /usr/src/packages/SRPMS/ivcall-0.1-3.src.rpm Wrote: /usr/src/packages/RPMS/i386/ivcall-0.1-3.i386.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.75451 + umask 022 + cd /usr/src/packages/BUILD + cd ivcall-0.1 + rm -rf /var/tmp/ivcall-buildroot + exit 0
* On Wed, 08 Jan 2003 at 11:24 +0100, Mario Ohnewald wrote:
Ich habe mein eigenes rpm packet mit rpm -ba foo.spec erstellt (siehe unten). Dannach habe ich das erstelle rpm Packet mittels rpm -i /usr/src/packages/RPMS/i386/ivcall-0.1-3.i386.rpm installiert.
In meinem %install Abschnitt habe ich zum Test ein mkdir /usr/local/tools eingefügt. Mkdir wird aber nur beim Builden des Packet ausgeführt, nicht beim installieren (rpm -i xx) Kann mir jemand sagen warum?
Man möge mich korrigieren, wenn ich falsch liege (meine Paketbautätigkeiten beschränken sich auf deb's), aber soweit ich weiß/vermute/interpretiere bezieht sich der Schritt %install auf die zu make install analoge Tätigkeit, also das Installieren der gerade kompilierten Sourcen in ein Dummy-Verzeichnis, aus welchem sie dann in das Paket verpackt werden. Das konkrete Verzeichnis sollte also als Unterverzeichnis von /var/tmp/%{name}-buildroot angelegt werden, also mkdir /var/tmp/%{name}-buildroot/usr/local/tools. Wennjs Dir darum geht, andere Aktionen durchzuführen, die tatsächlich bei der Installation des Paketes durchgeführt werden müssen (ein Verzeichnis lässt sich ja eh prima in das Paket packen), dann brauchst Du ein pre- oder postinstall Skript - Nähere teilt Dir sicher eine freundliche RPM-Doku mit, da habe ich keine Ahnung. -- Adalbert GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Wed, 08 Jan 2003, Adalbert Michelic wrote:
* On Wed, 08 Jan 2003 at 11:24 +0100, Mario Ohnewald wrote:
Ich habe mein eigenes rpm packet mit rpm -ba foo.spec erstellt (siehe unten). Dannach habe ich das erstelle rpm Packet mittels rpm -i /usr/src/packages/RPMS/i386/ivcall-0.1-3.i386.rpm installiert.
In meinem %install Abschnitt habe ich zum Test ein mkdir /usr/local/tools eingefügt.
*autsch*
Man möge mich korrigieren, wenn ich falsch liege (meine Paketbautätigkeiten beschränken sich auf deb's), aber soweit ich weiß/vermute/interpretiere bezieht sich der Schritt %install auf die zu make install analoge Tätigkeit, also das Installieren der gerade kompilierten Sourcen in ein Dummy-Verzeichnis, aus welchem sie dann in das Paket verpackt werden.
Exakt. Bei den meisten .specs steht dann auch mehr oder weniger nur folgendes im %install-Abschnitt des .specs: ==== %install make DESTDIR="$RPM_BUILD_ROOT" install ====
Das konkrete Verzeichnis sollte also als Unterverzeichnis von /var/tmp/%{name}-buildroot angelegt werden, also mkdir /var/tmp/%{name}-buildroot/usr/local/tools.
Man sollte (wie oben) RPM_BUILD_ROOT verwenden, und dieses sollte als '%{_tmppath}/%{name}-%{version}-buildroot' definiert sein (durch den 'BuildRoot:'-Tag.
Wennjs Dir darum geht, andere Aktionen durchzuführen, die tatsächlich bei der Installation des Paketes durchgeführt werden müssen (ein Verzeichnis lässt sich ja eh prima in das Paket packen), dann brauchst Du ein pre- oder postinstall Skript - Nähere teilt Dir sicher eine freundliche RPM-Doku mit, da habe ich keine Ahnung.
Jep. Gehe nach www.rpm.org und lade dir das (Maximum-) RPM-Book. -dnh -- "I think there is a world market for maybe five computers." -- Thomas Watson, chairman of IBM, 1943.
Mario Ohnewald wrote:
In meinem %install Abschnitt habe ich zum Test ein mkdir /usr/local/tools eingefügt. Mkdir wird aber nur beim Builden des Packet ausgeführt, nicht beim installieren (rpm -i xx) Kann mir jemand sagen warum?
Weil diese Stelle (%install) nur beim Builden von Paketen ausgefuehrt wird. Was du suchst sind moeglicherweise die Scripts, die dann zur Install / Erase-time aufgerufen werden. %pre %post %preun %postun (Maximum RPM PDF 1.1, S. 405) Peter
participants (4)
-
Adalbert Michelic
-
David Haller
-
Mario Ohnewald
-
Peter Wiersig