Pacchetti binari e sorgenti: differenze tra le versioni

m
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]].


La velocit� con cui scarichiamo gli aggiornamenti per la nostra distribuzione preferita, soprattutto se questi sono frequenti, � molto importante e ci pu� far risparmiare del tempo prezioso. Molti fattori influiscono nel determinare la qualit� della connessione tra il nostro computer e il server web che vogliamo raggiungere. Con apt-spy � possibile testare una lista di mirror dei repository debian per vedere quale risulta pi� veloce per la nostra connessione.
==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:


==Installazione==
<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>


Per installare apt-spy, � sufficiente un
Abbiamo un file e due tarball. Procediamo estraendo questi ultimi.
<pre>
 
# apt-get install apt-spy
<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>


==Configurazione==
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>:


Il parametro -a di apt-spy permette di restringere la ricerca solo su una determinata area geografica (es: nord america, europa, ...). Queste zone sono definite nel file '''/etc/apt-spy.conf''' e pu� tornare utile definirne una personalizzata per risparmiare tempo.
<pre> # cat conffiles
/etc/init.d/apache
/etc/logrotate.d/apache</pre>


La seguente lista ad esempio contiene solo le nazioni che hanno dato risultati migliori sul mio precedente test in cui ho usato l'Europa come area:
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.


<pre>
L'archivio <code>data.tar.gz</code> contiene tutti i file che verranno effettivamente
Custom-Area:
disposti nel filesystem.
AT
Diamo per esempio un'occhiata alla directory <code>usr</code>:
DE
DK
GB
GR
HR
IT
NO
PT
RO
</pre>


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


==Utilizzo==
== 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 .


Per prima cosa aggiornate la lista dei mirror:
=== Pacchetti non nativi ===
<pre>
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/>
# apt-spy update
</pre>


A questo punto siete pronti per lanciare apt-spy:
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-spy -d unstable -o new_sources.list -a Custom-Area -w top5mirrors.txt
# 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>


Vediamo i parametri usati:
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.


; -d: specifica la distribuzione da usare (stable, testing, unstable, ..)
<pre>
# cat irssi-text_0.8.9-3.dsc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


; -o: specifica il file in cui salvare il sources.list generato; di default verrebbe salvato in /etc/apt/sources.list per questo � consigliato specificare un nome diverso in modo che il nostro sources.list non venga sovrascritto!
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


; -a: specifica l'area da usare
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)


; -w: specifica in quale file scrivere la lista dei migliori server trovati; il numero predefinito di server di server che verranno listati � 5
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.


Altre opzioni interessanti:
<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


; -t: specifica il tempo aprossimativo per ogni test; di default � 15 secondi
# ls irssi-text-0.8.9/debian
 
botti.1    conffiles  copyright  irssi-text.postinst  prerm  undocumented
; -n: specifica il numero di server migliori da scrivere nel file specificato con -w
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.


; -s: lista di nazioni, separate da virgola, da testare. Al momento non pu� essere usato insieme all'opzione -a. ''Per conoscere i codici delle nazioni potete guardare il file /etc/apt-spy.conf''.
== Metapacchetti ==
Leggere la guida: [[Gestione dei metapacchetti]]


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


---- [[Utente:Virtual DarKness|Virtual DarKness]] 09:55, May 31, 2005 (EDT)
[[Categoria:Apt]]
[[Categoria:Apt]]
[[Categoria:Creare e modificare pacchetti]]
[[Categoria:Gestione dei Pacchetti]]
3 581

contributi