Pacchetti binari e sorgenti: differenze tra le versioni

m
 
(4 versioni intermedie di un altro utente non mostrate)
Riga 3: Riga 3:


==Introduzione==
==Introduzione==
Su Debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i sorgenti.<br>/
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 [[metapacchetti|metapacchetto]].
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 147: 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 <code>.dsc</code> che descrive il pacchetto, un archivio <code>.orig.tar.gz</code> 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 <code>.diff.gz</code> 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]
<pre>
Get:2 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (tar)  
# apt-get source irssi-text
[1154kB]
Reading Package Lists... Done
Get:3 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (diff)  
Building Dependency Tree... Done
[13.9kB]
Need to get 1168kB of source archives.
Fetched 1168kB in 11s (103kB/s)                                              
Get:1 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (dsc) [691B]
dpkg-source: extracting irssi-text in irssi-text-0.8.9
Get:2 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (tar) [1154kB]
# ls
Get:3 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (diff) [13.9kB]
irssi-text-0.8.9            irssi-text_0.8.9-3.dsc
Fetched 1168kB in 11s (103kB/s)
irssi-text_0.8.9-3.diff.gz  irssi-text_0.8.9.orig.tar.gz</pre>
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.


Il file <code>.dsc</code> contiene la versione del software, l'architettura per cui è
<pre>
stato scritto, la dipendenze da soddisfare e gli hash dei due archivi
# cat irssi-text_0.8.9-3.dsc
per verificarne l'integrità.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


<pre> # cat irssi-text_0.8.9-3.dsc
Format: 1.0
-----BEGIN PGP SIGNED MESSAGE-----
Source: irssi-text
Hash: SHA1
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


Format: 1.0
-----BEGIN PGP SIGNATURE-----
Source: irssi-text
Version: GnuPG v1.2.5 (GNU/Linux)
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-----
iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd/t+qP8OkRmh1e6mUH8wz+ic==TYfB
Version: GnuPG v1.2.5 (GNU/Linux)
-----END PGP SIGNATURE-----
</pre>


iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
I file di control già visti nei pacchetti binari sono anche qui, contenuti nella cartella "debian" dell'archivio.
/t+qP8OkRmh1e6mUH8wz+ic=
=TYfB
-----END PGP SIGNATURE-----</pre>


I file di control già visti nei pacchetti binari sono anche qui,
<pre>
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


<pre> # ls irssi-text-0.8.9
# ls irssi-text-0.8.9/debian
AUTHORS      README.cygwin    config.sub      findsyntax.pl      ltmain.sh
botti.1    conffiles  copyright  irssi-text.postinst  prerm  undocumented  
COPYING      TODO            configure      install-sh          missing
changelog  control    dirs      menu                rules
ChangeLog    acconfig.h      configure.in    irssi-config.in    mkinstalldirs
</pre>
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  
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/>
la procedura <code>./configure;make;make install</code>; perchè il pacchetto non  
È 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.
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 ==
3 581

contributi