Итак, вот моя библиотека C ++, которая правильно построена с помощью CMake на CentOS 7, и я пытаюсь создать из нее пакет RPM. Что ж, CPack делает это довольно просто, но в данном конкретном случае это предостережение, которое портит все удовольствие.
Моя библиотека косвенно зависит от некоторых сторонних материалов следующим образом: my_lib <- stuff <- fubar
и этот «fubar» - это пара библиотек, которые развертываются через run-пакеты, а не через обычные RPM, yum ничего о них не знает, и это не может быть исправлено.
Здесь я проверяю зависимости RPM:
rpm -qp ./build-centos/my-awesome-lib-2.0.2.0-264-ga003c47+264.ga003c47-Linux.rpm --requires
/bin/sh
/bin/sh
/bin/sh
/bin/sh
config(my-awesome-lib) = 2.0.2.0_264_ga003c47+264.ga003c47-1
ld-linux-aarch64.so.1()(64bit)
ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)
fubar.so()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.17)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libgcc_s.so.1(GCC_4.2.0)(64bit)
...
Если вы обратите внимание на строку fubar.so()(64bit)
, у меня возникнут проблемы - библиотека имеет аккуратные встроенные проверки, сообщающие пользователю установить «fubar», правильно настроить env и т. Д. c, но из-за этой прямой зависимости RPM он вообще не сможет установить пакет!
И да, я действительно хочу «исключить» эту неприятную зависимость.
Итак, первый вариант - использовать что-то вроде ...
set(CPACK_RPM_PACKAGE_AUTOREQ " no")
set(CPACK_RPM_PACKAGE_REQUIRES <dependencies here>)
include(CPack)
, но мне пришлось бы перечислить все , кроме fubar, и это довольно длинный список, не говоря уже о необходимости просматривать этот список перед каждым выпуском.
* 1 022 * Другой вариант может быть что-то вроде ...
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION, "/usr/local/FuBar /usr/local/FuBar/lib64 /usr/local/FuBar/lib64/stub")
include(CPack)
но, увы, он никогда не работает, даже с другими аналогичными переменными, такими как CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIS
.
Я также пробовал следующее:
set(SOMEEXCLUDE
/usr/local/FuBar
/usr/local/FuBar/lib64
/usr/local/FuBar/lib64/stub)
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST ${SOMEEXCLUDE})
include(CPack)
Не работает = (
Может ли кто-нибудь указать мне на рецепт, который просто «убрал бы» нежелательную зависимость, если это возможно? Заранее благодарим за ваши усилия.