CPack RPM помещает библиотеку в списки «обеспечивает» и «требует» - PullRequest
0 голосов
/ 11 марта 2019

Мой продукт foo состоит из библиотеки: libfoo.so и исполняемого файла: foo, который зависит от libfoo.so и от стороннего производителя libbar.so.

Я использую CPack, чтобы получить RPM foo , который содержит lib/libfoo.so и bin/foo.

Но в итоге не могу установить пакет: rpm -ivh жалуется на необходимую зависимость: libfoo.so.

Я понимаю, что при автоматическом разрешении зависимостей foo требуется libfoo.so, но целью установки пакета является предоставление этой библиотеки.

Если я отключаю автоматическое разрешение зависимостей с помощью CPACK_RPM_PACKAGE_AUTOREQ, RPM также теряет зависимость libbar.so.

Как мне настроить CPack для сохранения внешних зависимостей, но не внутренних?

1 Ответ

1 голос
/ 12 марта 2019

Моя ошибка.

Автоматическое обнаружение зависимостей было введено в заблуждение неправильными правами доступа к файлам: и bin/foo, и lib/libfoo.so имели rw-rw-r-- разрешения, пропущенные x.

Исправитьвопрос, я только что добавил флаг USE_SOURCE_PERMISSIONS в директиву CMake install(DIRECTORY ...):

install(DIRECTORY    "${PROJECT_BINARY_DIR}/bin"
        DESTINATION  "${INSTALL_DIR}"
        <b>USE_SOURCE_PERMISSIONS</b>)
install(DIRECTORY    "${PROJECT_BINARY_DIR}/lib"
        DESTINATION  "${INSTALL_DIR}"
        <b>USE_SOURCE_PERMISSIONS</b>)
...