CPack: зависимости пакетов и схемы именования Red Hat / SuSE - PullRequest
0 голосов
/ 06 января 2020

При использовании CMake / CPack для сборки пакетов, есть CPACK_DEBIAN_PACKAGE_DEPENDS и CPACK_RPM_PACKAGE_REQUIRES для хранения списка пакетов, от которых должен зависеть полученный .deb / .rpm.

Различие полезно, поскольку схемы именования пакетов различаются в разных дистрибутивах. (Пример: дистрибутивы, использующие .deb s, добавляют основную версию libicu к имени пакета - т.е. libicu60 - тогда как дистрибутивы, использующие .rpm s, не делают.)

Однако, есть различия между .rpm -дистро также наиболее заметны между SuSE и RedHat. Например, SuSE называет Boost-пакеты libboost_system1.56.0 et c., Тогда как RedHat использует boost-system.

Существует ли идеомати c способ либо

  • поддерживать CPACK_RPM_PACKAGE_REQUIRES определенным образом c или
  • определить конкретный шаблон именования дистрибутивов / пакетов?

Я знаю способы определения распределения "трудным путем" (синтаксический анализ uname, проверка файлов в /etc и т. д.), а затем "жесткое кодирование" имен отдельных пакетов в CPACK_RPM_PACKAGE_REQUIRES; Мне было интересно, если CMake / CPack предлагает более идиоматический c способ решения этой проблемы.

1 Ответ

1 голос
/ 14 февраля 2020

Мне было интересно, предлагает ли CMake / CPack более идиоматический c способ решения этой проблемы.

Нет, это не так. (по крайней мере, пока).

В настоящее время «жесткий код» является единственным способом. К вещам, которые вы упомянули, я бы добавил запуск lsb-release, если он доступен, анализ /etc/lsb-release и / или другие специфичные для дистрибутива c вещи из /etc ...

...