3 581
contributi
(18 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | |||
__TOC__ | |||
Su | ==Introduzione== | ||
sorgenti. | Su Debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i sorgenti.<br/> | ||
Il sistema [[APT]] opera su questi pacchetti che non necessariamente coincidono col significato generico di programma, infatti ci sono pacchetti che forniscono solo librerie necessarie a uno o più applicativi, ma di per se non direttamente utilizzabili dall'utente. Si ha dunque una struttura estremamente complessa dove un pacchetto dipende da altri pacchetti e a sua volta può essere un requisito per altri applicativi. Fortunatamente la gestione del sistema è fortemente automatizzata, gli strumenti precedentemente citati sono tutti in grado di fornire una lista di pacchetti necessari (chiamati dipendenze), consigliati e di pacchetti suggeriti, inoltre possono rimuovere un programma conservandone i file di configurazione, oppure eliminarlo totalmente; possono anche mostrare la descrizione di ogni pacchetto o ricercare quale pacchetto contiene una certa parola chiave nella descrizione, possono aggiornare in blocco l'intero sistema usando varie politiche di aggiornamento, possono installare i sorgenti di un pacchetto e gestire le dipendenze necessarie alla compilazione, possono infine molto altro ancora. Premesso questo è bene sapere che esistono fondamentalmente tre tipi di pacchetti, i binari, i sorgenti e i [[metapacchetto|metapacchetti]]. | |||
==Pacchetti binari== | ==Pacchetti binari== | ||
Riga 7: | Riga 10: | ||
I pacchetti binari sono archivi contenenti eseguibili, file di | I pacchetti binari sono archivi contenenti eseguibili, file di | ||
configurazione e documentazione che assieme formano un'applicazione. | configurazione e documentazione che assieme formano un'applicazione. | ||
Sotto | Sotto Debian, i binari hanno il suffisso .deb (c'è la possibilità anche | ||
di usare rpm, ma questa | di usare rpm, ma questa è un'altra storia). | ||
Vediamo cosa contiene un archivio .deb: | Vediamo cosa contiene un archivio .deb: | ||
Riga 26: | Riga 29: | ||
2.0</pre> | 2.0</pre> | ||
Il file debian-binary stabilisce la versione del formato deb, in questo | Il file <code>debian-binary</code> stabilisce la versione del formato deb, in questo | ||
caso la 2.0. Estraiamo gli archivi control.tar.gz e data.tar.gz. | caso la 2.0. Estraiamo gli archivi <code>control.tar.gz</code> e <code>data.tar.gz</code>. | ||
<pre> # tar xvzf control.tar.gz | <pre> # tar xvzf control.tar.gz | ||
Riga 66: | Riga 69: | ||
...</pre> | ...</pre> | ||
L'archivio control.tar.gz contiene le informazioni riguardanti il | L'archivio <code>control.tar.gz</code> contiene le informazioni riguardanti il | ||
pacchetto e le sue dipendenze e degli script che vengono lanciati prima | pacchetto e le sue dipendenze e degli script che vengono lanciati prima | ||
e dopo l'installazione o la rimozione. | e dopo l'installazione o la rimozione. | ||
Il file control contiene il nome del pacchetto, la sua versione, la | Il file <code>control</code> contiene il nome del pacchetto, la sua versione, la | ||
sezione, la | sezione, la priorità, l'architettura per cui è stato compilato il | ||
pacchetto, le dipendenze, il maintainer del pacchetto e la sua | pacchetto, le dipendenze, il maintainer del pacchetto e la sua | ||
descrizione. Diamogli un'occhiata. | |||
<pre> # cat control | <pre> # cat control | ||
Riga 105: | Riga 108: | ||
information is available at http://www.apache.org/.</pre> | information is available at http://www.apache.org/.</pre> | ||
Un pacchetto | Un pacchetto può avere priorità ''required'', ossia è necessario al funzionamento | ||
del sistema, important, quindi costituisce la base del sistema, standard, | del sistema, ''important'', quindi costituisce la base del sistema, ''standard'', | ||
cioè i pacchetti comuni presenti su sistemi non troppo minimali, ''optional'', | |||
i pacchetti totalmente opzionali, quindi X11, Emacs, e via dicendo, e infine | i pacchetti totalmente opzionali, quindi X11, Emacs, e via dicendo, e infine | ||
extra, che contiene pacchetti aventi caratteristiche particolari che li | ''extra'', che contiene pacchetti aventi caratteristiche particolari che li | ||
distinguono dagli optional. | distinguono dagli optional. | ||
Oltre alle dipendenze vere e proprie(nel caso di sopra le libc, dpkg, | Oltre alle dipendenze vere e proprie (nel caso di sopra le libc, dpkg, | ||
debconf, ecc.), abbiamo anche altri pacchetti citati, ossia i suggested | debconf, ecc.), abbiamo anche altri pacchetti citati, ossia i ''suggested | ||
packages, quindi quelli che possono funzionare bene assieme al pacchetto | packages'', quindi quelli che possono funzionare bene assieme al pacchetto | ||
che si sta installando, i recommended, che comunemente vengono | che si sta installando, i ''recommended'', che comunemente vengono | ||
installati assieme a quest'ultimo, i conflicts e i replaced packages, | installati assieme a quest'ultimo, i ''conflicts'' e i ''replaced packages'', | ||
rispettivamente i pacchetti con cui va in contrasto e che sostituisce, e | rispettivamente i pacchetti con cui va in contrasto e che sostituisce, e | ||
infine i provided services, i servizi che il pacchetto fornisce (in | infine i ''provided services'', i servizi che il pacchetto fornisce (in | ||
questo caso, demone http con supporto cgi). | questo caso, demone http con supporto cgi). | ||
Guardiamo ora conffiles: | Guardiamo ora il file <code>conffiles</code>: | ||
<pre> # cat conffiles | <pre> # cat conffiles | ||
Riga 125: | Riga 128: | ||
/etc/logrotate.d/apache</pre> | /etc/logrotate.d/apache</pre> | ||
Vengono elencati i file di configurazione che | Vengono elencati i file di configurazione che verranno creati. | ||
Gli scripts di cui parlavo prima sono postinst, postrm, preinst e prerm, | Gli scripts di cui parlavo prima sono <code>postinst</code>, <code>postrm</code>, <code>preinst</code> e <code>prerm</code>, | ||
che si occupano come | che si occupano come già detto delle operazione pre e post | ||
installazione/rimozione. | |||
L'archivio data.tar.gz contiene tutti i file che verranno effettivamente | L'archivio <code>data.tar.gz</code> contiene tutti i file che verranno effettivamente | ||
disposti nel filesystem. | disposti nel filesystem. | ||
Diamo per esempio un'occhiata alla directory usr: | Diamo per esempio un'occhiata alla directory <code>usr</code>: | ||
<pre> # ls | <pre> # ls | ||
Riga 144: | Riga 147: | ||
apache apacheconfig apachectl</pre> | apache apacheconfig apachectl</pre> | ||
==Pacchetti | == Pacchetti sorgente == | ||
I pacchetti sorgente possono essere di due tipi: | |||
;pacchetti nativi: sorgenti la cui struttura e contenuto aderisce alla [[Debian Policy]]. A partire da questi pacchetti è possibile costruire un file .deb . | |||
;pacchetti non nativi: sorgenti non pensati specificamente per Debian e che, pertanto, necessitano di modifiche da parte dei [[Maintainer|Debian Maintainers]] o dei [[Debian Developer|Debian Developers]] per poter costituire la base per la creazione di un pacchetto binario .deb . | |||
I pacchetti | === Pacchetti non nativi === | ||
un | I pacchetti sorgente non nativi costituiscono la stragrande maggioranza dei file sorgente e, prima di poter entrare a far parte di un [[repository]] Debian, devono essere modificati per poter aderire alla Debian Policy. La modifica più importante a questi sorgenti è la creazione della directory "debian".<br/> | ||
Questi sorgenti sono costituiti da due archivi e un file di testo: | |||
* un file <code>.dsc</code> che descrive il pacchetto | |||
* un archivio compresso <code>.orig.tar.gz</code> che contiene i sorgenti originali del software | |||
* un <code>.diff.gz</code> (o con nome simile) contenente le [[patch]] applicate da Debian al pacchetto. | |||
<pre> | |||
# apt-get source irssi-text | |||
Reading Package Lists... Done | |||
Building Dependency Tree... Done | |||
Need to get 1168kB of source archives. | |||
Get:1 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (dsc) [691B] | |||
Get:2 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (tar) [1154kB] | |||
Get:3 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (diff) [13.9kB] | |||
Fetched 1168kB in 11s (103kB/s) | |||
dpkg-source: extracting irssi-text in irssi-text-0.8.9 | |||
# ls | |||
irssi-text-0.8.9 irssi-text_0.8.9-3.dsc | |||
irssi-text_0.8.9-3.diff.gz irssi-text_0.8.9.orig.tar.gz</pre> | |||
Il file <code>.dsc</code> contiene la versione del software, l'[[architettura]] per cui è stato scritto, la [[dipendenze]] da soddisfare, il checksum [[SHA]] dei due archivi per verificarne l'integrità e la firma [[GPG]] per accertarsi che i pacchetti provengano da una fonte sicura. | |||
<pre> | |||
# cat irssi-text_0.8.9-3.dsc | |||
-----BEGIN PGP SIGNED MESSAGE----- | |||
Hash: SHA1 | |||
Format: 1.0 | |||
Source: irssi-text | |||
Version: 0.8.9-3 | |||
Binary: irssi-text | |||
Maintainer: David Pashley <david@davidpashley.com> | |||
Architecture: any | |||
Standards-Version: 3.6.1 | |||
Build-Depends: libglib2.0-dev, perl (>= 5.8.1), libperl-dev (>= 5.8.1), libncurses5-dev, debhelper (>=3.0.18), libssl-dev, openssl, autotools-dev | |||
Files: | |||
1df516a770656ff0bec0ab62f9096bf6 1153560 irssi-text_0.8.9.orig.tar.gz | |||
37f128f0dafa596c006090a1036ec9b2 13944 irssi-text_0.8.9-3.diff.gz | |||
-----BEGIN PGP SIGNATURE----- | |||
Version: GnuPG v1.2.5 (GNU/Linux) | |||
iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd/t+qP8OkRmh1e6mUH8wz+ic==TYfB | |||
-----END PGP SIGNATURE----- | |||
</pre> | |||
I file di control già visti nei pacchetti binari sono anche qui, contenuti nella cartella "debian" dell'archivio. | |||
<pre> | |||
# ls irssi-text-0.8.9 | |||
AUTHORS README.cygwin config.sub findsyntax.pl ltmain.sh | |||
COPYING TODO configure install-sh missing | |||
ChangeLog acconfig.h configure.in irssi-config.in mkinstalldirs | |||
INSTALL aclocal.m4 curses.m4 irssi-icon.png scripts | |||
Makefile.am autogen.sh debian irssi-version.h.in src | |||
Makefile.in colorless.theme default.theme irssi.conf stamp-h.in | |||
NEWS config.guess docs irssi.spec stamp.h.in | |||
README config.h.in file2header.sh irssi.spec.in syntax.pl | |||
# ls irssi-text-0.8.9/debian | |||
botti.1 conffiles copyright irssi-text.postinst prerm undocumented | |||
changelog control dirs menu rules | |||
</pre> | |||
Nel caso si stia installando un pacchetto sorgente, è bene <u>non</u> seguire la procedura <code>./configure;make;make install</code>; perché il pacchetto non verrà tracciato, non si potrà prenderne informazioni tramite <code>dpkg-query</code> e per la rimozione bisognerà procedere manualmente, con il rischio di 'sporcare' la distribuzione.<br/> | |||
È meglio usare strumenti quali <code>dpkg-buildpackage</code> e <code>apt-build</code> (per cui rimando alle pagine di man) per avere i vantaggi della compilazione senza 'sporcare' il sistema. | |||
== Metapacchetti == | |||
Leggere la guida: [[Gestione dei metapacchetti]] | |||
{{Autori | |||
|Autore=[[User:sync|sync]] | |||
}} | |||
[[Categoria:Apt]] | |||
[[Categoria:Creare e modificare pacchetti]] | |||
[[Categoria:Gestione dei Pacchetti]] |
contributi