|
|
Riga 38: |
Riga 38: |
|
| |
|
| ==I Pacchetti== | | ==I Pacchetti== |
| Nel primo paragrafo si è generalmente parlato di ''programmi'' per usare un termine piuttosto noto, ma sfortunatamente improprio in questo contesto. Il sistema APT mette a disposizione dei '''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.
| | Leggere la guida: [[Pacchetti binari e sorgenti]] |
| 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 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> # ar -x apache_1.3.33-6_i386.deb
| |
| # 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 sorgenti===
| |
| | |
| I pacchetti sorgenti sono costituiti da due archivi e un file di testo:
| |
| un file <code>.dsc</code> che descrive il pacchetto, un archivio <code>.orig.tar.gz</code> che
| |
| contiene i sorgenti originali del software, e un <code>.diff.gz</code> 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 e gli hash dei due archivi
| |
| per verificarne l'integrità.
| |
| | |
| <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 non 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 distro.
| |
| È 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=== | | ===Metapacchetti=== |