cpack генерирует RPM с записями% файлов, которые конфликтуют со спецификацией RPM. Как исправить?

В последнее время я должен убедиться, что наше программное обеспечение может быть упаковано с использованиемcpack для RHEL 7 и его бесплатных перестроений (например, CentOS 7). Тем не менее, у меня возникла проблема, которой не было для RHEL 6.x и его бесплатных перестроений: RPM, которыеcpack генерирует все имеет в своем%files раздел системного каталога, например, следующий:

%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

который не должен быть объявлен пакетом.

AFAIK, это требование было в спецификации RPM в течение многих лет, но только в последних версиях RPM (т. Е. Новее, чем 4.8.0) оно выполняется. Так как RHEL 7 связывает с RPM 4.11.1, так чтоcpack порождает сейчас конфликт сfilesystem-3.2-18.el7.x86_64 с ошибками, как показано ниже во времяyum 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
[...]

Я пытался использовать маленькийcmake модуль, состоящий из следующего:

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")

и включить его прямо передCMakeLists.txt«sinclude(CPack), Но сгенерированный RPM все еще содержит эти системные каталоги :(

В качестве временного решения я использовал подсказку, приведенную вКонфликт файлов при установке пакета с помощью «Файловая система»то есть используяrpmrebuild утилита для удаления этих записей системного каталога в%files раздел. Очевидно, что это не исправление вообще.

Кто-нибудь нашел лучший способ?

Ответы на вопрос(1)

Ваш ответ на вопрос