CPackRPM
Встроенный (бинарный) генератор CPack RPM (только для Unix)
Переменные, специфичные для генератора CPack RPM
CPackRPM может быть использован для создания пакетов RPM с помощью CPack. CPackRPM является генератором CPack, поэтому он использует переменные CPACK_XXX, используемые генератором CPack.
CPackRPM имеет специфические особенности, которые контролируются переменными CPACK_RPM_XXX.
Переменные CPACK_RPM_<COMPONENT>_XXXX могут быть использованы для получения значений, специфичных для компонента. Однако обратите внимание, что <COMPONENT> относится к имени группы, записанному заглавными буквами. Это может быть либо имя компонента, либо имя группы компонентов. Обычно эти переменные соответствуют сущностям файла спецификаций RPM. Информацию о файлах спецификаций можно найти здесь http://www.rpm.org/wiki/Docs
Примечание
Часть переменных предпочтительно записывать заглавными буквами (например, если компонент называется foo, используйте имя переменной CPACK_RPM_FOO_XXXX) как и другие переменные CPACK_<COMPONENT>_XXXX. В целях обратной совместимости (CMake/CPack версии 3.5 и ниже) поддерживается использование переменных с именами компонентов, написанными строчными буквами (например, fOo будет использоваться как CPACK_RPM_fOo_XXXX). Эти переменные, определенные в более старых версиях CMake/CPack, но не гарантируется поддержка для переменных, которые будут добавлены в будущем. Для обратной совместимости переменные компонентов со строчными буквами также переопределяют переменные с заглавными буквами, если обе присутствуют.
Вот некоторые ресурсы Wiki CPackRPM, которые здесь по историческим причинам и больше не поддерживаются, но могут быть полезными:
- https://cmake.org/Wiki/CMake:CPackConfiguration
- https://cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29
Список переменных, специфичных для CPackRPM:
-
CPACK_RPM_COMPONENT_INSTALL -
Включить упаковку компонентов для CPackRPM
- Обязательно: НЕТ
- По умолчанию: ВЫКЛ.
Если включено (ВКЛ.), генерируется несколько пакетов. По умолчанию генерируется один пакет, содержащий файлы всех компонентов.
-
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_FILE_NAME -
CPACK_RPM_<component>_FILE_NAME -
Имя файла пакета.
- Обязательно: ДА
-
-
Default : <CPACK_PACKAGE_FILE_NAME>[-<component>].rpm with spaces -
заменяется на ‘-‘
-
Можно установить значение
RPM-DEFAULT, чтобы позволить инструменту rpmbuild самому сгенерировать имя файла пакета. В качестве альтернативы, предоставленное имя файла пакета должно заканчиваться на.rpm.Примечание
Используя предоставленный пользователем файл спецификаций, можно использовать макросы rpm, такие как для генерации пакетов debuginfo или используя несколько компонентов, могут быть сгенерированы несколько файлов rpm, либо из одного файла спецификаций, либо из нескольких файлов спецификаций (каждое выполнение компонента создаёт свой собственный файл спецификаций). В таких случаях могут возникнуть дублирующие имена файлов в результате установки этой переменной или структуры содержимого файла спецификаций. Дублирующие файлы перезаписываются, и разработчику пакета необходимо установить переменные таким образом, чтобы предотвратить такие ошибки.
-
CPACK_RPM_MAIN_COMPONENT -
Основной компонент, который упаковывается без суффикса компонента.
- Обязательно: НЕТ
- По умолчанию: -
Эта переменная может быть установлена на любое имя компонента или группы, чтобы компонент или группа пакета rpm генерировались без суффикса компонента в имени файла и имени пакета.
-
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.
Примечание
Это строка, которая попадает в поле RPM Release:. Некоторые дистрибутивы (например, Fedora, CentOS) требуют формат 1%{?dist}, а не только число. Часть %{?dist} может быть добавлена, установив CPACK_RPM_PACKAGE_RELEASE_DIST.
-
CPACK_RPM_PACKAGE_RELEASE_DIST -
Тег dist, который добавляется в поле RPM
Release:.- Обязательно: НЕТ
- По умолчанию: ВЫКЛ.
Это значение тега
%{dist}текущего дистрибутива, или пустая строка%{dist}, если макрос RPM не установлен. Если эта переменная установлена, значение поля RPMRelease:устанавливается в${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.
-
CPACK_RPM_PACKAGE_LICENSE -
Политика лицензии пакета RPM.
- Обязательно: ДА
- По умолчанию: “неизвестно”
-
CPACK_RPM_PACKAGE_GROUP -
CPACK_RPM_<component>_PACKAGE_GROUP -
Группа пакета RPM.
- Обязательно: ДА
- По умолчанию: “неизвестно”
-
CPACK_RPM_PACKAGE_VENDOR -
Производитель пакета RPM.
- Обязательно: ДА
- По умолчанию: CPACK_PACKAGE_VENDOR, если установлено, или “неизвестно”
-
CPACK_RPM_PACKAGE_URL -
CPACK_RPM_<component>_PACKAGE_URL -
URL проекта.
- Обязательно: НЕТ
- По умолчанию: -
-
CPACK_RPM_PACKAGE_DESCRIPTION -
CPACK_RPM_<component>_PACKAGE_DESCRIPTION -
Описание пакета RPM.
- Обязательно: ДА
- По умолчанию:
CPACK_COMPONENT_<compName>_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, нет) автоматического определения зависимости общих библиотек. Зависимости добавляются в список requires.
Примечание
По умолчанию автоматическое обнаружение зависимостей включено генератором rpm.
-
CPACK_RPM_PACKAGE_AUTOPROV -
CPACK_RPM_<component>_PACKAGE_AUTOPROV -
Поле autoprov файла спецификаций RPM.
- Обязательно: НЕТ
- По умолчанию: -
Может быть использовано для включения (1, да) или выключения (0, нет) автоматического перечисления общих библиотек, которые предоставляются пакетом. Общие библиотеки добавляются в список provides.
Примечание
По умолчанию автоматическое обнаружение предоставлений включено генератором rpm.
-
CPACK_RPM_PACKAGE_AUTOREQPROV -
CPACK_RPM_<component>_PACKAGE_AUTOREQPROV -
Поле RPM-спецификации autoreqprov.
- Обязательно : НЕТ
- По умолчанию : -
Переменная включает/отключает autoreq и autoprov одновременно. Подробнее см.
CPACK_RPM_PACKAGE_AUTOREQиCPACK_RPM_PACKAGE_AUTOPROV.Примечание
По умолчанию функция автоматического обнаружения включена в rpm.
-
CPACK_RPM_PACKAGE_REQUIRES -
CPACK_RPM_<component>_PACKAGE_REQUIRES -
Поле RPM-спецификации requires.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания зависимостей 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 -
Поле RPM-спецификации conflicts.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания отрицательных зависимостей 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 -
Поле RPM-спецификации requires(pre).
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания предварительных зависимостей RPM (requires(pre)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_POST -
CPACK_RPM_<component>_PACKAGE_REQUIRES_POST -
Поле RPM-спецификации requires(post).
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания зависимостей RPM после установки (requires(post)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_POSTUN -
CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN -
Поле RPM-спецификации requires(postun).
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания зависимостей RPM после удаления (requires(postun)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_REQUIRES_PREUN -
CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN -
Поле RPM-спецификации requires(preun).
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания зависимостей RPM перед удалением (requires(preun)). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_SUGGESTS -
CPACK_RPM_<component>_PACKAGE_SUGGESTS -
Поле RPM-спецификации suggests.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания слабых зависимостей RPM (suggests). Обратите внимание, что вам необходимо заключить всю строку requires в кавычки.
-
CPACK_RPM_PACKAGE_PROVIDES -
CPACK_RPM_<component>_PACKAGE_PROVIDES -
Поле RPM-спецификации provides.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания зависимостей RPM (provides). Список предоставляемых пакетов RPM-файла можно напечатать с помощью:
rpm -qp --provides file.rpm
-
CPACK_RPM_PACKAGE_OBSOLETES -
CPACK_RPM_<component>_PACKAGE_OBSOLETES -
Поле RPM-спецификации obsoletes.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для задания пакетов 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вместо этого.- Обязательно : НЕТ
- По умолчанию : -
- Устаревшее: ДА
Этот способ указания скрипта после установки устарел, используйте
CPACK_RPM_POST_INSTALL_SCRIPT_FILE. Может использоваться для установки команды после установки RPM в файл spec. Например, установка/bin/trueможет быть использована для предотвращения удаления rpmbuild бинарных файлов.
-
CPACK_RPM_SPEC_MORE_DEFINE -
Дополнительные определения spec файла RPM.
- Обязательно : НЕТ
- По умолчанию : -
Может использоваться для добавления любых
%defineстрок в сгенерированный файл spec.
-
CPACK_RPM_PACKAGE_DEBUG -
Включить/выключить вывод отладки CPackRPM.
- Обязательно : НЕТ
- По умолчанию : -
Может быть установлено при вызове cpack для отслеживания отладочной информации во время выполнения CPack RPM. Например, вы можете запустить CPack так:
cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
-
CPACK_RPM_USER_BINARY_SPECFILE -
CPACK_RPM_<componentName>_USER_BINARY_SPECFILE -
Пользовательский файл spec.
- Обязательно : НЕТ
- По умолчанию : -
Может быть задано пользователем для указания пользовательского файла spec для бинарных файлов, используемых CPackRPM вместо генерации файла. Указанный файл будет обработан configure_file( @ONLY).
-
CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE -
Шаблон файла spec.
- Обязательно : НЕТ
- По умолчанию : -
Если задано, CPack сгенерирует шаблон для указанного пользователем файла spec бинарных файлов и завершится с ошибкой. Например, запустите CPack так:
cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
Пользователь может затем использовать этот файл для создания собственного файла spec бинарных файлов, который может быть использован с
CPACK_RPM_USER_BINARY_SPECFILE.
-
CPACK_RPM_PRE_INSTALL_SCRIPT_FILE -
CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE -
Путь к файлу со скриптом предварительной (разворачивающей) установки.
- Обязательно : НЕТ
- По умолчанию : -
Может быть использован для вставки скрипта предварительной (разворачивающей) установки в файл spec. Указанный файл (или оба) будет прочитан и помещен непосредственно после
%preили%preunраздела. ЕслиCPACK_RPM_COMPONENT_INSTALLустановлено в ВКЛ, скрипт (разворачивающей) установки для каждого компонента может быть переопределен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 -
Путь к файлу со скриптом после (разворачивающей) установки.
- Обязательно : НЕТ
- По умолчанию : -
Может быть использован для вставки скрипта после (разворачивающей) установки в файл spec. Указанный файл (или оба) будет прочитан и помещен непосредственно после
%postили%postunраздела. ЕслиCPACK_RPM_COMPONENT_INSTALLустановлено в ВКЛ, скрипт (разворачивающей) установки для каждого компонента может быть переопределен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>)строки в файле spec. Например%config(noreplace)или любой другой директивы, которая может быть найдена в%filesразделе. Вы можете иметь несколько директивы на строку, как в%attr(600,root,root) %config(noreplace). Поскольку 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.*
-
CPACK_RPM_DEFAULT_USER -
CPACK_RPM_<compName>_DEFAULT_USER -
Владелец пользователя по умолчанию для содержимого RPM.
- Обязательный : НЕТ
- По умолчанию : root
Значение должно быть именем пользователя, а не идентификатором пользователя. Обратите внимание, что <compName> должен быть в верхнем регистре.
-
CPACK_RPM_DEFAULT_GROUP -
CPACK_RPM_<compName>_DEFAULT_GROUP -
Владелец группы по умолчанию для содержимого RPM.
- Обязательный : НЕТ
- По умолчанию : root
Значение должно быть именем группы, а не идентификатором группы. Обратите внимание, что <compName> должен быть в верхнем регистре.
-
CPACK_RPM_DEFAULT_FILE_PERMISSIONS -
CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS -
Права доступа по умолчанию, используемые для файлов в пакете.
- Обязательный : НЕТ
- По умолчанию : - (системные значения по умолчанию)
Допустимые значения — списки с
PERMISSIONS. Допустимые права:- Чтение владельца
- Запись владельца
- Исполнение владельца
- Чтение группы
- Запись группы
- Исполнение группы
- Чтение всех
- Запись всех
- Исполнение всех
Обратите внимание, что <compName> должен быть в верхнем регистре.
-
CPACK_RPM_DEFAULT_DIR_PERMISSIONS -
CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS -
Права доступа по умолчанию, используемые для каталогов в пакете.
- Обязательный : НЕТ
- По умолчанию : - (системные значения по умолчанию)
Допустимые значения — списки с PERMISSIONS. Допустимые права такие же, как для
CPACK_RPM_DEFAULT_FILE_PERMISSIONS. Обратите внимание, что <compName> должен быть в верхнем регистре.
Упаковка символьных ссылок
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)
Символические ссылки будут оптимизированы (пути будут сокращены, если это возможно) перед добавлением в пакет или, если обнаружено несколько путей перемещения, будет сгенерирован скрипт пост-установки для перемещения символьных ссылок.
Символические ссылки могут указывать на расположения, которые не упаковываются тем же пакетом (либо другой компонент, либо вообще не упакован), но эти расположения будут рассматриваться так, как будто они являются частью пакета, при определении того, должна ли быть создана или присутствовать символичная ссылка в скрипте пост-установки — в зависимости от путей перемещения.
Символические ссылки, указывающие на расположения вне пути упаковки, генерируют предупреждение и рассматриваются как неперемещаемые постоянные символьные ссылки.
В настоящее время существуют некоторые ограничения:
- Для компонентной упаковки взаимозависимость компонентов не проверяется при обработке символьных ссылок. Символические ссылки, указывающие на содержимое другого компонента, обрабатываются так же, как и ссылки на расположение, которое не будет упаковано.
- Символические ссылки, указывающие на расположение через одну или несколько промежуточных символьных ссылок, не будут обрабатываться по-другому. Если промежуточная(ые) символьная(ые) ссылка(и) также находится(ятся) в переместимом пути, перемещение её(их) во время установки пакета может привести к тому, что начальная символьная ссылка будет указывать на недействительное расположение.
Упаковка информации отладки
Пакеты debuginfo содержат символы отладки и исходные файлы для отладки упакованных бинарных файлов.
Упаковка debuginfo RPM имеет свои собственные переменные:
-
CPACK_RPM_DEBUGINFO_PACKAGE -
CPACK_RPM_<component>_DEBUGINFO_PACKAGE -
Включить создание пакета(ов) debuginfo RPM.
- Обязательный : НЕТ
- По умолчанию : ВЫКЛ.
Примечание
Бинарные файлы должны содержать символы отладки перед упаковкой, поэтому используйте либо Debug или RelWithDebInfo для значения переменной CMAKE_BUILD_TYPE.
Примечание
Сгенерированные пакеты из пакетов без бинарных файлов, с бинарными файлами, но без прав на выполнение или без символов отладки, будут пустыми.
-
CPACK_BUILD_SOURCE_DIRS -
Предоставляет расположения корневых каталогов исходных файлов, из которых были построены бинарные файлы.
- Обязательный : ДА, если
CPACK_RPM_DEBUGINFO_PACKAGEустановлен - По умолчанию : -
- Обязательный : ДА, если
Примечание
Для проекта CMake CPACK_BUILD_SOURCE_DIRS по умолчанию устанавливается, чтобы указывать на пути CMAKE_SOURCE_DIR и CMAKE_BINARY_DIR.
Примечание
Исходные файлы с префиксами путей, которые не попадают ни в одну из указанных с CPACK_BUILD_SOURCE_DIRS папок, не будут присутствовать в пакете debuginfo.
-
CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX -
CPACK_RPM_<component>_BUILD_SOURCE_DIRS_PREFIX -
Префикс пути, где будут размещены исходные файлы во время установки пакета.
- Обязательно : ДА, если установлен
CPACK_RPM_DEBUGINFO_PACKAGE -
-
Default : “/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>” and - для компонентного пакета «/usr/src/debug/
- »
-
- Обязательно : ДА, если установлен
Примечание
Каждый префикс пути к исходным файлам дополнительно дополняется src_<index>, где индекс — индекс пути, используемого из переменной CPACK_BUILD_SOURCE_DIRS. Это приводит к замене пути <CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX>/src_<index>. Ограничение заключается в том, что заменяемая часть пути должна быть короче или равна по длине заменяющей части. Если это не так, то либо переменная CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX должна быть установлена на более короткий путь, либо каталоги исходных файлов должны быть размещены на более длинном пути.
-
CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS -
Каталоги, содержащие исходные файлы, которые должны быть исключены из пакетов debuginfo.
- Обязательно : НЕТ
- По умолчанию : «/usr /usr/src /usr/src/debug»
Перечисленные пути принадлежат другим пакетам RPM и поэтому не должны удаляться при удалении пакета debuginfo.
-
CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION -
Пути, которые должны быть добавлены к
CPACK_RPM_DEBUGINFO_EXCLUDE_DIRSдля исключения.- Обязательно : НЕТ
- По умолчанию : -
-
CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE -
Создать один пакет debuginfo, даже если включено компонентное пакование.
- Обязательно : НЕТ
- По умолчанию : ВЫКЛ.
При включении этой переменной создаётся один пакет debuginfo, даже если включено компонентное пакование.
При использовании этой функции в сочетании с компонентным пакованием и наличии более одного компонента требуется, чтобы
CPACK_RPM_MAIN_COMPONENTбыл установлен.
Примечание
Если ни одна из переменных CPACK_RPM_<component>_DEBUGINFO_PACKAGE не установлена, то CPACK_RPM_DEBUGINFO_PACKAGE автоматически устанавливается в ON, когда CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE установлена.
-
CPACK_RPM_DEBUGINFO_FILE_NAME -
CPACK_RPM_<component>_DEBUGINFO_FILE_NAME -
Имя файла пакета debuginfo.
- Обязательно : НЕТ
- По умолчанию : имя файла пакета, сгенерированное инструментом rpmbuild
В противном случае предоставленное имя файла пакета debuginfo должно заканчиваться на
.rpmсуффикс и отличаться от имён файлов других сгенерированных пакетов.Переменная может содержать
@cpack_component@плейсхолдер, который будет заменён именем компонента, если включено компонентное пакование, иначе плейсхолдер удаляется.Установка переменной в
RPM-DEFAULTможет быть использована для явного задания генерации имени файла по умолчанию.
Примечание
CPACK_RPM_FILE_NAME также поддерживает имя файла пакета, сгенерированное инструментом rpmbuild — по умолчанию отключено, но может быть включено путём установки переменной в RPM-DEFAULT.
Упаковки исходных файлов (SRPM)
Упаковку SRPM можно включить, установив переменную CPACK_RPM_PACKAGE_SOURCES, при этом обычно используется переменная CPACK_INSTALLED_DIRECTORIES для указания каталога, содержащего CMakeLists.txt и исходные файлы.
Для проектов CMake пакет SRPM будет создан путём выполнения:
cpack -G RPM --config ./CPackSourceConfig.cmake
Примечание
Ожидается, что созданный пакет SRPM будет скомпилирован с помощью исполняемого файла cmake(1) и упакован с помощью исполняемого файла cpack(1), поэтому CMakeLists.txt должен быть расположен в корневом каталоге исходных файлов и должен уметь генерировать двоичные пакеты rpm путём выполнения команды cpack -G. При генерации двоичных пакетов rpm из созданного пакета SRPM также должны быть доступны два исполняемых файла, а также rpmbuild.
После создания пакета SRPM его можно использовать для генерации двоичных пакетов, создав структуру каталогов для генерации rpm и выполнив инструмент rpmbuild:
mkdir -p build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} rpmbuild --define "_topdir <path_to_build_dir>" --rebuild <SRPM_file_name>
Сгенерированные пакеты будут расположены в каталоге build_dir/RPMS или в его подкаталогах.
Примечание
Пакет SRPM внутренне использует генератор CPack/RPM для создания двоичных пакетов, поэтому CMakeScripts.txt может принять решение во время генерации пакета SRPM — двоичного rpm — о том, какое содержимое должен иметь пакет(ы), а также о том, как они должны быть упакованы (монолитный или по компонентам). CMake может принять это решение, например, прочитав переменные окружения, установленные менеджером пакетов перед началом процесса генерации двоичных rpm-пакетов. Таким образом, один пакет SRPM может быть использован для создания разных двоичных rpm-пакетов на разных платформах в зависимости от правил паковки платформы.
Упаковки исходных RPM имеют свой набор переменных:
-
CPACK_RPM_PACKAGE_SOURCES -
Должно ли содержимое быть упаковано как исходный rpm (по умолчанию — двоичный rpm).
- Обязательно : НЕТ
- По умолчанию : ВЫКЛ.
Примечание
Для проектов cmake переменная CPACK_RPM_PACKAGE_SOURCES устанавливается в OFF в сгенерированных файлах CPackConfig.cmake и ON в CPackSourceConfig.cmake.
-
CPACK_RPM_SOURCE_PKG_BUILD_PARAMS -
Дополнительные параметры командной строки, предоставляемые исполняемому файлу
cmake(1).- Обязательно : НЕТ
- По умолчанию : -
-
CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX -
Префикс установки паковки, который будет предоставлен в переменной
CPACK_PACKAGING_INSTALL_PREFIXдля создания двоичных пакетов RPM.- Обязательно : ДА
- По умолчанию : «/»
-
CPACK_RPM_BUILDREQUIRES -
Список зависимостей от исходных rpm-пакетов.
- Обязательно : НЕТ
- По умолчанию : -
Может быть использован для задания зависимостей от исходных RPM-пакетов (BuildRequires). Обратите внимание, что вы должны заключить всю строку зависимостей от сборки в кавычки, например:
set(CPACK_RPM_BUILDREQUIRES "python >= 2.5.0, cmake >= 2.8")
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.9/module/CPackRPM.html