CPackDeb
Встроенный (бинарный) генератор пакетов CPack Deb (только для Unix)
Переменные, специфичные для генератора CPack Debian (DEB)
CPackDeb может использоваться для создания пакетов Deb с помощью CPack. CPackDeb — это генератор CPack, поэтому он использует переменные CPACK_XXX используемые CPack.
Генератор CPackDeb должен работать на любом хосте Linux, но он будет создавать лучшие пакеты deb, когда на системе сборки доступны инструменты, специфичные для Debian dpkg-xxx.
CPackDeb имеет специфические возможности, которые контролируются переменными CPACK_DEBIAN_XXX.
Переменные CPACK_DEBIAN_<COMPONENT>_XXXX могут быть использованы для задания значений, специфичных для компонента. Обратите внимание, что <COMPONENT> относится к имени группы, написанному заглавными буквами. Это может быть имя компонента или имя группы компонентов.
Вот некоторые wiki-ресурсы CPackDeb, которые здесь по историческим причинам и больше не поддерживаются, но могут оказаться полезными:
- https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/Configuration
- https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/PackageGenerators#deb-unix-only
Список переменных, специфичных для CPackDEB:
-
CPACK_DEB_COMPONENT_INSTALL -
Включить компонентную упаковку для CPackDEB
- Обязательно : НЕТ
- По умолчанию : ВЫКЛ.
Если включено (ВКЛ.), генерируются несколько пакетов. По умолчанию генерируется один пакет, содержащий файлы всех компонентов.
-
CPACK_DEBIAN_PACKAGE_NAME -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME -
Установить поле управления пакетом (переменная автоматически преобразуется в нижний регистр).
- Обязательно : ДА
- По умолчанию :
-
CPACK_PACKAGE_NAMEдля установок, не основанных на компонентах -
CPACK_DEBIAN_PACKAGE_NAMEс добавленным суффиксом -<КОМПОНЕНТ> для установок, основанных на компонентах.
-
См. https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
-
CPACK_DEBIAN_FILE_NAME -
CPACK_DEBIAN_<COMPONENT>_FILE_NAME -
Имя файла пакета.
- Обязательно : ДА
- По умолчанию :
<CPACK_PACKAGE_FILE_NAME>[-<component>].deb
Это может быть установлено в
DEB-DEFAULTдля того, чтобы CPackDeb генерировал имя файла пакета в формате deb сам:<PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
В качестве альтернативы заданное имя файла пакета должно оканчиваться на
.debили.ipkсуффиксы.Примечание
Предпочтительное значение этой переменной —
DEB-DEFAULT, но для обратной совместимости с CPackDeb в CMake до версии 3.6 эта функция отключена по умолчанию.Примечание
Использование отличных от значений по умолчанию имён файлов может привести к появлению дубликатов. Дублирующиеся файлы перезаписываются, и от разработчика пакета зависит установка переменных таким образом, чтобы предотвратить такие ошибки.
-
CPACK_DEBIAN_PACKAGE_EPOCH -
Эпоха пакета Debian
- Обязательно : Нет
- По умолчанию : -
Необязательное число, которое следует увеличивать при изменении схем версионирования или исправлении ошибок в номерах версий старых пакетов.
-
CPACK_DEBIAN_PACKAGE_VERSION -
Версия пакета Debian
- Обязательно : ДА
- По умолчанию :
CPACK_PACKAGE_VERSION
Эта переменная может содержать только буквенно-цифровые символы (A-Za-z0-9) и символы . + - ~ (точка, плюс, дефис, тильда) и должна начинаться с цифры. Если
CPACK_DEBIAN_PACKAGE_RELEASEне установлена, то дефисы не допускаются.Примечание
Для обеспечения обратной совместимости с CMake 3.9 и ниже, ошибка проверки содержимого этой переменной не является критической ошибкой, когда обе переменные
CPACK_DEBIAN_PACKAGE_RELEASEиCPACK_DEBIAN_PACKAGE_EPOCHне заданы. Вместо этого сообщается предупреждение разработчику.
-
CPACK_DEBIAN_PACKAGE_RELEASE -
Релиз пакета Debian — номер ревизии Debian.
- Обязательно : Нет
- По умолчанию : -
Это номер версии самого пакета DEB, т.е. версия упаковки, а не версия содержимого (см.
CPACK_DEBIAN_PACKAGE_VERSION). Можно изменить значение по умолчанию, если предыдущая упаковка была ошибочной и/или вы хотите использовать специфическую для дистрибутива Linux нумерацию.
-
CPACK_DEBIAN_PACKAGE_ARCHITECTURE -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE -
Архитектура пакета Debian
- Обязательно : ДА
- По умолчанию : Результат
dpkg --print-architecture(илиi386еслиdpkgне найдено)
-
CPACK_DEBIAN_PACKAGE_DEPENDS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS -
Устанавливает зависимости пакета Debian.
- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_DEPENDSдля установок, основанных на компонентах.
Примечание
Если
CPACK_DEBIAN_PACKAGE_SHLIBDEPSили, более конкретно,CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPSустановлены для этого компонента, обнаруженные зависимости будут добавлены кCPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDSвместоCPACK_DEBIAN_PACKAGE_DEPENDS. ЕслиCPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS— пустая строка, для этого компонента будут установлены только автоматически обнаруженные зависимости.Пример:
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)")
-
CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS -
Устанавливает межкомпонентные зависимости, если они перечислены с переменными
CPACK_COMPONENT_<compName>_DEPENDS.- Обязательно : НЕТ
- По умолчанию : -
-
CPACK_DEBIAN_PACKAGE_MAINTAINER -
Поддерживающий пакет Debian
- Обязательно : ДА
- По умолчанию :
CPACK_PACKAGE_CONTACT
-
CPACK_DEBIAN_PACKAGE_DESCRIPTION -
CPACK_COMPONENT_<COMPONENT>_DESCRIPTION -
Описание пакета Debian
- Обязательно : ДА
- По умолчанию :
-
CPACK_DEBIAN_PACKAGE_DESCRIPTIONесли установлено или CPACK_PACKAGE_DESCRIPTION_SUMMARY
-
-
CPACK_DEBIAN_PACKAGE_SECTION -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION -
Установить поле раздела, например, admin, devel, doc, …
- Обязательно : ДА
- По умолчанию : “devel”
См. https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections
-
CPACK_DEBIAN_ARCHIVE_TYPE -
Формат архива, используемый для создания пакета Debian.
- Обязательно : ДА
- По умолчанию : “paxr”
Возможные значения:
- paxr
- gnutar
Примечание
Формат архива pax по умолчанию является наиболее портативным и генерирует пакеты, которые не обрабатывают разреженные файлы специально. Формат GNU tar, с другой стороны, поддерживает более длинные имена файлов.
-
CPACK_DEBIAN_COMPRESSION_TYPE -
Сжатие, используемое для создания пакета Debian.
- Обязательно : ДА
- По умолчанию : “gzip”
Возможные значения:
- lzma
- xz
- bzip2
- gzip
-
CPACK_DEBIAN_PACKAGE_PRIORITY -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY -
Устанавливает поле управления приоритетом, например, обязательный, важный, стандартный, необязательный, дополнительный
- Обязательно : ДА
- По умолчанию : “необязательный”
См. https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities
-
CPACK_DEBIAN_PACKAGE_HOMEPAGE -
URL веб-сайта этого пакета, предпочтительно (если применимо) сайт, с которого можно получить исходный код, и любой дополнительной документации или информации от верхнего уровня.
- Обязательно : НЕТ
- По умолчанию :
CMAKE_PROJECT_HOMEPAGE_URL
Примечание
Содержимое этого поля — это простой URL без каких-либо окружающих символов, таких как <>.
-
CPACK_DEBIAN_PACKAGE_SHLIBDEPS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS -
Может быть установлено в значение ON, чтобы использовать
dpkg-shlibdepsдля генерации лучшего списка зависимостей пакета.- Обязательно : НЕТ
- По умолчанию :
-
CPACK_DEBIAN_PACKAGE_SHLIBDEPSесли установлено или - ВЫКЛ.
-
Примечание
Возможно, вам потребуется установить
CMAKE_INSTALL_RPATHна соответствующее значение, если вы используете эту функцию, потому что если вы этого не сделаете,dpkg-shlibdepsможет не найти собственные общие библиотеки. См. https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling
-
CPACK_DEBIAN_PACKAGE_DEBUG -
Может быть установлено при вызове cpack для отслеживания отладочной информации во время выполнения CPackDeb.
- Обязательно : НЕТ
- По умолчанию : -
-
CPACK_DEBIAN_PACKAGE_PREDEPENDS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS -
Устанавливает поле
Pre-Dependsпакета Debian. ПодобноDepends, за исключением того, что оно также принуждаетdpkgк завершению установки пакетов, указанных ранее, даже прежде чем начать установку пакета, который объявляет предварительную зависимость.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_PREDEPENDSдля установок, основанных на компонентах.
См. http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
CPACK_DEBIAN_PACKAGE_ENHANCES -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES -
Устанавливает поле
Enhancesпакета Debian. Похоже наSuggests, но работает в обратном направлении: объявляет, что пакет может улучшить функциональность другого пакета.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_ENHANCESдля установок, основанных на компонентах.
См. http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
CPACK_DEBIAN_PACKAGE_BREAKS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS -
Устанавливает поле
Breaksпакета Debian. Когда двоичный пакет (P) объявляет, что он нарушает другие пакеты (B),dpkgне позволит пакету (P), который объявляетBreaks, быть распакованным, пока пакеты, которые будут нарушены (B), не будут деконфигурированы. Пока пакет (P) настроен, ранее деконфигурированные пакеты (B) не могут быть переконфигурированы.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_BREAKSдля установок, основанных на компонентах.
См. https://www.debian.org/doc/debian-policy/ch-relationships.html#s-breaks
-
CPACK_DEBIAN_PACKAGE_CONFLICTS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS -
Устанавливает поле
Conflictsпакета Debian. Когда один двоичный пакет объявляет конфликт с другим, используя полеConflicts,dpkgне позволит им быть распакованными на системе одновременно.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_CONFLICTSдля установок, основанных на компонентах.
См. https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts
Примечание
Это более сильное ограничение, чем
Breaks, которое предотвращает настройку разбитого пакета, когда пакет, вызывающий разрыв, находится в состоянии «Распакован», но позволяет распаковать оба пакета одновременно.
-
CPACK_DEBIAN_PACKAGE_PROVIDES -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES -
Устанавливает поле
Providesпакета Debian. Виртуальный пакет — это тот, который появляется в полеProvidesдругого пакета.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_PROVIDESдля установок, основанных на компонентах.
См. https://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual
-
CPACK_DEBIAN_PACKAGE_REPLACES -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES -
Устанавливает поле
Replacesпакета Debian. Пакеты могут объявлять в своём файле управления, что они должны перезаписывать файлы в определённых других пакетах или полностью заменять другие пакеты.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
CPACK_DEBIAN_PACKAGE_REPLACESдля установок, основанных на компонентах.
См. http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
CPACK_DEBIAN_PACKAGE_RECOMMENDS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS -
Устанавливает поле
Recommendsпакета Debian. Позволяет пакетам объявлять сильную, но не абсолютную, зависимость от других пакетов.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок без компонент
-
CPACK_DEBIAN_PACKAGE_RECOMMENDSдля установок на основе компонентов.
См. http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
CPACK_DEBIAN_PACKAGE_SUGGESTS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS -
Устанавливает поле
Suggestsпакета Debian. Позволяет пакетам объявить рекомендуемую группировку установки пакетов.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок без компонент
-
CPACK_DEBIAN_PACKAGE_SUGGESTSдля установок на основе компонентов.
См. http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS -
- Обязательно : НЕТ
- По умолчанию : ВЫКЛ.
Позволяет автоматически генерировать файл управления shlibs. Совместимость определяется значением переменной
CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY.Примечание
Библиотеки учитываются только в том случае, если заданы имя библиотеки и версия. Это можно сделать, установив свойство SOVERSION с помощью команды
set_target_properties().
-
CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY -
Политика совместимости для автоматически сгенерированного файла управления shlibs.
- Обязательно : НЕТ
- По умолчанию : “=”
Определяет политику совместимости для автоматически сгенерированного файла управления shlibs. Возможные значения: “=”, “>=”.
См. https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-shlibdeps
-
CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA -
Эта переменная позволяет пользователям расширенного уровня добавлять пользовательские скрипты в control.tar.gz. Типичное использование — для conffiles, postinst, postrm, prerm.
- Обязательно : НЕТ
- По умолчанию : -
Использование:
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")Примечание
Исходные разрешения файлов будут использоваться в конечном пакете, если переменная
CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSIONне установлена. В частности, скрипты должны иметь соответствующий флаг разрешения на выполнение до создания пакета.
-
CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_STRICT_PERMISSION -
Эта переменная указывает, следует ли строго соблюдать политику Debian в отношении файлов управления.
- Обязательно : НЕТ
- По умолчанию : ЛОЖЬ
Использование:
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
Примечание
Это переопределяет разрешения на исходные файлы, следуя правилам, установленным политикой Debian https://www.debian.org/doc/debian-policy/ch-files.html#s-permissions-owners
-
CPACK_DEBIAN_PACKAGE_SOURCE -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_SOURCE -
Устанавливает поле
Sourceдвоичного пакета Debian. Когда имя двоичного пакета отличается от имени исходного пакета (особенно когда несколько компонентов/библиотек генерируются из одного исходного кода), исходный код, из которого был сгенерирован двоичный пакет, должен быть указан с помощью поляSource.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок без компонент
-
CPACK_DEBIAN_PACKAGE_SOURCEдля установок на основе компонентов.
См. https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
Примечание
Это значение не интерпретируется. Также возможно передать необязательный номер ревизии указанного исходного пакета.
Создание пакетов Debian в Windows
Для передачи разрешений на файлы UNIX из этапа установки в генератор CPack DEB используется NTFS альтернативный поток данных (ADT) «cmake_mode_t».
При использовании файловой системы без поддержки ADT сохраняются только разрешения на чтение/запись владельца.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/CPackDeb.html