Wenn die Bedingung innerhalb der %Files-Abschnitt auf einer SPEC-Datei
Bin ich irgendwie ein neues zu schreiben von spec-Dateien und bauen von RPMs. Derzeit habe ich ein RPM soll das bereitstellen einiger Dateien in 1 von 2 möglichen Verzeichnisse, die variieren mit dem Betriebssystem.
Wie kann ich innerhalb der %files-Sektion, überprüfen Sie Sie? Ich kann nicht mit Variablen...kann ich nicht überprüfen beide Pfade, da wird man sicher nicht...ich habe versucht zu definieren, die ein makro vorher in der %install-Sektion, aber es wird nur einmal und nicht neu definiert werden, die auf jeder RPM-installation...
was kann ich hier tun?
Dank
InformationsquelleAutor cjdcordeiro | 2013-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
%files
Sektion können Variablen haben, die aber in der Regel wäre dies so etwas wie dein Pfad definiert ist, so dass Sie nicht haben, Sie zu wiederholen ein paar. so%{long_path}/file_name
, wo long_path definiert wurde früher in der spec-Datei. die%files
Abschnitt all die Informationen, die in der RPM-Datenbank, und erstellt beim erstellen der RPM, so dass Sie nicht in der Lage sein, ändern Sie diese Werte, basierend auf Informationen über die Maschine, wenn installiert.Wenn Sie wirklich wollen, dies zu tun, Sie könnten eine tar-Datei, die innerhalb des Haupt-tarball-Datei, die extrahiert wird, abhängig von bestimmten Bedingungen (da die spec-Datei ist nur bash). Jetzt halten Sie im Verstand dies ist eine schreckliche Idee. Die Dateien werden nicht verfolgt durch die RPM-Datenbank, so dass, wenn Sie entfernen Sie die RPM diese Dateien noch existieren.
In Wirklichkeit bauen Sie zwei RPMs, dies wird es ermöglichen, besser zu unterstützen, geht nach vorn in die Zukunft in der Veranstaltung, die Sie zur hand haben dies ab, um jemanden, der, ebenso wie die Erhaltung Ihrer eigenen Vernunft, ein Jahr ab jetzt, wenn Sie brauchen, um zu aktualisieren, die RPM.
aber ist es irgendwie möglich eine if-Bedingung innerhalb der %Dateien ?
Könnte man eine if-Bedingung in der RPM-für das, was geht in der %files-Sektion beim Bau des RPM selbst, aber das wird nicht funktionieren, auf "installieren". Dass Dateien, die Liste ist im Grunde statisch. Sie führen auch zu der Frage, wo bekommst du eine Fehlermeldung, dass RPM-Dateien gefunden (während dem bauen), aber Sie waren unverpackt (denn Sie Leben in Ihrem tarball enthalten ist, aber nicht deklariert in der %files-Sektion durch, um Ihre if-Anweisung). Im Allgemeinen würde ich versuchen zu bleiben Weg von tun.
InformationsquelleAutor Forrest
Ich hatte eine ähnliche situation, wo zusätzliche Dateien enthalten waren, in die U /MIN bei einem DEBUG-build, die über alle Dateien in der FREIGABE erstellen.
Der trick ist die übergabe einer Liste von Dateien %Dateien alongwith eine regelmäßige Liste der Dateien unterhalb:
In Ihrem Fall, können Sie nutzen die %, wenn die bedingte in der %install-Abschnitt, verwenden Sie die OS als spec-variable übergeben
rpmbuild
(oder erkennen es in der RPM-spec-selbst) und gebe dann die Datei mit der Liste zu%files
InformationsquelleAutor dotbugfix
Forrest schlägt die beste Lösung, aber wenn das nicht möglich ist, praktisch können Sie erkennen, die OS-version, die zur Laufzeit in die post-install-Abschnitt, verschieben Sie das Skript an den entsprechenden Speicherort, und löschen Sie den post-deinstallieren, zB:
Viel mehr fehleranfällig als der Bau von verschiedenen RPMs auf verschiedene Betriebssysteme, aber wird die Skala ein wenig besser, wenn Sie es brauchen, unterstützen viele verschiedene Betriebssysteme.
InformationsquelleAutor user318904
Dies ist, wie ich mein problem gelöst
Schritt 1 :
Schritt 2: in install-Abschnitt
Schritt 3:im Abschnitt Dateien
Dass es
Es funktioniert.
PS : ich kann Euch keine vollständige code-daher geben alle nützlichen snippet
InformationsquelleAutor Fooo