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
пакетах.
Кроме того, в Precision содержится более старая версия библиотеки, libssl0.9.8
поскольку существуют программы, которые по-прежнему связаны со старой версией.
Другие пакеты, которые вы можете увидеть, являются привязками для языков, отличных от C. OpenSSL не поставляется ни с одним (есть привязки к OpenSSL для других языков, но они не из того же источника). Примером является sqlite3 , который поставляется с привязками TCL .
Основная причина такого разделения пакетов заключается в том, что разные пакеты имеют разную целевую аудиторию. Система, в которой никто ничего не компилирует, нуждается только в основном lib
пакете и, возможно, в инструментах командной строки; при необходимости они будут установлены автоматически из зависимостей. Если кто-то хочет скомпилировать программу, которая использует библиотеку, ему нужен -dev
пакет. Если кто-то хочет написать программу, которая использует библиотеку, ему нужен -doc
пакет.
Так что насчет Boost? Он имеет ту же структуру, но поскольку Boost - огромная библиотека, он разбит на множество небольших пакетов: libboost-*1.46.1
и libboost-*1.46-dev
. Точнее, есть только одна версия Boost, 1.46 , но у oneiric было и 1.42, и 1.46 . Существует также мета - пакет boost-defaults, который вытягивает версионный пакет как зависимость.
Глядя на libhangul , кроме пакета динамической библиотеки и пакета libhangul1
разработки libhangul-dev
, есть пакет libhangul-data
. Этот пакет содержит дополнительные данные, необходимые для библиотеки. Даже если у вас есть несколько версий библиотеки, они могут поделиться -data
пакетом. Также пакет не зависит от архитектуры. Программное обеспечение, которое содержит большое количество архитектурно-независимых данных, разбивается на архитектурно-независимые и архитектурно-независимые пакеты для экономии места на сайтах распространения. Другой суффикс с подобным значением является -common
.
Правила упаковки Ubuntu и Debian очень похожи, поэтому материал о создании пакетов Debian также применим к Ubuntu. Фактически, вы можете иметь один и тот же исходный пакет для Debian и Ubuntu; единственное, что отличает пакеты Debian и Ubuntu, это компилирование их для разных версий библиотеки, и это не более чем различие между различными выпусками Ubuntu. Имейте под рукой документацию для разработчиков Debian , особенно руководство по политике Debian и справочник разработчика ; см . Руководство нового сопровождающего для ознакомления. Игнорируйте части о работе с проектом Debian и так далее, просто прочитайте части о создании пакета.dh_make
хороший способ начать работу с пакетом deb (вам нужно выбрать «Library»).