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_EPOCH -
Эпоха пакета 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 не установлен. Если эта переменная установлена, то значение поляRelease:RPM устанавливается в${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, в то время как старые дистрибутивы не могут использовать такие 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вместо этого.- Обязательное : НЕТ
- Значение по умолчанию : -
- Устарело: ДА
Этот способ указания скрипта после установки устарел, используйте
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 -
Список путей для исключения.
- Обязательно : НЕТ
-
-
Default : /etc /etc/init.d /usr /usr/bin /usr/include /usr/lib - /usr/libx32 /usr/lib64 /usr/share /usr/share/aclocal /usr/share/doc
-
Может использоваться для исключения путей (каталогов или файлов) из автоматически сгенерированного списка путей, обнаруженных 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. Допустимые права:- 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 -
Включить создание пакета(ов) 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/<CPACK_PACKAGE_FILE_NAME>-<component>”
-
- Обязательно : ДА, если установлено
Примечание
Каждый префикс пути исходных файлов дополнительно имеет суффикс 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. Два исполняемых файла, а также 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 на разных платформах в зависимости от правил пакования платформы.
Пакетирование исходных 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.10/module/CPackRPM.html