cpack generiert RPMs mit% Dateieinträgen, die mit der RPM-Spezifikation in Konflikt stehen. Wie repariert man?

In letzter Zeit muss ich sicherstellen, dass unsere Software mithilfe von gepackt werden kanncpack für RHEL 7 und seine kostenlosen Neuerstellungen (z. B. CentOS 7). Trotzdem hatte ich ein Problem, das es für RHEL 6.x und seine kostenlosen Neuerstellungen nicht gab: die RPMs, diecpack erzeugt alle in sich haben%files Abschnitt Systemverzeichniseinträge wie die folgenden:

%dir %attr(0755, root, root) "/"
%dir %attr(0755, root, root) "/usr"
%dir %attr(0755, root, root) "/usr/bin"
%dir %attr(0755, root, root) "/usr/share"
%dir %attr(0755, root, root) "/usr/share/applications"
%dir %attr(0755, root, root) "/usr/share/doc"
%dir %attr(0755, root, root) "/usr/share/icons"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable/apps"enter code here

was nicht vom Paket deklariert werden sollte.

AFAIK, diese Anforderung ist seit Jahren in der RPM-Spezifikation enthalten, wird jedoch nur in den aktuellen RPM-Versionen (d. H. Neuer als 4.8.0) durchgesetzt. Da RHEL 7 mit RPM 4.11.1 gebündelt wird, na und?cpack erzeugt nun einen Konflikt mitfilesystem-3.2-18.el7.x86_64 mit Fehlern wie unten während ayum install ...:

file / from install of tunesviwer-1.4-2.noarch conflicts with file from package filesystem-3.2-18.el7.x86_64
file /usr/bin from install of tunesviewer-1.4-2.noarch conflicts with file from package filesystem-3.2-18.el7.x86_64
[...]

Ich habe versucht, einen kleinen zu verwendencmake Modul bestehend aus:

set(CPACK_RPM_SPEC_MORE_DEFINE "%define ignore \#")
set(CPACK_RPM_USER_FILELIST "%ignore /" "%ignore /usr" "%ignore /usr/bin" "%ignore /usr/share" "%ignore /usr/share/applications" "%ignore /usr/share/doc" "%ignore/usr/share/icons" "%ignore /usr/share/icons/hicolor" "%ignore /usr/share/icons/hicolor/scalable" "%ignore /usr/share/icons/hicolor/scalable/apps")

und füge es direkt vor dem einCMakeLists.txt'sinclude(CPack). Das generierte RPM enthält jedoch weiterhin die folgenden Systemverzeichnisse :(

Als vorübergehende Abhilfe habe ich einen Hinweis aus verwendetDateikonflikt beim Installieren eines Pakets mit "Dateisystem"unter Verwendung derrpmrebuild Hilfsprogramm zum Entfernen dieser Systemverzeichniseinträge im%files Sektion. Offensichtlich ist dies überhaupt keine Lösung.

Hat jemand einen besseren Weg gefunden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage