Boost ist ein komplexes Beispiel, schauen wir uns zunächst ein einfacheres an.
Genauer gesagt enthält das OpenSSL- Quellpaket 5 Binärpakete:
libssl1.0.0
enthält die OpenSSL Dynamic Library, Version 1.0.0. Das ist es, was Programme, die mit dieser Bibliothek verknüpft sind, ausführen müssen. Der Paketname enthält eine Versionsnummer, da möglicherweise gleichzeitig andere Versionen der Bibliothek installiert sind, wenn andere Programme mit einer anderen Version verknüpft sind, die nicht mit 1.0.0 binär kompatibel ist.
openssl
Enthält Befehlszeilentools, die die OpenSSL-Bibliothek verwenden. Selbst wenn Sie über mehrere Versionen der Bibliothek verfügen, benötigen Sie nicht mehrere Versionen dieser Tools: Es gibt nur ein Tool /usr/bin/openssl
und die zugehörigen Tools, Daten und Dokumentationen.
libssl-dev
Enthält die Dateien, die Sie benötigen, um ein Programm zu kompilieren, das mit OpenSSL verknüpft ist. Es gibt C-Header-Dateien ( *.h
), Bibliotheken zum Verknüpfen ( *.a
,*.so
) und einige verschiedene Dateien.
libssl-doc
enthält Dokumentation für die OpenSSL-Bibliothek. Sie benötigen dieses Paket nur, wenn Sie Programme schreiben möchten, die die Bibliothek verwenden.
libssl1.0.0-dbg
enthält Debugging-Symbole. Dies ist nur nützlich für Benutzer, die die OpenSSL-Bibliothek oder Programme, die sie verwenden, debuggen. Die Antwort von andrewsomething enthält weitere Informationen dazu-dbg
Paketen.
Darüber hinaus enthält präzise eine ältere Version der Bibliothek, libssl0.9.8
da es Programme gibt, die noch mit der älteren Version verlinkt sind.
Andere Pakete, die Sie möglicherweise sehen, sind Bindungen für andere Sprachen als C. OpenSSL wird nicht mit allen ausgeliefert (es gibt Bindungen für OpenSSL für andere Sprachen, aber sie stammen nicht aus derselben Quelle). Ein Beispiel ist sqlite3 , das mit TCL-Bindungen geliefert wird .
Der Hauptgrund für die Aufteilung solcher Pakete ist, dass unterschiedliche Pakete unterschiedliche Zielgruppen haben. Ein System, in dem niemand jemals etwas kompiliert, benötigt nur das lib
Kernpaket und möglicherweise die Befehlszeilentools. Sie werden bei Bedarf automatisch aus den Abhängigkeiten installiert. Wenn jemand ein Programm kompilieren möchte, das die Bibliothek verwendet, benötigt er das -dev
Paket. Wenn jemand ein Programm schreiben möchte, das die Bibliothek verwendet, benötigt er das -doc
Paket.
Was ist mit Boost? Es folgt der gleichen Struktur, aber da Boost eine riesige Bibliothek ist, wird es in viele kleinere Pakete aufgeteilt: libboost-*1.46.1
und libboost-*1.46-dev
. Genau genommen gibt es nur eine Version von Boost, 1.46 , aber oneiric hatte sowohl 1.42 als auch 1.46 . Es gibt auch ein Metapaket für die Boost- Standardeinstellungen , das das versionierte Paket als Abhängigkeit abruft .
Wenn man sich libhangul ansieht , gibt es neben dem dynamischen Bibliothekspaket libhangul1
und dem Entwicklungspaket libhangul-dev
ein Paket libhangul-data
. Dieses Paket enthält zusätzliche Daten, die von der Bibliothek benötigt werden. Selbst wenn Sie über mehrere Versionen der Bibliothek verfügen, können diese das -data
Paket gemeinsam nutzen. Das Paket ist außerdem architekturunabhängig. Software, die eine große Menge architekturunabhängiger Daten enthält, wird in architekturabhängige und architekturunabhängige Pakete aufgeteilt, um Speicherplatz auf Verteilungsstandorten zu sparen. Ein anderes Suffix mit einer ähnlichen Bedeutung ist-common
.
Ubuntu- und Debian-Paketierungsregeln sind sehr ähnlich, so dass Material über die Erstellung von Debian-Paketen auch für Ubuntu gilt. Tatsächlich können Sie dasselbe Quellpaket für Debian und Ubuntu haben; Das einzige, was Debian- und Ubuntu-Pakete unterscheidet, ist das Kompilieren gegen verschiedene Bibliotheksversionen. Das ist nicht mehr als der Unterschied zwischen verschiedenen Versionen von Ubuntu. Halten Sie die Debian-Entwicklerdokumentation bereit, insbesondere das Debian-Richtlinienhandbuch und die Entwicklerreferenz . Im New Maintainer's Guide finden SieEine Einführung finden . Ignorieren Sie die Teile über die Arbeit mit dem Debian-Projekt und so weiter, lesen Sie einfach die Teile über die Erstellung eines Pakets.dh_make
eine gute Möglichkeit, um mit einem Deb-Paket zu beginnen (wählen Sie "Library" aus).