|
|
| Come creare pacchetti Debian - How to make deb packages | ||
|---|---|---|
| by Joe Zonker (Oct. 24, 2003) Traduzione: roberto Premoli (Nov. 5, 2003) Debian si posiziona al quarto posto tra le distribuzioni piu' usate per lo sviluppo di sistemi embedded come si puo' notare qui LinuxDevices.com's annual Embedded Linux Market Survey, con un crescente tasso di utilizzo. Gli sviluppatori che desiderano distribuire i binari ed i sorgenti del proprio software per renderlo disponibile per Debian dovranno imparare le basi per creare i pacchetti Debian (.deb). This dettagliato how-to mostra tutti i componenti necessari per un pachetto (package) e come metterli insieme pre creare un prodotto finito. Il sistema di pacchettizazione Debian e' uno dei piu' eleganti metodi disponibili di installazione, upgrade e rimozione del software. Per tutti voi, tifosi di altri sistemi di pacchettizzazione prima che mi mandiate i vostri flames, per favore notate che ho detto "uno dei" e non semplicemente "il migliore". Gli altri sistemi di pacchettizzazione hanno il loro fascino, ma in questo articolo io mi focalizzero' sul sistema di pacchettizzazione di Debian. Nello specifico, mi appresto a creare pacchetti Debian, cosi' sarai in grado di distribuire i tuoi pacchetti in formato .deb oppure semplicemente per il tuo proprio uso. Partiro' dalle componenti base del pachetto cioe' cio' che ti serve per creare il pacchetto e alla fine li uniremo per creare il pacchetto finale. Comprendere i pachetti
Debian Cosa e' un pacchetto, esattamente? il pacchetto contiene le istruzioni su dove quei file dovrebbero risiedere all'interno del filesystem, da quali librerie o altri programmi (nel caso) dipendono i file contenuti nel pacchetto quali essere contenuti i file, le istruzioni di setup e gli script per la configurazione di base. Notate che molti pacchetti non devono o non dovrebbero essere usati con i settaggi di default contenuti nei loro file di configurazione. Con pacchetti come Apache, avrai ancora la necessita' di configurare l'installazione dopo che il pacchetto e' stato installato. i pacchetti solitamente contengono del software precompilato, (binari) ma tu puoi "pacchettizzare" anche del codice sorgente. Alcuni amministratori potrebbero preferire installare partendo dai sorgenti, oppure quel'applicativo potrebbe necessitare di una parametrizzazione particolare prima che venga compilato, cosi' se tu stai distribuendo un software che e' sotto licenza free o opensource, tu potresti desiderare di creare un pacchetto di sorgenti cosi' come un pacchetto di binari. Nota: I pacchetti precompilati sono solitamente chiamati "binari", sebbene questo sia una specie di errore (NDT: letteralmente: misnomer). Si, gli eseguibili sono in formato binario, ma lo sono anche JPEGs, MP3s, e molti altri file non eseguibili. Avrebbe forse piu' senso chiamare i software precompilati pacchetti "eseguibili". Tutti i pacchetti Debian binari consistono in tre cose di base: un file di testo chiamato debian-binary, un file compresso in formato tarball chiamato control.tar.gz, e un altro file compresso in formato tarball chiamato data.tar.gz. il file di testo debian-binary contiene un numero di versione per il pacchetto binario, e tale numero dovrebbe essere il file data.tar.gz contiene il "payload" attuale del pacchetto. Cioe', esso contiene un filesystem con tutti i relativi file per il programma che, una volta installato, piazzera' nei giusti posti del tuo filesystem. Se tu vuoi vedere da te come appare un pacchetto Debian, scarica qualche pacchetto dal sito Debian (vedi il link Resources piu' avanti in questo articolo)
ed esegui il comando Devo essere uno sviluppatore Debian? Ci sono numerose compagnie e progetti che creano e distribuiscono il loro software sotto forma di pacchetti Debian. Questi sono pacchetti non "ufficiali" ma sono comunque un grande vantaggio per gli utenti Debian che desiderano essere in grado di installare il software utilizzando dpkg or APT (Advanced Packaging Tool). Quello che ti serve per iniziare Ci sono molti pacchetti dei quali avrai bisogno che siano installati per creare pacchetti su un sistema Debian. Molti di questi paccetti sono installati di default sul tuo PC. Tu avrai bisogno di dpkg, gcc, make e cosi' via: avrai bisogno anche dei pacchetti base dedicati alla creazione di pacchetti, build-essential e dpkg-dev i quali possono o non possono essere gia' installati sul tuo sistema. Convenzione sui nomi usati nei pacchetti Debian Il nome stesso del pacchetto (non il nome del file, proprio il nome del pacchetto) puo' contenere lettere minuscole, numeri, e i segni di meno "-" e piu' "+" characters. (Potrebbe suonare strano che un pacchetto abbia un "+" nel nome, ma e' usato per molti pacchetti quali "doc++" -- una serie di documentazione per il codice C/C++ code.) Cosi "miopacchetto-2++" e' un nome di pacchetto perfettamente valido, mentre "MIO_pachetto" o "miopacchetto2.0" non lo sarebbe. Ogni pacchetto deve avere un unico nome che gia' non esista nell'archivio Debian. Benche' tu tecnicamente non hai bisogno di aderire a queste specifiche per installare un pacchetto, tu dovresti essere sicuro che il nome del tuo pacchetto non vada in conflitto con i nomi ufficiali dei pacchetti Debian. Per esempio, se vuoi distribuire una versione particolarmente modificata di Apache come alternativa alla versione ufficiale, tu non dovresti usare il nome apache_X.X.X-i386.deb, perche' i ragazzi di Debian hanno gia' un pacchetto apache . Invece tu dovresti voler usare qualcosa come acme-apache_X.X.X-i386.deb. Creare un pacchetto Debian
il file Control
I campi del file Control In questa sezione vedremo il significato di ogni campo e quale valore gli dovra' essere assegnato. Molti di quei campi sono opzionali, cosi il tuo pacchetto.non dovra' per forza includere tutti i campi qui descritti se essi non hanno attinenza com vostro pacchetto. Per esempio un pacchetto non richiedera' il campo "Source" se il source (NDT: sorgente) del pacchetto non e' disponibile. Se il tuo pacchetto non andra' in conflitto con nessun altro pacchetto, non avrai bisogno di includere il campo "Conflicts", e cosi' via. Il primo campo di ogni file control e' il campo "Package". In questo campo dovrai specificare il nome del pacchetto. Il campo successivo, "Version" e' il numero di versione del pacchetto. Puoi usare qualsiasi schema di numerazione che usa l'autore originale del pacchetto, ma non puoi usare il carattere lineetta "-" all'interno del nome. Qualunque cosa scritta dopo il carattere "-" viene considerata da Debian il numero di revisione del pacchetto. Per esempio, se per qualche ragione il nomero di versione e' dato come 1.01-1, il numero di versione verra' considerato "1.01" con il nubero di revisione Debian do "1" -- chiaramente, non il risultato che tu stavi cercando.. Il campo "Manutentore" (NDT: letteralmente: "Maintainer") dovrebbe essere il tuo nome, o il nome della societa' e l'indirizzo e-mail deve essere contenuto tra parentesi quadre come mostrato sopra. Il campo "Installed-Size" si spiega faclmente da solo. Dipendenze Ci sono molti campi opzionali che hanno a che fare con le dipendenze. Li analizzeremo brevemente qui. Assicurati di aver esattamente classificato (NDT: lett. sorted out) di quali pacchetti il tuo pacchetto potrebbe aver bisogno prima dell'installazione -- il sistema delle dipendenze e' tanto piu' intellegente solo quanto lo sono gli sviluppatori a fornirgli le corrette informazioni. Le dipendenze danno fino a 5 campi nel file Control: Depends, Enhances, Pre-Depends, Recommends, and Suggests. il campo Depends dovrebbe contenere il nome di ogni pacchetto che il tuo pacchetto richiede assolutamente per poter funzionare. se c'e' un pacchetto "nice
to have" (NDT: carino ad aversi) in relazione al tuo, ma non necessario per un uso normale del tuo pacchetto, allora andrebbe posizionato nel campo "Recommends" o "Suggests". Noterai nell'esempio precedente che il campo "Recommends" ha due distinti pacchetti separati da una pipe ( beh, quale e' la differenza tre "Recommends" e "Suggests", allora? Tutti i pacchetti che dovresti probabilmente avere, ma che non sono assolutamente necessari vanno messi in "Recommends". In accodo con il manuale della policy: "list packages that would be found together with this one in all but unusual installations." Pacchetti che potrebbero essere utili ma che non sono in alcun modo richiesti dovrebbero essere messi nel campo "Suggests". Per esempio, il pacchetto the DocBook XML DTD (docbook-xml) mostra il pacchetto the DocBook SGML (docbook) come pacchetto "Recommended" ed il pacchetto DocBook documentation (docbook-doc) come pacchetto "suggested". In molte circostanze, se tu hai XML DTD, allora probabilmente avrai anche il pacchetto SGML DTD -- ma non in ogni occasione. E' solitamente (leggi: sempre) una buona idea installare la documentazione riguardante un pacchetto i programmi correlati, come i DocBook docs, ma non sono necessari per la normale operativita del tuo programma. Il campo "Enhances" indica che il tuo pacchetto potrebbe migliorare l'usabilita' di un altro pacchetto. Cosi', il pacchetto docbook-doc potrebbe avere un campo "Enhances" con docbook-xml quale uno dei pacchetti migliorati. Il campo "Pre-Depends" e' riservato per casi speciali. Quando in pacchetto e' indicato come "Pre-Depends," esso forza il sistema ad assicurarsi che il pacchetto indicato sia completamente installato prima di tentare di installare il tuo pacchetto. Infine, lavorando col numero di versione ci sono molti simboli che avrai bisogno di comprendere. Noterai che uno dei pacchetti indicati come dipendenze hanno un dato numero di versione, LE relazioni disponibili sono strettamente precedente ( Specificando i conflitti I pacchetti che confliggono totalmente col nostro pacchetto dovrebbero essere listati nel campo "Conflicts". Per esempio, sestai pacchettizzando una versione modificata di Apache, tu non vorresti che la versione normale di apache fosse installata sul tuo sistema instele alla tua versione, -- cosi' "apache" dovrebbe essere listato come in conflitto. Infine, il file di controllo dovrebbe essere posizionatoall'interno di una directori chiamata DEBIAN, cosi' come dovrebbero esserlo gli script menzionati nella prossima sezione. Questa directory non verra' "turn up" (NDT: non ho saputo tradurre) nell'archivio finale .deb. Scripts Lo script Il passo finale Tu userai il comando Cosi', per esempio, se il tuo programma ha un fole di configurazione all'interno di etc/, ed il programma stesso sara' in usr/bin/, e della documentazione inerente sara' in usr/share/doc/package/, tu dovrai ricreare lo stessoalbero di directories all'interno della directory che userai per creare il tuo pacchetto. Superare la parte iniziale (NDT: lett. Beyond the
basics) Ci sono un po' di "intricacies" nella crazione dei pacchetti che sono oltre lo scopo di questo articolo. PEr esempio, se stai pacchettizzando un mail user agent o un mail transport agent, ci sono delle specifiche considerazioni da applicare. Questo articolo semplicemente copre le nude basi per la creazione di un pacchetto Debian. Sii sicuro ci veripicare il manuale della policy Debian (vedi Resources per il link) per essere sicuro di seguire pienamente le linee guida per la creazione di pacchetti.. Ci sono molte categorie di programmi che richiedono attenzioni extra, compresi ogni Web servers, demoni, programmi in Perl moduli, programmi X, e cosi' via.. Tu troverai quello che ti serve per adattare i tuoi programmi nella sezione Customized Programs del manuale della policy.
![]() |