Pacchetti binari e sorgenti: differenze tra le versioni

m
Nessun oggetto della modifica
 
(7 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  
Su Debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i sorgenti.<br/>
sorgenti. Partiamo dai primi.
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]
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
<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 <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==
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 è il pacchetto kdebase:
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 <code>data.tar.gz</code> contiene solo documentazione e delle librerie.
Diamo un'occhiata al <code>control</code>:
 
<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:Apt]]
[[Categoria:Creare e modificare pacchetti]]
[[Categoria:Creare e modificare pacchetti]]
[[Categoria:Gestione dei Pacchetti]]
[[Categoria:Gestione dei Pacchetti]]
3 581

contributi