Spec-Zone.ru › CMake 3.5

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__XXXX для получения значений, специфичных для компонента. Обратите внимание, что относится к имени группировки. Это может быть имя компонента или имя группы компонентов. Обычно эти переменные соответствуют сущностям файла спецификации RPM; информацию о файлах спецификации можно найти здесь http://www.rpm.org/wiki/Docs. Более подробное использование CPackRPM можно найти на вики:

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, устаревших данным пакетом.

END_OF_DOCUMENT_MARKER
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API