Как и почему создавать пакеты -dbg, -dev, -doc?

Я пишу пакет Ubuntu для пакета, который по существу предоставляет несколько библиотек и заголовков, которые затем будут использоваться для создания другого программного обеспечения. Пакет также разбивается на более мелкие подпакеты, которые взаимозависимы; в этом смысле пакет очень похож на boost.

Я заметил, что пакеты, такие как boost, обеспечивают

[...]
libboost-dbg
libboost-dev
libboost-doc
[...]
libboost-all-dev
[...]

, но ничего не происходит по имени boost или libboost.

Какова идея этого? Каковы цели пакетов -dbg, -dev и -doc? Существуют ли инструкции по написанию файлов сборки для этих пакетов?
1
задан 4 June 2014 в 00:27

1 ответ

Boost - сложный пример, давайте сначала посмотрим на более простой.

Точно, исходный пакет openssl предоставляет 5 двоичных пакетов:

libssl1.0.0 содержит динамику OpenSSL библиотека, версия 1.0.0. Это программы, связанные с этой библиотекой. Имя пакета содержит номер версии, поскольку одновременно могут быть установлены другие версии библиотеки, если у вас есть другие программы, связанные с другой версией, не совместимой с двоичными файлами с 1.0.0. openssl содержит инструменты командной строки, которые используют библиотеку OpenSSL. Даже если у вас несколько версий библиотеки, вам не нужны несколько версий этих инструментов: есть только один /usr/bin/openssl и связанные с ним инструменты, данные и документация. libssl-dev содержит файлы, которые вам нужны, если вы хотите скомпилировать программу, которая ссылается на OpenSSL. Существуют файлы заголовков C (*.h), библиотеки для связывания (*.a, *.so) и несколько отсортированных файлов. libssl-doc содержит документацию для библиотеки OpenSSL. Вам нужен только этот пакет, если вы собираетесь писать программы, которые используют библиотеку. libssl1.0.0-dbg содержит отладочные символы. Это полезно только тем, кто отлаживает библиотеку OpenSSL или программы, которые ее используют. В ответе andrewsomething есть более подробная информация об этих пакетах -dbg.

Кроме того, точная содержит более старую версию библиотеки, openssl , потому что есть программы, которые все еще связаны с более старой версией.

Другие пакеты вы можете увидеть привязки для языков, отличных от C. OpenSSL не поставляется с любыми (есть привязки к OpenSSL для других языков, но они не из одного источника). Примером может служить sqlite3, который поставляется с привязками TCL.

Основной причиной разделения пакетов, как это, является то, что разные пакеты имеют разные целевые аудитории. Система, в которой никто никогда не компилирует ничего, нуждается только в базовом пакете lib и, возможно, в инструментах командной строки; они будут установлены автоматически из зависимостей, если это необходимо. Если кто-то хочет скомпилировать программу, которая использует библиотеку, им нужен пакет -dev. Если кто-то хочет написать программу, которая использует библиотеку, им нужен пакет -doc.

Так как насчет Boost? Он следует той же структуре, но поскольку Boost представляет собой огромную библиотеку, она разбита на несколько небольших пакетов: libboost-*1.46.1 и libboost-*1.46-dev. В точной версии есть только одна версия Boost, sqlite3 , но у oneiric были как привязки TLS 1.42, так и .

Глядя на 1.42 , в дополнение к пакету динамической библиотеки libhangul1 и пакет разработки libhangul-dev, есть пакет libhangul-data. Этот пакет содержит дополнительные данные, необходимые библиотеке. Даже если у вас несколько версий библиотеки, они могут совместно использовать пакет -data. Кроме того, пакет не зависит от архитектуры. Программное обеспечение, которое содержит большой объем независимых от архитектуры данных, разделяется на независимые от архитектуры и не зависящие от архитектуры пакеты, чтобы сэкономить место на сайтах распространения. Другим суффиксом с аналогичным значением является -common.

Правила упаковки Ubuntu и Debian очень похожи, поэтому материал о создании пакетов Debian также относится к Ubuntu. Фактически, вы можете иметь один и тот же исходный пакет для Debian и Ubuntu; единственное, что делает пакеты Debian и Ubuntu разными, заключается в их компиляции с различными версиями библиотекm, и это не более чем разница между различными версиями Ubuntu. Имейте libhangul-data под рукой, особенно boost-defaults и Reference Developer; см. Руководство по новому руководству для введения. Игнорируйте части, касающиеся работы с проектом Debian и т. Д., Просто прочитайте части о создании пакета. dh_make - это хороший способ начать работу с пакетом deb (вам нужно выбрать «Библиотека»).

11
ответ дан 25 May 2018 в 06:58

Другие вопросы по тегам:

Похожие вопросы: