Pacchetti binari e sorgenti: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
 
(14 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
__TOC__


Su debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i  
==Introduzione==
sorgenti. Partiamo dai primi.
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 debian, i binari hanno il suffisso .deb (c'è la possibilità anche  
Sotto Debian, i binari hanno il suffisso .deb (c'è la possibilità anche  
di usare rpm, ma questa è un'altra storia...).
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 priorità, l'architettura per cui è stato compilato il  
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  
descizione. Diamogli un'occhiata.
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 può avere priorità required, ossia è necessario al funzionamento
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,
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 verrano creati.
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 già detto delle operazione pre e post  
che si occupano come già detto delle operazione pre e post  
installlazione/rimozione.
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 sorgenti==
== 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 sorgenti sono costituiti da due archivi e un file di testo:
=== Pacchetti non nativi ===
un file .dsc che descrive il pacchetto, un archivio .orig.tar.gz che
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/>
contiene i sorgenti originali del software, e un .diff.gz contenente le
patch applicate da debian al pacchetto.


<pre> # apt-get source irssi-text
Questi sorgenti sono costituiti da due archivi e un file di testo:
Reading Package Lists... Done
* un file <code>.dsc</code> che descrive il pacchetto
Building Dependency Tree... Done
* un archivio compresso <code>.orig.tar.gz</code> che contiene i sorgenti originali del software
Need to get 1168kB of source archives.
* un <code>.diff.gz</code> (o con nome simile) contenente le [[patch]] applicate da Debian al pacchetto.
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 .dsc 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
<pre>
-----BEGIN PGP SIGNED MESSAGE-----
# apt-get source irssi-text
Hash: SHA1
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>


Format: 1.0
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.
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-----
<pre>
Version: GnuPG v1.2.5 (GNU/Linux)
# cat irssi-text_0.8.9-3.dsc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
Format: 1.0
/t+qP8OkRmh1e6mUH8wz+ic=
Source: irssi-text
=TYfB
Version: 0.8.9-3
-----END PGP SIGNATURE-----</pre>
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


I file di control già visti nei pacchetti binari sono anche qui,
-----BEGIN PGP SIGNATURE-----
contenuti nella cartella debian dell'archivio.
Version: GnuPG v1.2.5 (GNU/Linux)


<pre> # ls irssi-text-0.8.9
iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd/t+qP8OkRmh1e6mUH8wz+ic==TYfB
AUTHORS      README.cygwin    config.sub      findsyntax.pl      ltmain.sh
-----END PGP SIGNATURE-----
COPYING      TODO            configure      install-sh          missing
</pre>
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 ./configure;make;make install; perchè il pacchetto non
verrà tracciato, non si potrà prenderne informazioni tramite dpkg-query
e per la rimozione bisognerà procedere manualmente, con il rischio di
'sporcare' la distro.
E' meglio usare strumenti quali dpkg-buildpackage e apt-build (per
cui rimando alle pagine di man) per avere i vantaggi della compilazione
senza 'sporcare' il sistema.


==Metapacchetti==
I file di control già visti nei pacchetti binari sono anche qui, contenuti nella cartella "debian" dell'archivio.


Esiste un tipo particolare di pacchetto detto metapacchetto. Questo è un
<pre>
pacchetto che in realtà non contiene alcun eseguibile o sorgente. Serve
# ls irssi-text-0.8.9
semplicemente per installare tutto l'insieme di pacchetti (a volte a
AUTHORS      README.cygwin    config.sub      findsyntax.pl      ltmain.sh
loro volta metapacchetti) che lo costituisce.
COPYING      TODO            configure      install-sh          missing
Un esempio è kde:
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


<pre> # ls -l
# ls irssi-text-0.8.9/debian
total 6348
botti.1    conffiles  copyright irssi-text.postinst prerm undocumented
-rw-r--r--  1 root root 6486276 Jan 26 17:32 kdebase_2.2.2-14.9_i386.deb</pre>
changelog control    dirs      menu                rules
 
</pre>
Già le dimensioni lasciano presagire qualcosa: come può un pacchetto
come kdebase occupare solo poco più di 6 Mb? Spacchettiamolo:
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.
<pre> # ar -x kdebase_2.2.2-14.9_i386.deb
# ls
control.tar.gz data.tar.gz debian-binary  kdebase_2.2.2-14.9_i386.deb
# tar xvzf data.tar.gz
./
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/kdebase/
./usr/share/doc/kdebase/README.pam
./usr/share/doc/kdebase/README.Debian
./usr/share/doc/kdebase/copyright
./usr/share/doc/kdebase/README.gz
./usr/share/doc/kdebase/changelog.Debian.gz
./usr/share/doc/kde/
./usr/share/doc/kde/HTML/
./usr/share/doc/kde/HTML/en/
./usr/share/doc/kde/HTML/en/kcontrol/
./usr/share/doc/kde/HTML/en/kdebugdialog/
./usr/share/doc/kde/HTML/en/kdesu/
./usr/share/doc/kde/HTML/en/kdm/
./usr/share/doc/kde/HTML/en/khelpcenter/
./usr/share/doc/kde/HTML/en/khelpcenter/faq/
./usr/share/doc/kde/HTML/en/khelpcenter/glossary/
./usr/share/doc/kde/HTML/en/khelpcenter/quickstart/
./usr/share/doc/kde/HTML/en/khelpcenter/userguide/
./usr/share/doc/kde/HTML/en/khelpcenter/visualdict/
...</pre>
 
L'archivio data.tar.gz contiene solo documentazione e delle librerie.
Diamo un'occhiata al control:
 
<pre> station:/opt# tar xvzf control.tar.gz
./
./shlibs
./postinst
./preinst
./prerm
./postrm
./conffiles
./md5sums
./control
station:/opt# cat control
Package: kdebase
Version: 4:2.2.2-14.9
Section: x11
Priority: optional
Architecture: i386
Depends: kdelibs3 (>= 4:2.2.2-1), libc6 (>= 2.2.4-4), libfam0,
libjpeg62, libkonq3 (>= 4:2.2.2-14.9), libpng2(>=1.0.12), libqt2 (>=
3:2.3.1-1), libstdc++2.10-glibc2.2 (>= 1:2.95.4-0.010810), xlibs (>>  
4.1.0), zlib1g (>= 1:1.1.4), debianutils (>= 1.6), xfree86-common,
libpam-modules, kdewallpapers, kdebase-libs (= 4:2.2.2-14.9)
Recommends: kdebase-doc, konqueror, konsole, kate | kedit | kword,
libarts | libarts-alsa, kdebase-audiolibs | kdebase3-audiolibs, kscreensaver
Suggests: menu (>=1.5-5), kdm | x-display-manager, kde-i18n,
libpam-cracklib, xscreensaver, xscreensaver-gl, xearth, xplanet, usbutils
Provides: x-session-manager
Installed-Size: 16280
Maintainer: Christopher L Cheney <ccheney@debian.org>
Description: KDE core applications
This is a suite of all kde core applications :
Includes:  kicker, kwin, kdesktop and others...</pre>
 
In realtà, vediamo che a costituire il cuore di kde sono le sue
dipendenze. Senza i metapacchetti bisognerebbe installare uno per uno i  
pacchetti che costituiscono kde.


== Metapacchetti ==
Leggere la guida: [[Gestione dei metapacchetti]]


{{Autori
|Autore=[[User:sync|sync]]
}}


---- [[User:sync|sync]]
[[Categoria:Apt]]
[[Categoria:Creare e modificare pacchetti]]
[[Categoria:Gestione dei Pacchetti]]

Versione attuale delle 16:35, 3 nov 2015

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Su Debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i sorgenti.
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 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:

	# 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

Abbiamo un file e due tarball. Procediamo estraendo questi ultimi.

	# 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

Il file debian-binary stabilisce la versione del formato deb, in questo caso la 2.0. Estraiamo gli archivi control.tar.gz e data.tar.gz.

	# 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/
	...

L'archivio control.tar.gz 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 control 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.

	# 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/.

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 conffiles:

	# cat conffiles
	/etc/init.d/apache
	/etc/logrotate.d/apache

Vengono elencati i file di configurazione che verranno creati. Gli scripts di cui parlavo prima sono postinst, postrm, preinst e prerm, 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 disposti nel filesystem. Diamo per esempio un'occhiata alla directory usr:

	# 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

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 Debian Maintainers o dei 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".

Questi sorgenti sono costituiti da due archivi e un file di testo:

  • un file .dsc che descrive il pacchetto
  • un archivio compresso .orig.tar.gz che contiene i sorgenti originali del software
  • un .diff.gz (o con nome simile) contenente le patch applicate da Debian al pacchetto.
# 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

Il file .dsc 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.

# 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-----

I file di control già visti nei pacchetti binari sono anche qui, contenuti nella cartella "debian" dell'archivio.

# 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

Nel caso si stia installando un pacchetto sorgente, è bene non seguire la procedura ./configure;make;make install; perché il pacchetto non verrà tracciato, non si potrà prenderne informazioni tramite dpkg-query e per la rimozione bisognerà procedere manualmente, con il rischio di 'sporcare' la distribuzione.
È meglio usare strumenti quali dpkg-buildpackage e apt-build (per cui rimando alle pagine di man) per avere i vantaggi della compilazione senza 'sporcare' il sistema.

Metapacchetti

Leggere la guida: Gestione dei metapacchetti




Guida scritta da: sync Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized