U / min & rpmbuild - Verwendung von globalen Umgebungsvariablen, die in der %files-Sektion
Ich kämpfen für eine Weile mit diesem.
Also schrieb ich einen .specs-Datei für mein Projekt und alles ging gut. Das rpm gebaut, die installation ist glatt... aber dann bekam ich noch ärger denn jetzt, ich habe zu verwenden eine benutzerdefinierte Umgebungsvariable festlegen, die Installation Pfad.
Dies würde ein %files-Abschnitt :
%files
%defattr(-,root,root)
$INSTALLPATH/Crystal/bin/Crystal.jar
Wo Crystal ist mein Projekt name und INSTALLATIONSPFAD definiert in env Dank der export-Befehl ein. Dann, beim laufen
buildrpm -ba-Kristall.Spezifikationen
Ich habe den folgenden Fehler:
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar
Habe ich versucht zu definieren, ein makro innerhalb der .rpmmacros-Datei als solche :
%_installpath $INSTALLPATH
Und in meinen specs-Datei, wenn ich
echo %{_installpath}
Ich bekomme den Wert, den ich eingestellt in der .rpmmacros. Aber wenn ich es in %Dateien:
%files
%defattr(-,root,root)
%{_installpath}/Crystal/bin/Crystal.jar
Bekomme ich den gleichen Fehler wieder!
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar
Ich habe auch versucht, die Definition einer Variablen mit der specs-Datei und ich habe das gleiche traurige Ergebnis. Wie es aussieht, solange meine Variablen/Makros ist die Referenzierung von $INSTALLIEREN, dann %Dateien nicht akzeptieren. Aber ich habe mit dieser env-variable!
So, dass ist alles, was ich denken konnte. Hat jemand eine Ahnung? Jegliche Hilfe würde sehr geschätzt werden.
Vielen Dank im Voraus!
InformationsquelleAutor Rinita | 2014-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
%files
Abschnitt nicht erweitern Sie die shell-Variablen. Sie können dies nicht so.Haben Sie ein paar Optionen, die ich sehen kann offhand. Sie können
erzeugen Sie eine Datei mit einer Liste der Dateien (bei
%install
oder was-haben-Sie), und verwenden Sie dann%files -f files.lst
erweitern
$INSTALLPATH
bei rpm-makro-definition mit:Reisner: Sie können shell-Variablen in
%files
Abschnitt der gleichen Weise wie sonst nirgends in der spec, obwohl, dass könnte ziemlich hässlich und unlesbar. E. g. mit%(echo $INSTALLPATH/Crystal/bin/Crystal.jar)
sollte das erreichen, was der OP wollte.Das ist nicht der
%files
Abschnitt erweitert shell-Variablen, aber (und ich glaube nicht, dass die%files
Abschnitt wird). Das istrpm
tun die expansion analysieren Sie die Uhrzeit manuell ein, weil Sie die%(...)
makro. Aber ja, das wäre (möglicherweise) gearbeitet haben... vorausgesetzt%(...)
Erweiterungen durchgeführt werden, in der richtigen makro-Bereich.Funktioniert auf jeden Fall in
%files
Abschnitt, wir verwenden es für einige besonders hässliche Pakete zum tag bestimmte Dateien dynamisch mit%lang($lang)
und im Grunde schaffen, dass ein Teil der%files
Abschnitt on the fly. Aber die von Ihnen vorgeschlagene Lösung mit der Liste ist wahrscheinlich viel sauberer für die OP 🙂Was genau funktioniert in der
%files
Abschnitt? Ein Eintrag wie/usr/lib/$shellvar
? Ihr dynamisch erstellte Datei Liste enthält%lang($lang) /path/to/file
? Oder enthält es%lang(en) /path/to/file
?InformationsquelleAutor Etan Reisner