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
Примечание
Часть переменных, относящихся к <COMPONENT> предпочтительно указывать заглавными буквами (например, если компонент называется 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.
- Обязательно: ДА
- По умолчанию: “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_<compName>_DESCRIPTION(только для установочных компонентов), если установлено,CPACK_PACKAGE_DESCRIPTION_FILE, если установлено, или “описание пакета недоступно”
-
CPACK_RPM_COMPRESSION_TYPE -
Тип сжатия RPM.
- Обязательно: НЕТ
- По умолчанию: -
Может использоваться для переопределения типа сжатия RPM, используемого для создания RPM. Например, некоторые дистрибутивы Linux теперь по умолчанию используют сжатие lzma или xz, в то время как более старые не могут его использовать. С помощью этой переменной можно принудительно использовать определённый тип сжатия.
Возможные значения:
- lzma
- xz
- bzip2
- gzip
-
CPACK_RPM_PACKAGE_AUTOREQ -
CPACK_RPM_<component>_PACKAGE_AUTOREQ -
Поле autoreq спецификации RPM.
- Обязательно: НЕТ
- По умолчанию: -
Может использоваться для включения (1, да) или выключения (0, нет) автоматического обнаружения зависимостей общих библиотек. Зависимости добавляются в список required.
Примечание
По умолчанию автоматическое обнаружение зависимостей включено генератором rpm.
-
CPACK_RPM_PACKAGE_AUTOPROV -
CPACK_RPM_<component>_PACKAGE_AUTOPROV -
Поле автопровизирования спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может использоваться для включения (1, да) или выключения (0, нет) автоматического добавления в список предоставленных пакетов общих библиотек, предоставляемых пакетом. Общие библиотеки добавляются в список предоставляемых.
Примечание
По умолчанию автоматическое определение предоставлений включено генератором RPM.
-
CPACK_RPM_PACKAGE_AUTOREQPROV -
CPACK_RPM_<component>_PACKAGE_AUTOREQPROV -
Поле автотребований/автопровизирования спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Переменная включает/выключает автотребования и автопровизирование одновременно. См.
CPACK_RPM_PACKAGE_AUTOREQиCPACK_RPM_PACKAGE_AUTOPROVдля получения дополнительной информации.Примечание
По умолчанию функция автоматического обнаружения включена в RPM.
-
CPACK_RPM_PACKAGE_REQUIRES -
CPACK_RPM_<component>_PACKAGE_REQUIRES -
Поле требований спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может использоваться для задания зависимостей RPM (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.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может использоваться для задания отрицательных зависимостей RPM (conflicts). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки, например:
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)). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки, например:
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)). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки, например:
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)). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки, например:
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)). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки, например:
set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
-
CPACK_RPM_PACKAGE_SUGGESTS -
CPACK_RPM_<component>_PACKAGE_SUGGESTS -
Поле рекомендации спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может использоваться для задания слабых зависимостей RPM (suggests). Обратите внимание, что вам необходимо заключить полную строку требований в кавычки.
-
CPACK_RPM_PACKAGE_PROVIDES -
CPACK_RPM_<component>_PACKAGE_PROVIDES -
Поле предоставляемых пакетов спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может использоваться для задания зависимостей RPM (provides). Список предоставляемых пакетов файла RPM можно вывести с помощью:
rpm -qp --provides file.rpm
-
CPACK_RPM_PACKAGE_OBSOLETES -
CPACK_RPM_<component>_PACKAGE_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вместо этого.- Обязательное : НЕТ
- Значение по умолчанию : -
- Устаревшее: ДА
Этот способ задания скрипта после установки устарел, используйте
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 -
CPACK_RPM_<componentName>_USER_BINARY_SPECFILE -
Пользовательский файл спецификации.
- Обязательное : НЕТ
- Значение по умолчанию : -
Может быть задан пользователем для указания пользовательского файла спецификации двоичного файла, который будет использоваться CPackRPM вместо генерации файла. Указанный файл будет обработан configure_file( @ONLY).
-
CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE -
Шаблон файла спецификации.
- Обязательное : НЕТ
- Значение по умолчанию : -
Если установлено, CPack сгенерирует шаблон для пользовательского указанного двоичного файла спецификации и завершится с ошибкой. Например, запустите 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установлен в ВКЛЮЧЕНО, скрипт (раз)установки для каждого компонента может быть переопределён с помощью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. Вы можете иметь несколько директив в одной строке, как в%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
Значение должно быть именем пользователя, а не UID. Обратите внимание, что <compName> должен быть в верхнем регистре.
-
CPACK_RPM_DEFAULT_GROUP -
CPACK_RPM_<compName>_DEFAULT_GROUP -
Группа владельца по умолчанию для содержимого RPM.
- Обязательно : НЕТ
- По умолчанию : root
Значение должно быть именем группы, а не GID. Обратите внимание, что <compName> должен быть в верхнем регистре.
-
CPACK_RPM_DEFAULT_FILE_PERMISSIONS -
CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS -
Права доступа по умолчанию, используемые для файлов пакетов.
- Обязательно : НЕТ
- По умолчанию : - (стандартные системные права)
Допустимые значения — списки с
PERMISSIONS. Допустимые права доступа:- OWNER_READ
- OWNER_WRITE
- OWNER_EXECUTE
- GROUP_READ
- GROUP_WRITE
- GROUP_EXECUTE
- WORLD_READ
- WORLD_WRITE
- WORLD_EXECUTE
Обратите внимание, что <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 -
Включить создание RPM-пакета(ов) debuginfo.
- Обязательно : НЕТ
- По умолчанию : ВЫКЛ.
Примечание
Бинарные файлы должны содержать символы отладки перед пакетированием, поэтому используйте 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.
Пакеты исходных кодов (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. Два исполняемых файла, а также rpmbuild, также должны быть присутствовать при генерации бинарных RPM-пакетов из созданного пакета SRPM.
После создания пакета 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 может принять решение во время процесса генерации бинарных RPM-пакетов из SRPM, какой контент должен иметь пакет(ы), а также как они должны быть упакованы (монолитные или компоненты). CMake может принять это решение, например, считывая переменные среды, установленные диспетчером пакетов, перед началом процесса генерации бинарных RPM-пакетов. Таким образом, один пакет SRPM может быть использован для создания различных бинарных 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.8/module/CPackRPM.html