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 -
Устанавливает поле управления приоритетом, например, required, important, standard, optional, extra
- Обязательно : ДА
- По умолчанию : “optional”
См. 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 -
Может быть установлено в ON для использования
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 -
Устанавливает поле
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. Типичное использование — для конфигурационных файлов, 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-файлов из этапа установки в генератор DEB CPack используется альтернативный потоковый файл (ADT) NTFS «cmake_mode_t».
Если используется файловая система без поддержки ADT, то сохраняются только разрешения на чтение/запись владельца.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.11/module/CPackDeb.html