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). В целях обратной совместимости (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_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, в то время как более старые не могут использовать такие RPM. Используя эту переменную, можно принудительно использовать определённый тип сжатия.
Возможные значения:
- 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 -
Поле autoprov спецификации RPM.
- Обязательно: НЕТ
- По умолчанию: -
Может использоваться для включения (1, да) или выключения (0, нет) автоматического создания списка общих библиотек, предоставляемых пакетом. Общие библиотеки добавляются в список provides.
Примечание
По умолчанию обнаружение предоставляемых библиотек автоматически включено генератором rpm.
-
CPACK_RPM_PACKAGE_AUTOREQPROV -
CPACK_RPM_<component>_PACKAGE_AUTOREQPROV -
Поле autoreqprov спецификации RPM.
- Обязательное : НЕТ
- Значение по умолчанию : -
Переменная включает/отключает автозапрос и автопредоставление одновременно. Подробнее см.
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 -
Поле конфликтов спецификации 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установлено в ВКЛ, скрипт (распаковки) установки для каждого компонента может быть переопределен с помощью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. Поскольку 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. Допустимые права доступа:- Чтение владельцем
- Запись владельцем
- Исполнение владельцем
- Чтение группой
- Запись группой
- Исполнение группой
- Чтение другими
- Запись другими
- Исполнение другими
Обратите внимание, что <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, если используется компонентная упаковка - один пакет debuginfo на компонент. Это дублирует исходные коды, если несколько бинарных файлов используют их. Это побочный эффект того, как CPackRPM в настоящее время генерирует пакеты компонентов, и будет исправлен в будущих версиях генератора.
Упаковке 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для исключения.- Обязательно : НЕТ
- По умолчанию : -
Упаковка исходных файлов (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 может принять решение во время создания пакета 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.- Обязательно : ДА
- По умолчанию : “/”
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.7/module/CPackRPM.html