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.0enthä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.
opensslEnthä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/opensslund die zugehörigen Tools, Daten und Dokumentationen.
libssl-devEnthä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-docenthä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-dbgenthä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 libKernpaket 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 -devPaket. Wenn jemand ein Programm schreiben möchte, das die Bibliothek verwendet, benötigt er das -docPaket.
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.1und 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 libhangul1und dem Entwicklungspaket libhangul-devein 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 -dataPaket 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).