Old:Apt-Proxy: un proxy per i pacchetti Debian: differenze tra le versioni

m
nessun oggetto della modifica
m (Modificati i titoli ed aggiunto un box)
mNessun oggetto della modifica
Riga 1: Riga 1:
Spesso abbiamo la necessit� di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che per� non � disponibile per il rilascio di Debian che abbiamo installato.
Su debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i
sorgenti. Partiamo dai primi.


Il caso pi� frequente � probabilmente quello di un' installazione di Testing (Etch) con la necessit� di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra.
==Pacchetti binari==


APT nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di releases diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell' intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze.
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:


In questo how-to mostrer� come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...).
<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>


Assicuriamoci di essere l' utente root e procediamo.
Abbiamo un file e due tarball. Procediamo estraendo questi ultimi.


Per prima cosa editiamo il file '''/etc/apt/sources.list''' ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo:
<pre> # ar -x apache_1.3.33-6_i386.deb
<pre>
# ls
### Debian Ufficiale -- Sarge
apache_1.3.33-6_i386.deb control.tar.gz  data.tar.gz  debian-binary
deb http://ftp.it.debian.org/debian/ testing main non-free contrib
# cat debian-binary
2.0</pre>


### Debian Ufficiale -- Sarge Sicurezza
Il file debian-binary stabilisce la versione del formato deb, in questo
deb http://security.debian.org/ testing/updates main contrib non-free
caso la 2.0. Estraiamo gli archivi control.tar.gz e data.tar.gz.


### Debian Ufficiale -- Sid
<pre> # tar xvzf control.tar.gz           
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib
./
./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>


###  Debian Ufficiale -- Experimental
L'archivio control.tar.gz contiene le informazioni riguardanti il
deb http://ftp.debian.org/debian/ ../project/experimental main
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
descizione. Diamogli un'occhiata.


### Multimedia -- Audio -- Rarewares
<pre> # cat control
deb http://www.rarewares.org/debian/packages/unstable ./
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>


### Multimedia -- Video -- Marillat
Un pacchetto pu� avere priorit� required, ossia � necessario al funzionamento
deb ftp://ftp.nerim.net/debian-marillat/ testing main
del sistema, important, quindi costituisce la base del sistema, standard,
deb ftp://ftp.nerim.net/debian-marillat/ unstable main
cio� i pacchetti comuni presenti su sistemi non troppo minimali, optional,
</pre>
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 conffiles:


A questo punto dobbiamo preparare due files normalmente non presenti sulla nostra debianbox: si tratta dei file '''preferences''' e '''apt.conf'''.
<pre> # cat conffiles
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
/etc/init.d/apache
/etc/logrotate.d/apache</pre>


Creiamo il file preferences:
Vengono elencati i file di configurazione che verrano creati.
<pre>
Gli scripts di cui parlavo prima sono postinst, postrm, preinst e prerm,
# touch /etc/apt/preferences
che si occupano come gi� detto delle operazione pre e post
</pre>
installlazione/rimozione.
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
<pre>
Package: *
Pin: release o=xmixahlx
Pin-Priority: 950


Package: *
L'archivio data.tar.gz contiene tutti i file che verranno effettivamente
Pin: release o=Unofficial Multimedia Packages
disposti nel filesystem.
Pin-Priority: 900
Diamo per esempio un'occhiata alla directory usr:


Package: *
<pre> # ls
Pin: release a=testing
apache_1.3.33-6_i386.deb  control.tar.gz  md5sums  prerm
Pin-Priority: 850
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>


Package: *
==Pacchetti sorgenti==
Pin: release a=unstable
Pin-Priority: 800


Package: *
I pacchetti sorgenti sono costituiti da due archivi e un file di testo:  
Pin: release a=experimental
un file .dsc che descrive il pacchetto, un archivio .orig.tar.gz che
Pin-Priority: 750
contiene i sorgenti originali del software, e un .diff.gz contenente le
</pre>
patch applicate da debian al pacchetto.


Il pinning pu� essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc...
<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>


Con '''"o="''' si specifica l' origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (sarge,sid, stable, ecc...).
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�.


Questo dato � reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "Release" che � contenuto in tutti i  repository ufficiali. Per archivi personali e/o non ufficiali, invece, non � sempre e necessariamente presente (purtroppo).
<pre> # cat irssi-text_0.8.9-3.dsc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Vediamo alcuni esempi:
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


<pre>
-----BEGIN PGP SIGNATURE-----
# cd /var/lib/apt/lists
Version: GnuPG v1.2.5 (GNU/Linux)
# cat www.rarewares.org_debian_packages_unstable_._Release
Archive: unstable
Origin: xmixahlx                    
Label: xmixahlx_rarewares-unstable
Architecture: i386


# cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release
iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
Archive: testing
/t+qP8OkRmh1e6mUH8wz+ic=
Component: main
=TYfB
Origin: Unofficial Multimedia Packages
-----END PGP SIGNATURE-----</pre>
Label: Unofficial Multimedia Packages
Architecture: i386
</pre>


Dove:
I file di control gi� visti nei pacchetti binari sono anche qui,  
* '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
contenuti nella cartella debian dell'archivio.
* '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free);
* '''Origin''' = specifica il proprietario del repository;
* '''Label''' = identifica il repository: potete inserire descrizioni, ecc...;
* '''Architecture''' = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).  


Possiamo vedere che nel file Release contenuto proprio il dato che stavamo cercando: Origin.
<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 ./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.


Ora creiamo il file apt-conf
==Metapacchetti==


<pre>
Esiste un tipo particolare di pacchetto detto metapacchetto. Questo � un
# touch /etc/apt/apt.conf
pacchetto che in realt� non contiene alcun eseguibile o sorgente. Serve
</pre>
semplicemente per installare tutto l'insieme di pacchetti (a volte a
loro volta metapacchetti) che lo costituisce.
Un esempio � kde:


editiamolo inserendo quanto segue:
<pre> # ls -l
total 6348
-rw-r--r--  1 root root 6486276 Jan 26 17:32 kdebase_2.2.2-14.9_i386.deb</pre>


<pre>
Gi� le dimensioni lasciano presagire qualcosa: come pu� un pacchetto
APT::Default-Release "testing";
come kdebase occupare solo poco pi� di 6 Mb? Spacchettiamolo:
APT::Cache-Limit 10000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";
</pre>


Facciamo l' update del database dei pacchetti:
<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>


<pre>
L'archivio data.tar.gz contiene solo documentazione e delle librerie.
# apt-get update
Diamo un'occhiata al control:
</pre>


D'ora in avanti avremo due possibilit� per installare un nuovo pacchetto: il metodo che usiamo di solito e cio�:
<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>


<pre>
In realt�, vediamo che a costituire il cuore di kde sono le sue
# apt-get install nome_pacchetto
dipendenze. Senza i metapacchetti bisognerebbe installare uno per uno i
</pre>
pacchetti che costituiscono kde.


che utilizzer pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando


<pre>
# apt-get install -t versione_di_debian nome_pacchetto
</pre>


che provveder� a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.
---- [[User:sync|sync]]
 
[[Categoria:Apt-Dev]]
Happy debian!
 
----
 
Autore: [[User:Keltik|Keltik]]<br>
Revisione: [[User:Nest|Nest]] <br>
Verificato: [[Utente:TheNoise|~ The Noise]]
1 760

contributi