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

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

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

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

но ничто, что идет именем boost или libboost.

  • Какова идея позади этого?
  • Что является целями -dbg, -dev, и -doc пакеты?
  • Там какие-либо инструкции предоставлены о том, как записать файлы типа "build" для тех пакетов?
15
задан 3 June 2014 в 12:27

2 ответа

Идея и Цель

Главная причина для того, чтобы выделить эти различные пакеты имеет отношение к дисковому пространству и скорости загрузки. В частности, это - большое беспокойство о зеркальном пространстве, так как это означает распределять несколько копий данных. Путем создания foo-common, foo-data, или foo-doc пакеты Architecture: all, мы только сохраняем одну копию данных в архиве вместо того, чтобы скопировать его с каждой архитектурой (например, i386, amd64, ect...). Отладочная информация не нужна большинством пользователей и только заканчивает тем, что заставила загрузку пакета занять больше времени.

Для пакетов в официальных архивах Ubuntu нет на самом деле никакой причины создать -dbg пакеты вручную. Машины сборки автоматически разделяют отладочную информацию и помещают их в -dbgsym пакеты размещаются на ddebs.ubuntu.com. (См.: Пакеты Отладочного символа) -dbg пакеты, которые действительно существуют, обычно просто переносятся от Debian.

Инструкции

Что касается реализации, смотрите на этот вопрос:

Кратко, новые строки файла конфигурации должны быть созданы в debian/control для каждого пакета. Затем debian/foo-*.install файлы должны быть созданы также. Это позволит dh_install помещать правильное содержание в правильные пакеты.

foo.install поскольку основной двоичный пакет мог бы быть похожим:

usr/bin/
usr/lib/

foo-common.install, foo-data.install, foo-doc.install, или безотносительно:

/usr/share/doc/
/usr/share/icons/
/usr/share/foo/
/usr/share/locale/

И для foo-dev:

/usr/include/
/usr/lib/pkgconfig
/usr/lib/*.so

Создание foo-dbg пакет требует редактирования debian/rules как обычно dh_strip разделит отладочную информацию. Таким образом, мы должны переопределить то поведение:

.PHONY: override_dh_strip
override_dh_strip:
        dh_strip --dbg-package=foo-dbg
13
ответ дан 23 November 2019 в 02:44

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

В точном 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 пакеты.

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

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

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

Таким образом что относительно Повышения? Это следует за той же структурой, но потому что Повышение является огромной библиотекой, это разбито во многие меньшие пакеты: libboost-*1.46.1 и libboost-*1.46-dev. В точном существует только одна версия Повышения, 1.46, но сновещательный имел и 1.42 и 1.46. Существует также метапакет значения по умолчанию повышения, который вытягивает в имеющем версию пакете как зависимость.

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

Ubuntu и Debian, упаковывающий правила, очень похожи, таким образом материал о создании пакетов Debian также относится к Ubuntu. На самом деле у Вас может быть тот же исходный пакет для Debian и Ubuntu; единственная вещь, которая делает Debian и пакеты Ubuntu отличающимися, компилирует их против другой библиотеки versionsm, и это - не больше, чем различие между различными релизами Ubuntu. Имейте документацию разработчика Debian под рукой, особенно Руководство политики Debian и Ссылку Разработчика; см. Руководство Нового Специалиста по обслуживанию для введения. Проигнорируйте части о работе с проектом Debian и так далее, просто считайте части о создании пакета. dh_make хороший путь состоит в том, чтобы начать с deb пакетом (Вы захотите выбрать “Библиотеку”).

12
ответ дан 23 November 2019 в 02:44

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

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