• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

rpmbuild uebersieht einen Teil des Pfades

Hallo,

ich habe folgendes spec File:

Summary: libexiv2, some library
Name: exiv2
Version: 0.9.1
Release: 1
Copyright: GPL
Group: System Environment/Base
Source: exiv2-0.9.1.tar.gz
BuildRoot: /var/tmp/%{name}-buildroot

%description
bla

%prep
%setup -q

%build
./configure
make

%install
make install DESTDIR=%{buildroot} prefix=%{_prefix}

%files


Die %files section ist also leer damit ich sehe welche Files er installieren will und ich die Section fuellen kann. Ich bekomme folgenden Output:

RPM build errors:
Installed (but unpackaged) file(s) found:
/usr/bin/exiv2
/usr/bin/exiv2-config
/usr/include/exiv2/basicio.hpp
/usr/include/exiv2/canonmn.hpp
/usr/include/exiv2/crwimage.hpp
/usr/include/exiv2/datasets.hpp

Wenn ich das Source file aber ganz normal mit configure,make, make install installiere landen diese Files nicht in /usr/bin und /usr/include sondern in /usr/local/bin und /usr/local/include, sprich rpmbuild vergisst den "local" Teil im Pfad. Kann mir jemand sagen was hier falsch laeuft?
 
OP
K

klaus-dieter

Hacker
scheint am prefix vom make install zu liegen. Man hat mir in einem anderen Beitrag gesagt man solle diese Optionen verwenden. Kann mir jemand sagen was genau dieses prefix macht?
 

oc2pus

Ultimate Guru
der Fehler passiert schon beim configure Aufruf ;)

da musst du schreiben
Code:
./configure --prefix=/usr
oder
Code:
./configure --prefix=%{_prefix}
oder
Code:
%configure
 
OP
K

klaus-dieter

Hacker
Kannst du mir ein paar Worte sagen was die Unterschiede sind und welche Variante welche vor und Nachteile hat?
 

}-Tux-{

Hacker
Verwende am Besten %configure, dann werden die korrekten Pfade etc benutzt.

Wenn du z.B. es nach /usr/local installieren willst kannst es auch mit %configure machen:

%configure --prefix=/usr/local

}-Tux-{
 

admine

Ultimate Guru
}-Tux-{ schrieb:
Verwende am Besten %configure, dann werden die korrekten Pfade etc benutzt.
@Jochen_r
Und das ist ein RPM-Macro.
Welche es da so gibt und was sie bedeuten / beinhalten siehst du unter
/usr/lib/rpm/macros
 
OP
K

klaus-dieter

Hacker
/usr/lib/rpm/macros gibt es bei mir nicht :-(

ich habe jetzt mein spec-File so geaendert:

%build
%configure
make

%install
make install DESTDIR=%{buildroot}

leider fehlt mir jetzt wieder das "local" im Pfad. Ich moechte dass die Files spaeter im gleichen Verzeichnis liegen wie beim manuellen erstellen.

Woher weiss das System denn beim manuellen erstellen in welche Verzeichnisse es die Files kopieren soll?

Wodurch wird die Variable _prefix in --prefix=%{_prefix} ersetzt?

Ich moechte moeglichst wenig manuel verbiegen, es muss doch moeglich sein rpmbuild zu sagen mach es so wie es beim manuellen installieren passieren wuerde?
 
Jochen_r schrieb:
/usr/lib/rpm/macros gibt es bei mir nicht :-(
Das macht nichts, Du kannst Dir die RPM-Macros auch mit
Code:
rpm --showrc
anzeigen lassen.
Jochen_r schrieb:
leider fehlt mir jetzt wieder das "local" im Pfad. Ich moechte dass die Files spaeter im gleichen Verzeichnis liegen wie beim manuellen erstellen.
Dann ignorier sämtliche Tipps zu %configure und verwende wieder ./configure. Beachte den Unterschied: "./" statt "%" vor "configure".
Jochen_r schrieb:
Woher weiss das System denn beim manuellen erstellen in welche Verzeichnisse es die Files kopieren soll?
Das weiß das System gar nicht, sondern es steht in den Makefiles. Die Vorgabe, wenn man keinen Prefix selbst angibt, ist /usr/local.
Jochen_r schrieb:
Wodurch wird die Variable _prefix in --prefix=%{_prefix} ersetzt?
Durch /usr. Kannst Du selbst überprüfen:
Code:
rpm --showrc | grep _prefix
Jochen_r schrieb:
Ich moechte moeglichst wenig manuel verbiegen, es muss doch moeglich sein rpmbuild zu sagen mach es so wie es beim manuellen installieren passieren wuerde?
Das sollte mit den Tipps jetzt klappen, trotzdem eine kleine Anmerkung dazu: RPMs sind eigentlich so gedacht, dass sie gerade eben nichts nach /usr/local installieren, weil /usr/local für manuell installierte Software gedacht ist. Aber wenn Du es so haben willst, dann steht es Dir natürlich frei, es so zu machen.
 
Oben