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://cmake.org/Wiki/CMake:CPackConfiguration
- https://cmake.org/Wiki/CMake:CPackPackageGenerators#DEB_.28UNIX_only.29
Список переменных, специфичных для 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 веб-сайта для этого пакета, предпочтительно (применительно) сайт, с которого можно получить исходный код, а также дополнительную документацию или информацию от поставщика.
- Обязательно : НЕТ
- По умолчанию : -
Примечание
Содержание этого поля — это простой URL без каких-либо окружающих символов, таких как <>.
-
CPACK_DEBIAN_PACKAGE_SHLIBDEPS -
CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS -
Может быть установлено в ВКЛ для использования
dpkg-shlibdepsдля создания лучшего списка зависимостей пакетов.- Обязательно : НЕТ
- По умолчанию :
-
CPACK_DEBIAN_PACKAGE_SHLIBDEPS, если установлено, или - ВЫКЛ
-
Примечание
Возможно, вам потребуется установить
CMAKE_INSTALL_RPATHна соответствующее значение, если вы используете эту функцию, так как в противном случаеdpkg-shlibdepsможет не найти собственные общие библиотеки. См. https://cmake.org/Wiki/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 -
Устанавливает поле
SuggestsDebian-пакета. Позволяет пакетам объявлять рекомендуемые группы для установки пакетов.- Обязательно : НЕТ
- По умолчанию :
- Пустая строка для установок, не основанных на компонентах
-
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. Типичное использование – для файлов конфигурации, 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. В частности, скрипты должны иметь соответствующий флаг executable перед созданием пакета.
-
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 используется «cmake_mode_t» NTFS альтернативный поток данных (ADT).
При использовании файловой системы без поддержки ADT можно сохранить только разрешения на чтение/запись владельца.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.10/module/CPackDeb.html