3 581
contributi
mNessun oggetto della modifica |
|||
(13 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | |||
__TOC__ | |||
==Introduzione== | ==Introduzione== | ||
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== | |||
I pacchetti binari sono archivi contenenti eseguibili, file di | |||
configurazione e documentazione che assieme formano un'applicazione. | |||
Sotto Debian, i binari hanno il suffisso .deb (c'è la possibilità anche | |||
di usare rpm, ma questa è un'altra storia). | |||
Vediamo cosa contiene un archivio .deb: | |||
<pre> # ls | |||
apache_1.3.33-6_i386.deb | |||
# ar -tv apache_1.3.33-6_i386.deb | |||
rw-r--r-- 0/0 4 May 11 11:34 2005 debian-binary | |||
rw-r--r-- 0/0 13852 May 11 11:34 2005 control.tar.gz | |||
rw-r--r-- 0/0 369530 May 11 11:34 2005 data.tar.gz</pre> | |||
Abbiamo un file e due tarball. Procediamo estraendo questi ultimi. | |||
<pre> | |||
# | <pre> # ar -x apache_1.3.33-6_i386.deb | ||
</pre> | # ls | ||
apache_1.3.33-6_i386.deb control.tar.gz data.tar.gz debian-binary | |||
# cat debian-binary | |||
2.0</pre> | |||
Il file <code>debian-binary</code> stabilisce la versione del formato deb, in questo | |||
caso la 2.0. Estraiamo gli archivi <code>control.tar.gz</code> e <code>data.tar.gz</code>. | |||
<pre> # tar xvzf control.tar.gz | |||
./ | |||
./config | |||
./templates | |||
./postinst | |||
./preinst | |||
./prerm | |||
./postrm | |||
./conffiles | |||
./control | |||
./md5sums | |||
# tar xvzf data.tar.gz | |||
./ | |||
./etc/ | |||
./etc/apache/ | |||
./etc/apache/conf.d/ | |||
./etc/init.d/ | |||
./etc/init.d/apache | |||
./etc/logrotate.d/ | |||
./etc/logrotate.d/apache | |||
./usr/ | |||
./usr/lib/ | |||
./usr/lib/apache/ | |||
./usr/lib/apache/suexec.disabled | |||
./usr/lib/cgi-bin/ | |||
./usr/sbin/ | |||
./usr/sbin/apache | |||
./usr/sbin/apachectl | |||
./usr/share/ | |||
./usr/share/bug/ | |||
./usr/share/bug/apache/ | |||
./usr/share/bug/apache/presubj | |||
./usr/share/doc/ | |||
./usr/share/doc/apache/ | |||
./usr/share/doc/apache/examples/ | |||
...</pre> | |||
L'archivio <code>control.tar.gz</code> contiene le informazioni riguardanti il | |||
pacchetto e le sue dipendenze e degli script che vengono lanciati prima | |||
e dopo l'installazione o la rimozione. | |||
Il file <code>control</code> contiene il nome del pacchetto, la sua versione, la | |||
sezione, la priorità, l'architettura per cui è stato compilato il | |||
pacchetto, le dipendenze, il maintainer del pacchetto e la sua | |||
descrizione. Diamogli un'occhiata. | |||
<pre> # cat control | |||
Package: apache | |||
Version: 1.3.33-6 | |||
Section: web | |||
Priority: optional | |||
Architecture: i386 | |||
Depends: libc6 (>= 2.3.2.ds1-21), libdb4.2, libexpat1 (>= 1.95.8), | |||
mime-support, apache-common (>= 1.3.33-6), apache-common (<< 1.3.34-0), | |||
perl (>= 5.8.4-2), logrotate (>= 3.5.4-1), dpkg (>> 1.9.0), libmagic1, | |||
debconf | |||
Suggests: apache-doc | |||
Conflicts: apache-modules, libapache-mod-perl (<= 1.17-1), jserv (<= | |||
1.1-3) | |||
Replaces: apache-modules | |||
Provides: httpd-cgi, httpd | |||
Installed-Size: 700 | |||
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org> | |||
Description: versatile, high-performance HTTP server | |||
The most popular server in the world, Apache features a modular | |||
design and supports dynamic selection of extension modules at runtime. | |||
Some of its strong points are its range of possible customization, | |||
dynamic adjustment of the number of server processes, and a whole | |||
range of available modules including many authentication mechanisms, | |||
server-parsed HTML, server-side includes, access control, CERN httpd | |||
metafiles emulation, proxy caching, etc. Apache also supports multiple | |||
virtual homing. | |||
. | |||
Separate Debian packages are available for PHP, mod_perl, Java | |||
Servlet support, Apache-SSL, and other common extensions. More | |||
information is available at http://www.apache.org/.</pre> | |||
Un pacchetto può avere priorità ''required'', ossia è necessario al funzionamento | |||
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 | |||
''extra'', che contiene pacchetti aventi caratteristiche particolari che li | |||
distinguono dagli optional. | |||
Oltre alle dipendenze vere e proprie (nel caso di sopra le libc, dpkg, | |||
debconf, ecc.), abbiamo anche altri pacchetti citati, ossia i ''suggested | |||
packages'', quindi quelli che possono funzionare bene assieme al pacchetto | |||
che si sta installando, i ''recommended'', che comunemente vengono | |||
installati assieme a quest'ultimo, i ''conflicts'' e i ''replaced packages'', | |||
rispettivamente i pacchetti con cui va in contrasto e che sostituisce, e | |||
infine i ''provided services'', i servizi che il pacchetto fornisce (in | |||
questo caso, demone http con supporto cgi). | |||
Guardiamo ora il file <code>conffiles</code>: | |||
<pre> # cat conffiles | |||
/etc/init.d/apache | |||
/etc/logrotate.d/apache</pre> | |||
Vengono elencati i file di configurazione che verranno creati. | |||
Gli scripts di cui parlavo prima sono <code>postinst</code>, <code>postrm</code>, <code>preinst</code> e <code>prerm</code>, | |||
che si occupano come già detto delle operazione pre e post | |||
installazione/rimozione. | |||
< | L'archivio <code>data.tar.gz</code> contiene tutti i file che verranno effettivamente | ||
disposti nel filesystem. | |||
Diamo per esempio un'occhiata alla directory <code>usr</code>: | |||
</ | |||
<pre> # ls | |||
apache_1.3.33-6_i386.deb control.tar.gz md5sums prerm | |||
conffiles data.tar.gz postinst templates | |||
config debian-binary postrm usr | |||
control etc preinst var | |||
# ls usr | |||
lib sbin share | |||
# ls usr/sbin | |||
apache apacheconfig apachectl</pre> | |||
== | == 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 . | |||
=== Pacchetti non nativi === | |||
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> | <pre> | ||
# apt-get source irssi-text | |||
</pre> | 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:Apt]] | ||
[[Categoria:Creare e modificare pacchetti]] | |||
[[Categoria:Gestione dei Pacchetti]] |
contributi