CPackRPM
Встроенный (бинарный) генератор CPack RPM (только для Unix)
Переменные, специфичные для генератора CPack RPM
CPackRPM может использоваться для создания RPM-пакета с помощью CPack. CPackRPM — это генератор CPack, поэтому он использует переменные CPACK_XXX, используемые CPack: https://cmake.org/Wiki/CMake:CPackConfiguration
Однако CPackRPM имеет специфические особенности, которые контролируются переменными CPACK_RPM_XXX. CPackRPM — это компонентно-ориентированный генератор, поэтому, когда CPACK_RPM_COMPONENT_INSTALL включён, можно использовать дополнительные переменные CPACK_RPM_
https://cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29
Однако в качестве полезного напоминания вот список специфичных переменных:
-
CPACK_RPM_PACKAGE_SUMMARY -
CPACK_RPM_<component>_PACKAGE_SUMMARY -
Аннотация RPM-пакета.
- Обязательно : ДА
- По умолчанию : CPACK_PACKAGE_DESCRIPTION_SUMMARY
-
CPACK_RPM_PACKAGE_NAME -
CPACK_RPM_<component>_PACKAGE_NAME -
Имя RPM-пакета.
- Обязательно : ДА
- По умолчанию : CPACK_PACKAGE_NAME
-
CPACK_RPM_PACKAGE_VERSION -
Версия RPM-пакета.
- Обязательно : ДА
- По умолчанию : CPACK_PACKAGE_VERSION
-
CPACK_RPM_PACKAGE_ARCHITECTURE -
CPACK_RPM_<component>_PACKAGE_ARCHITECTURE -
Архитектура RPM-пакета.
- Обязательно : ДА
- По умолчанию : Результирующая архитектура, полученная из «uname -m»
Можно установить значение «noarch», если вы знаете, что создаёте пакет noarch.
-
CPACK_RPM_PACKAGE_RELEASE -
Релиз RPM-пакета.
- Обязательно : ДА
- По умолчанию : 1
Это порядковый номер самого RPM-пакета, то есть версия пакета, а не версия содержимого (см. CPACK_RPM_PACKAGE_VERSION). Можно изменить значение по умолчанию, если предыдущая упаковка имела ошибки и/или вы хотите использовать здесь специальную нумерацию, специфичную для дистрибутива Linux.
-
CPACK_RPM_PACKAGE_LICENSE -
Лицензионная политика RPM-пакета.
- Обязательно : ДА
- По умолчанию : «unknown»
-
CPACK_RPM_PACKAGE_GROUP -
CPACK_RPM_<component>_PACKAGE_GROUP -
Группа RPM-пакета.
- Обязательно : ДА
- По умолчанию : «unknown»
-
CPACK_RPM_PACKAGE_VENDOR -
Производитель RPM-пакета.
- Обязательно : ДА
- По умолчанию : CPACK_PACKAGE_VENDOR, если задано, или «unknown»
-
CPACK_RPM_PACKAGE_URL -
CPACK_RPM_<component>_PACKAGE_URL -
URL проекта.
- Обязательно : НЕТ
- По умолчанию : —
-
CPACK_RPM_PACKAGE_DESCRIPTION -
CPACK_RPM_<component>_PACKAGE_DESCRIPTION -
Описание RPM-пакета.
- Обязательно : ДА
- По умолчанию : CPACK_COMPONENT_
_DESCRIPTION (только для установщиков на основе компонентов), если задано, CPACK_PACKAGE_DESCRIPTION_FILE, если задано, или «описание пакета недоступно»
-
CPACK_RPM_COMPRESSION_TYPE -
Тип сжатия RPM.
- Обязательно : НЕТ
- По умолчанию : —
Можно использовать для переопределения типа сжатия RPM, используемого для создания RPM. Например, некоторые дистрибутивы Linux сейчас по умолчанию используют сжатие lzma или xz, в то время как более старые не могут использовать такие RPM. С помощью этой переменной можно принудительно задать используемый тип сжатия. Возможные значения: lzma, xz, bzip2 и gzip.
-
CPACK_RPM_PACKAGE_AUTOREQ -
CPACK_RPM_<component>_PACKAGE_AUTOREQ -
Поле autoreq спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для включения (1, да) или выключения (0, нет) автоматического обнаружения зависимостей общих библиотек. Зависимости добавляются в список требуется.
Примечание
По умолчанию генератор RPM включает автоматическое обнаружение зависимостей.
-
CPACK_RPM_PACKAGE_AUTOPROV -
CPACK_RPM_<component>_PACKAGE_AUTOPROV -
Поле autoprov спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для включения (1, да) или выключения (0, нет) автоматического перечисления общих библиотек, предоставляемых пакетом. Общие библиотеки добавляются в список предоставляется.
Примечание
По умолчанию генератор RPM включает автоматическое обнаружение предоставляемых зависимостей.
-
CPACK_RPM_PACKAGE_AUTOREQPROV -
CPACK_RPM_<component>_PACKAGE_AUTOREQPROV -
Поле autoreqprov спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Переменная включает/отключает autoreq и autoprov одновременно. См.
CPACK_RPM_PACKAGE_AUTOREQиCPACK_RPM_PACKAGE_AUTOPROVдля получения дополнительной информации.Примечание
По умолчанию генератор RPM включает функцию автоматического обнаружения.
-
CPACK_RPM_PACKAGE_REQUIRES -
CPACK_RPM_<component>_PACKAGE_REQUIRES -
Поле requires спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания зависимостей RPM (requires). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8")
Список необходимых пакетов файла RPM можно вывести командой:
rpm -qp --requires file.rpm
-
CPACK_RPM_PACKAGE_CONFLICTS -
CPACK_RPM_<component>_PACKAGE_CONFLICTS -
Поле conflicts спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания отрицательных зависимостей RPM (conflicts). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_CONFLICTS "libxml2")
Список конфликтующих пакетов файла RPM можно вывести командой:
rpm -qp --conflicts file.rpm
-
CPACK_RPM_PACKAGE_REQUIRES_PRE -
CPACK_RPM_<component>_PACKAGE_REQUIRES_PRE -
Поле requires(pre) спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания предварительных зависимостей установки RPM (requires(pre)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_POST -
CPACK_RPM_<component>_PACKAGE_REQUIRES_POST -
Поле requires(post) спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания зависимостей после установки RPM (requires(post)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_POSTUN -
CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN -
Поле requires(postun) спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания зависимостей после удаления RPM (requires(postun)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_PREUN -
CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN -
Поле requires(preun) спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания зависимостей перед удалением RPM (requires(preun)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_SUGGESTS -
CPACK_RPM_<component>_PACKAGE_SUGGESTS -
Поле suggest спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания слабых зависимостей RPM (suggests). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки.
-
CPACK_RPM_PACKAGE_PROVIDES -
CPACK_RPM_<component>_PACKAGE_PROVIDES -
Поле provides спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания зависимостей RPM (provides). Список предоставляемых пакетов файла RPM можно вывести командой:
rpm -qp --provides file.rpm
-
CPACK_RPM_PACKAGE_OBSOLETES -
CPACK_RPM_<component>_PACKAGE_OBSOLETES -
Поле obsoletes спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : —
Может использоваться для задания пакетов RPM, устаревших данным пакетом.
-
CPACK_RPM_PACKAGE_RELOCATABLE -
создать переносимый пакет RPM.
- Обязательно : НЕТ
- По умолчанию : CPACK_PACKAGE_RELOCATABLE
Если эта переменная установлена в TRUE или ON, CPackRPM попытается создать переносимый пакет RPM. Переносимый пакет RPM можно установить, используя:
rpm --prefix or --relocate
чтобы установить его в другом месте, см. rpm(8). Обратите внимание, что в настоящее время это может завершиться ошибкой, если CPACK_SET_DESTDIR установлено в ON. Если CPACK_SET_DESTDIR установлено, то будет выведено сообщение об ошибке, но если какой-либо файл установлен с абсолютным путем, поведение может быть неожиданным.
-
CPACK_RPM_SPEC_INSTALL_POST -
- Обязательно : НЕТ
- По умолчанию : -
- Устаревший: ДА
Этот способ указания скрипта после установки устарел, используйте CPACK_RPM_POST_INSTALL_SCRIPT_FILE. Может использоваться для задания команды после установки RPM в файле спецификации. Например, установка в «/bin/true» может использоваться для предотвращения удаления бинарных файлов rpmbuild.
-
CPACK_RPM_SPEC_MORE_DEFINE -
Дополнительные строки определений спецификации RPM.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для добавления любых строк %define в сгенерированный файл спецификации.
-
CPACK_RPM_PACKAGE_DEBUG -
Включить вывод отладки CPackRPM.
- Обязательно : НЕТ
- По умолчанию : -
Может быть установлено при вызове cpack для отслеживания информации об отладке во время выполнения CPack RPM. Например, вы можете запустить CPack так:
cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
-
CPACK_RPM_USER_BINARY_SPECFILE -
Файл спецификации, предоставленный пользователем.
- Обязательно : НЕТ
- По умолчанию : -
Может быть задан пользователем для указания файла спецификации бинарных файлов USER, который будет использоваться CPackRPM вместо генерации файла. Указанный файл будет обработан функцией configure_file( @ONLY). Можно предоставить компонент-специфичный файл, установив CPACK_RPM_<componentName>_USER_BINARY_SPECFILE.
-
CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE -
Шаблон файла спецификации.
- Обязательно : НЕТ
- По умолчанию : -
Если установлено, CPack сгенерирует шаблон для файла спецификации бинарных файлов USER и завершится с ошибкой. Например, запустите CPack так:
cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
Затем пользователь может использовать этот файл для создания собственного файла спецификации бинарных файлов, который можно использовать с CPACK_RPM_USER_BINARY_SPECFILE.
-
CPACK_RPM_PRE_INSTALL_SCRIPT_FILE -
CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE -
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для встраивания скрипта пред (раз)установки в файл спецификации. Ссылающиеся файлы скриптов будут считаны и непосредственно помещены после секции %pre или %preun Если CPACK_RPM_COMPONENT_INSTALL установлено в ON, скрипт (раз)установки для каждого компонента может быть переопределён с помощью CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE и CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE. Можно проверить, какой скрипт был включён с помощью:
rpm -qp --scripts package.rpm
-
CPACK_RPM_POST_INSTALL_SCRIPT_FILE -
CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE -
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для встраивания скрипта после (раз)установки в файл спецификации. Ссылающиеся файлы скриптов будут считаны и непосредственно помещены после секции %post или %postun. Если CPACK_RPM_COMPONENT_INSTALL установлено в ON, скрипт (раз)установки для каждого компонента может быть переопределён с помощью CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE и CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE. Можно проверить, какой скрипт был включён с помощью:
rpm -qp --scripts package.rpm
-
CPACK_RPM_USER_FILELIST -
CPACK_RPM_<COMPONENT>_USER_FILELIST -
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для явного указания строки файла %(<directive>) в файле спецификации. Например %config(noreplace) или любая другая директива, которая может быть найдена в секции %files. Поскольку CPackRPM генерирует список файлов (и каталогов), пользовательские файлы из списка CPACK_RPM_<COMPONENT>_USER_FILELIST будут удалены из сгенерированного списка.
-
CPACK_RPM_CHANGELOG_FILE -
Файл журнала изменений RPM.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для встраивания журнала изменений в файл спецификации. Указанный файл будет считано и помещён непосредственно после секции %changelog.
-
CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST -
список путей для исключения.
- Обязательно : НЕТ
- По умолчанию : /etc /etc/init.d /usr /usr/share /usr/share/doc /usr/bin /usr/lib /usr/lib64 /usr/include
Может быть использован для исключения путей (каталогов или файлов) из автоматически сгенерированного списка путей, обнаруженных CPack RPM. Значение по умолчанию содержит разумный набор значений, если переменная не определена пользователем. Если переменная определена пользователем, CPackRPM не будет использовать ни один из путей по умолчанию. Если вы хотите добавить некоторые пути в список по умолчанию, можно использовать переменную CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION.
-
CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION -
дополнительный список путей для исключения.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для добавления дополнительных путей исключения (каталоги или файлы) из начального списка путей исключения по умолчанию. См. CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST.
-
CPACK_RPM_RELOCATION_PATHS -
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания более одного пути перебазирования на каждый переносимый пакет RPM. Переменная содержит список путей перебазирования, которые, если относительные, дополняются значением CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX или значением CPACK_PACKAGING_INSTALL_PREFIX, если версия компонента не указана. Переменная не зависит от компонента, так как её содержимое может использоваться для задания различных префиксов путей, например, для каталога бинарных файлов и каталога документации одновременно. Только префиксы, необходимые для определённого компонента, добавляются к этому компоненту - компонент должен содержать по крайней мере один файл/каталог/символическую ссылку с префиксом CPACK_RPM_RELOCATION_PATHS для определённого пути перебазирования. Пакет не будет содержать никаких путей перебазирования, если не найдено ни одного файла/каталога/символической ссылки в любом из указанных префиксных расположений. Пакеты, которые либо не содержат никаких путей перебазирования, либо содержат файлы/каталоги/символические ссылки, которые находятся вне путей перебазирования, выводят AUTHOR_WARNING, что пакет RPM будет частично переносимым.
-
CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX -
- Обязательно : НЕТ
- По умолчанию : CPACK_PACKAGING_INSTALL_PREFIX
Может использоваться для задания префикса CPACK_PACKAGING_INSTALL_PREFIX для каждого компонента для переносимых пакетов RPM.
-
CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION -
CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION -
- Обязательно : НЕТ
-
-
Default : CPACK_PACKAGING_INSTALL_PREFIX or CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX - рассматриваются как один из путей перебазирования
-
Может использоваться для удаления CPACK_PACKAGING_INSTALL_PREFIX и CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX из путей префикса переносимых пакетов RPM.
-
CPACK_RPM_ADDITIONAL_MAN_DIRS -
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания дополнительных каталогов man, которые могут быть сжаты макросом brp-compress RPM. Содержимое переменной должно быть списком регулярных выражений, которые указывают на каталоги, содержащие файлы man, или на сами файлы man. Обратите внимание, что для сжатия страниц man путь также должен присутствовать в скрипте brp-compress RPM, а сам скрипт brp-compress должен быть добавлен в конфигурацию RPM операционной системой.
Регулярные выражения, которые добавляются по умолчанию, были взяты из макроса brp-compress RPM:
- /usr/man/man.*
- /usr/man/.*/man.*
- /usr/info.*
- /usr/share/man/man.*
- /usr/share/man/.*/man.*
- /usr/share/info.*
- /usr/kerberos/man.*
- /usr/X11R6/man/man.*
- /usr/lib/perl5/man/man.*
- /usr/share/doc/.*/man/man.*
- /usr/lib/.*/man/man.*
Упаковывание символических ссылок
CPackRPM поддерживает упаковку символических ссылок:
execute_process(COMMAND ${CMAKE_COMMAND}
-E create_symlink <relative_path_location> <symlink_name>)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/<symlink_name>
DESTINATION <symlink_location> COMPONENT libraries)
Символические ссылки будут оптимизированы (пути будут сокращены, если это возможно) перед добавлением в пакет, или если обнаружено несколько путей перебазирования, будет сгенерирован скрипт перебазирования символической ссылки после установки.
Символические ссылки могут указывать на расположения, которые не упаковываются тем же пакетом (другой компонент или даже не упаковывается вообще), но эти расположения будут обрабатываться так, как будто они являются частью пакета при определении, должна ли быть создана символическая ссылка или присутствовать в скрипте после установки - в зависимости от путей перебазирования.
В настоящее время есть несколько ограничений:
- Только символические ссылки с относительным путем могут быть упакованы.
- Для упаковки по компонентам взаимозависимость компонентов не проверяется при обработке символических ссылок. Символические ссылки, указывающие на содержимое другого компонента, обрабатываются так же, как если бы они указывали на место, которое не будет упаковано.
- Символические ссылки, указывающие на место через одну или несколько промежуточных символических ссылок, не будут обрабатываться по-другому - если промежуточная(ые) символическая(ые) ссылка(и) также находится на пути перебазирования, перебазирование её(их) во время установки пакета может привести к тому, что начальная символическая ссылка будет указывать на неверный путь.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/module/CPackRPM.html