Boost è un esempio complesso, diamo prima uno più semplice.
In particolare, il pacchetto sorgente openssl fornisce 5 pacchetti binari:
libssl1.0.0
contiene la libreria dinamica OpenSSL, versione 1.0.0. Ecco cosa devono eseguire i programmi collegati a questa libreria. Il nome del pacchetto contiene un numero di versione perché potresti avere altre versioni della libreria installate contemporaneamente, se hai altri programmi collegati a un'altra versione che non è compatibile con i binari con 1.0.0.
openssl
contiene strumenti da riga di comando che utilizzano la libreria OpenSSL. Anche se hai più versioni della libreria, non hai bisogno di più versioni di questi strumenti: ce n'è solo una /usr/bin/openssl
e strumenti, dati e documentazione associati.
libssl-dev
contiene i file necessari se si desidera compilare un programma che si collega a OpenSSL. Esistono file di intestazione C ( *.h
), librerie per il collegamento ( *.a
, *.so
) e alcuni file assortiti.
libssl-doc
contiene documentazione per la libreria OpenSSL. Questo pacchetto è necessario solo per scrivere programmi che utilizzano la libreria.
libssl1.0.0-dbg
contiene simboli di debug. È utile solo per le persone che eseguono il debug della libreria OpenSSL o dei programmi che la utilizzano. La risposta di andrewsomething ha maggiori informazioni su questi -dbg
pacchetti.
Inoltre, precise contiene una versione precedente della libreria libssl0.9.8
, poiché esistono programmi ancora collegati alla versione precedente.
Altri pacchetti che potresti vedere sono collegamenti per lingue diverse da C. OpenSSL non viene fornito con nessuno (ci sono collegamenti a OpenSSL per altre lingue, ma non provengono dalla stessa fonte). Un esempio è sqlite3 , fornito con attacchi TCL .
Il motivo principale per suddividere i pacchetti in questo modo è che pacchetti diversi hanno destinatari diversi. Un sistema in cui nessuno compila mai nulla necessita solo del lib
pacchetto principale e forse degli strumenti da riga di comando; verranno installati automaticamente dalle dipendenze, se necessario. Se qualcuno vuole compilare un programma che utilizza la libreria, ha bisogno del -dev
pacchetto. Se qualcuno vuole scrivere un programma che utilizza la libreria, ha bisogno del -doc
pacchetto.
E che dire di Boost? Segue la stessa struttura, ma poiché Boost è un'enorme libreria, è suddiviso in molti pacchetti più piccoli: libboost-*1.46.1
e libboost-*1.46-dev
. In particolare, esiste solo una versione di Boost, 1.46 , ma oneiric aveva sia 1.42 che 1.46 . Esiste anche un boost di default del metapacchetto che inserisce il pacchetto con versione come dipendenza.
Guardando libhangul , oltre al pacchetto di libreria dinamica libhangul1
e al pacchetto di sviluppo libhangul-dev
, c'è un pacchetto libhangul-data
. Questo pacchetto contiene dati aggiuntivi richiesti dalla libreria. Anche se hai più versioni della libreria, possono condividere il -data
pacchetto. Inoltre, il pacchetto è indipendente dall'architettura. Il software che contiene una grande quantità di dati indipendenti dall'architettura è suddiviso in pacchetti dipendenti dall'architettura e indipendenti dall'architettura, per risparmiare spazio sui siti di distribuzione. Un altro suffisso con un significato simile è -common
.
Le regole di packaging di Ubuntu e Debian sono molto simili, quindi il materiale per la creazione di pacchetti Debian si applica anche a Ubuntu. In effetti, puoi avere lo stesso pacchetto sorgente per Debian e Ubuntu; l'unica cosa che rende diversi i pacchetti Debian e Ubuntu è la loro compilazione con diverse versioni della libreria, e non è altro che la differenza tra le diverse versioni di Ubuntu. Tieni a portata di mano la documentazione per gli sviluppatori Debian , in particolare il Manuale delle politiche Debian e il Riferimento per gli sviluppatori ; consultare la Guida del nuovo manutentore per un'introduzione. Ignora le parti su come lavorare con il progetto Debian e così via, leggi le parti su come creare un pacchetto.dh_make
è un buon modo per iniziare con un pacchetto deb (ti consigliamo di selezionare "Libreria").