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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(25 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
Su debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i
{{Old}}
sorgenti. Partiamo dai primi.
== Introduzione ==
In questo tutorial analizzeremo [http://apt-proxy.sourceforge.net/ apt-proxy].


==Pacchetti binari==
Apt-proxy è un comodo strumento per mantenere una cache dei pacchetti Debian già scaricati, riuscendo così a velocizzare il download da parte di altri client connessi alla stessa LAN ed a risparmiare un po' di banda, soprattutto nei casi in cui questa è a pagamento. =)


I pacchetti binari sono archivi contenenti eseguibili, file di
== Installazione ==
configurazione e documentazione che assieme formano un'applicazione.
Per installarlo è sufficiente dare il seguente comando:
Sotto debian, i binari hanno il suffisso .deb (c'� la possibilit� anche
<pre>
di usare rpm, ma questa � un'altra storia...).
# apt-get install apt-proxy
Vediamo cosa contiene un archivio .deb:
</pre>


<pre> # ls
{{Box|NOTA|In questo periodo sta avvenendo la transizione tra la versione 1 e la versione 2. In questo howto verranno analizzate entrambe le versioni, e verrà illustrato anche il passaggio dalla v1 alla v2.}}
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>


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


<pre> # ar -x apache_1.3.33-6_i386.deb
== Configurazione ==
# ls
apache_1.3.33-6_i386.deb  control.tar.gz  data.tar.gz  debian-binary
# cat debian-binary
2.0</pre>


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


<pre> # tar xvzf control.tar.gz           
La configurazione è molto semplice; tutti i parametri sono contenuti in un file:
./
<code>/etc/apt-proxy/apt-proxy.conf</code>.
./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 control.tar.gz contiene le informazioni riguardanti il
Ne riporto una versione semplificata, in cui le varie variabili di
pacchetto e le sue dipendenze e degli script che vengono lanciati prima
configurazione sono commentate:
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.


<pre> # cat control
<pre>
Package: apache
-------------------------------------------------------
Version: 1.3.33-6
# imposta la directory in cui salvare al cache
Section: web
APT_PROXY_CACHE=/var/cache/apt-proxy
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>


Un pacchetto pu� avere priorit� required, ossia � necessario al funzionamento
# Esempio per il repository ufficiale Debian
del sistema, important, quindi costituisce la base del sistema, standard,
# Debian main
cio� i pacchetti comuni presenti su sistemi non troppo minimali, optional,
#
i pacchetti totalmente opzionali, quindi X11, Emacs, e via dicendo, e infine
# Qui di seguito sono riportate le righe da inserire in un ipotetico
extra, che contiene pacchetti aventi caratteristiche particolari che li
sources.list
distinguono dagli optional.
# ovviamente sostituendo APTPROXY con l'indirizzo del server che funge da proxy.
Oltre alle dipendenze vere e proprie(nel caso di sopra le libc, dpkg,
#deb http://APTPROXY:9999/debian stable main contrib non-free
debconf, ecc.), abbiamo anche altri pacchetti citati, ossia i suggested
#deb http://APTPROXY:9999/debian woody main contrib non-free
packages, quindi quelli che possono funzionare bene assieme al pacchetto
#deb http://APTPROXY:9999/debian sarge main contrib non-free
che si sta installando, i recommended, che comunemente vengono
#deb http://APTPROXY:9999/debian sid main contrib non-free
installati assieme a quest'ultimo, i conflicts e i replaced packages,
#deb http://APTPROXY:9999/debian project/experimental/main/binary-$(ARCH)/
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:


<pre> # cat conffiles
# Qui aggiungiamo un backend, indicando la directory in cui verrà creata la
/etc/init.d/apache
cache
/etc/logrotate.d/apache</pre>
# La prima riga contiene la dichiarazione del backend, la seconda indica un
repository
# locale (quello della cache), dalla seconda alla penultima sono indicati i vari
mirror
# ufficiali, l'ultima indica un collegamento `alternativo` a http, cioè via
ftp...
# Da notare l'importanza delle backslash a fine riga (ultima riga esclusa)
add_backend /debian/
$APT_PROXY_CACHE/debian/
http://ftp2.it.debian.org/debian/  
# http://ftp.de.debian.org/debian/
# http://ftp.uk.debian.org/debian/
# +ftp.us.debian.org::debian/


Vengono elencati i file di configurazione che verrano creati.
Gli scripts di cui parlavo prima sono postinst, postrm, preinst e prerm,
che si occupano come gi detto delle operazione pre e post
installlazione/rimozione.


L'archivio data.tar.gz contiene tutti i file che verranno effettivamente
disposti nel filesystem.
Diamo per esempio un'occhiata alla directory usr:


<pre> # ls
############################## OTHER VARS ##################################
apache_1.3.33-6_i386.deb  control.tar.gz  md5sums  prerm
# Qui sono presenti le variabili di configurazione
conffiles                data.tar.gz    postinst  templates
#
config                    debian-binary  postrm    usr
# Dopo quanti giorni devono essere eliminati i pacchetti vecchi;
control                  etc            preinst  var
# Se impostata a 0, attiva l'eliminazione immediata dei vecchi pacchetti
# ls usr
(sconsigliata)
lib  sbin  share
CLEANUP_DAYS=14
# ls usr/sbin
apache  apacheconfig  apachectl</pre>


==Pacchetti sorgenti==
# Dopo quanti giorni verranno cancellati i pacchetti considerati vecchi,
raramente utilizzati
# Commentarla per disabilitare questa funzione.
CLEAN_SWEEP=60


I pacchetti sorgenti sono costituiti da due archivi e un file di testo:
# Il numero massimo di versioni di un pacchetto da conservare in memoria.
un file .dsc che descrive il pacchetto, un archivio .orig.tar.gz che
# Commentarla per disabilitare questa funzione.
contiene i sorgenti originali del software, e un .diff.gz contenente le
MAX_VERSIONS=2
patch applicate da debian al pacchetto.


<pre> # apt-get source irssi-text
# Frequenza massima, in minuti, degli aggiornamenti dei pacchetti
Reading Package Lists... Done
# Impostare un valore abbastanza alto per avere delle buone performance.
Building Dependency Tree... Done
BACKEND_FREQ=240
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>


Il file .dsc contiene la versione del software, l'architettura per cui �
# Quanti secondi devono passare prima che RSYNC vada in TimeOut
stato scritto, la dipendenze da soddisfare e gli hash dei due archivi
RSYNC_TIMEOUT=30
per verificarne l'integrit�.


<pre> # cat irssi-text_0.8.9-3.dsc
# Quanti secondi devono passare prima che RSYNC vada in TimeOut
-----BEGIN PGP SIGNED MESSAGE-----
WGET_TIMEOUT=30
Hash: SHA1


Format: 1.0
# Consente di impostare il path dell'eseguibile di wget e/o di appendere delle
Source: irssi-text
opzioni all'eseguibile
Version: 0.8.9-3
#WGET=wget
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-----
# Consente di impostare il path dell'eseguibile di rsync e/o di appendere delle
Version: GnuPG v1.2.5 (GNU/Linux)
opzioni all'eseguibile
#RSYNC=rsync


iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
# Per appoggiarsi ad un proxy per il download dei pacchetti:
/t+qP8OkRmh1e6mUH8wz+ic=
#export http_proxy=http://proxy:8080/
=TYfB
#export ftp_proxy=http://proxy:8080/
-----END PGP SIGNATURE-----</pre>
# in caso di necessità, è possibile gestire l'autenticazione:
#export http_proxy=http://user:pass@proxy:8080/
#export ftp_proxy=http://user:pass@proxy:8080/


I file di control gi� visti nei pacchetti binari sono anche qui,
-------------------------------------------------------
contenuti nella cartella debian dell'archivio.
</pre>


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


==Metapacchetti==
=== Versione 2 ===
In questo periodo è stata rilasciata la versione 2 di [http://apt-proxy.sourceforge.net/ apt-proxy ]. Le migliorie sono tante, e invito a fare una visitina al sito ufficiale.


Esiste un tipo particolare di pacchetto detto metapacchetto. Questo � un
Prima di passare all'analisi del nuovo file di configurazione, vorrei sottolineare che, ora, apt-proxy gira come servizio, con relativo script di
pacchetto che in realt� non contiene alcun eseguibile o sorgente. Serve
avvio/riavvio/stop: <code>/etc/init.d/apt-proxy</code>. Questo vuole dire che, ogni volta che viene modificato il file, conviene riavviare il server apt-proxy.
semplicemente per installare tutto l'insieme di pacchetti (a volte a
loro volta metapacchetti) che lo costituisce.
Un esempio � kde:


<pre> # ls -l
Analizziamo il file di configurazione di questa nuova versione. Come per il file di configurazione precedente, l'esempio riportato presenta dei commenti per i vari parametri.
total 6348
-rw-r--r--  1 root root 6486276 Jan 26 17:32 kdebase_2.2.2-14.9_i386.deb</pre>


Gi� le dimensioni lasciano presagire qualcosa: come pu� un pacchetto
<pre>
come kdebase occupare solo poco pi� di 6 Mb? Spacchettiamolo:
[DEFAULT]
;; Tutti i valori usati per il tempo sono espressi in secondi, è possibile
;; però indicarli anche in minuti(m), ore(h) o giorni(d), posponendo al numero
;; la lettera distintiva dell'unità di misura.


<pre> # ar -x  kdebase_2.2.2-14.9_i386.deb
;; È possibile impostare l'IP al quale risponde il server
# ls
;; utile per limitare l'accesso (ad esempio non renderlo accessibile
control.tar.gz  data.tar.gz  debian-binary  kdebase_2.2.2-14.9_i386.deb
;; dall'esterno)
# tar xvzf data.tar.gz
;address = 192.168.0.254
./
./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.
;; Porta a cui il server presta ascolto
Diamo un'occhiata al control:
port = 9999


<pre> station:/opt# tar xvzf control.tar.gz
;; Intervallo di refresh per i file di controllo (Packages/Sources/Contents)
./
;;
./shlibs
;; Età minima di un file prima di aggiornarlo
./postinst
min_refresh_delay = 1h
./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
;; Vita minima di un file prima che venga aggiornato (NOT YET IMPLEMENTED)
dipendenze. Senza i metapacchetti bisognerebbe installare uno per uno i
;min_age = 23h
pacchetti che costituiscono kde.


;; Rimuovi il commento da questa direttiva per fare in modo che
;; apt-proxy continui a scaricare anche se il client si disconnette.
;; Utile per connessioni always-on (ADSL...), probabilmente non è una
;; buona idea per connessioni dial-up (modem 56k).
;; complete_clientless_downloads = 1


;; Debugging settings.
;; for all debug information use this:
;; debug = all:9
debug = all:4 db:0


---- [[User:sync|sync]]
;; Debugging remote python console
[[Categoria:Apt-Dev]]
;; Do not enable in an untrusted environment
;telnet_port = 9998
;telnet_user = apt-proxy
;telnet_password = secret
 
;; Timeout mentre si ricevono dati da un server
timeout = 15
 
;; Cache directory di apt-proxy
cache_dir = /var/cache/apt-proxy
 
;; Usare FTP passivo? (default=on)
;passive_ftp = on
 
;; Usare un proxy HTTP?
;http_proxy = [username:password@]host:port
 
;; Limit download rate from backend servers (http and rsync only), in bytes/sec
;bandwidth_limit = 100000
 
;;--------------------------------------------------------------
;; Cache housekeeping
 
;; Time to perform periodic housekeeping:
;;  - delete files that have not been accessed in max_age
;;  - scan cache directories and update internal tables
cleanup_freq = 1d
 
;; Maximum age of files before deletion from the cache (seconds)
max_age = 120d
 
;; Maximum number of versions of a .deb to keep per distribution
max_versions = 3
 
;; Add HTTP backends dynamicaly if not already defined? (default=on)
;dynamic_backends = on
 
;;---------------------------------------------------------------
;;---------------------------------------------------------------
;; Backend servers
;;
;; Disporre ogni server nella sua sezione [section]
 
;[debian]
;Questo backend è stato commentato, per prevenire problemi durante
;l'importazione dei backend dalla versione 1
;
;;; The main Debian archive
;;; è possibile sovrascrivere la direttiva `timeout` di default:
;;timeout = 30
;
;;; Backend server, in ordine di preferenza
;backends =
;      http://ftp.us.debian.org/debian
;      http://ftp.de.debian.org/debian
;      http://ftp2.de.debian.org/debian
;      ftp://ftp.uk.debian.org/debian
;
;min_refresh_delay = 1d
;
;[security]
;Questo backend è stato commentato, per prevenire problemi durante
;l'importazione dei backend dalla versione 1
;
;;; Debian security archive
;backends =
;      http://security.debian.org/debian-security
;      http://ftp2.de.debian.org/debian-security
;
;min_refresh_delay = 1m
;
;[ubuntu]
;;; Ubuntu archive
;backends = http://archive.ubuntu.com/ubuntu
;min_refresh_delay = 15m
;
;[ubuntu-security]
;;; Ubuntu security updates
;backends = http://security.ubuntu.com/ubuntu
;min_refresh_delay = 1m
 
;[backports.org]
;; backports.org
;backends = http://backports.org/debian
min_refresh_delay = 1d
 
;;[blackdown]
;;; Blackdown Java
;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian
;min_refresh_delay = 1d
 
;[debian-people]
;; people.debian.org
;backends = http://people.debian.org
 
;[emdebian]
;; The Emdebian project
;backends = http://emdebian.sourceforge.net/emdebian
 
;[rsync]
;; Un esempio di utilizzo con un server rsync. Non è raccomandato
;; il suo utilizzo, a meno che non sia l'unico servizio disponibile:
;; rsync è molto efficiente solo nel trasferimento di dati non compressi
;; e carica molto il server.
;backends = rsync://ftp.uk.debian.org/debian
 
;[gnuab]
;; Debian GNU/Hurd-related tools
;backends = http://ftp.gnuab.org/debian
 
[debian]
backends =
        http://ftp.it.debian.org/debian
 
[security]
backends =
        http://security.debian.org
 
[blackdown]
backends =
        http://ftp.gwdg.de/pub/languages/java/linux/debian
 
[marillat]
backends =
        ftp://ftp.nerim.net/debian-marillat
 
[jedit]
backends =
        http://dl.sourceforge.net/sourceforge/jedit
 
[mythtv]
backends =
        http://dijkstra.csh.rit.edu:8088/~mdz/debian/
</pre>
 
Ok, ora abbiamo visto il file di configurazione, che dire: semplicissimo!
Prima di concludere la parte relativa alla configurazione del server, vorrei
mostrare alcuni comandi importanti, utili per la configurazione e l'utilizzo
di apt-proxy:
 
<code>'''apt-proxy-import'''</code> -- Comando utilissimo durante la prima installazione: consente di importare dei pacchetti Debian già scaricati nella cache di apt-proxy. Utilizzo:
<pre>
# apt-proxy-import /dir/contenente/i/pacchetti
</pre>
In generale, i pacchetti vengono automaticamente scaricati da APT nella directory <code>/var/cache/apt/archives</code>, questo è quindi il percorso da usare più comune.
 
<code>'''apt-proxy-v1tov2'''</code> -- Comodissima utility che converte il file di configurazione della versione 1 in uno compatibile con la versione 2. Utilizzo:
<pre>
# apt-proxy-v1tov2 [v1_conf [v2_sample_conf]] > v2_conf
</pre>
Di default utilizza <code>/etc/apt-proxy/apt-proxy.conf</code> per <code>v1_conf</code> e <code>/etc/apt-proxy/apt-proxy-v2.conf</code> per <code>v2_sample_conf</code>.
 
<code>'''/etc/init.d/apt-proxy [start|stop|restart|force-reload]'''</code> -- Script di gestione di apt-proxy:
*<code>start</code>: avvia il server;
*<code>stop</code>: lo arresta;
*<code>restart</code>: lo riavvia;
*<code>force-reload</code>: forza la rilettura del file di configurazione.
 
== Utilizzo ==
Niente di più semplice: basta modificare il proprio <code>/etc/apt/sources.list</code> mettendo come server <code>indirizzo_server:9999</code>
 
=== Esempio ===
Se prima, nel nostro <code>sources.list</code> avevamo una riga del tipo:
<pre>
deb http://ftp2.it.debian.org/debian/ testing main
non-free contrib
</pre>
non ci basterà che seguire questi passi, per configurare il server e i client:
 
1) inseriamo il backend nel server, se non è già presente:
<pre>[debian]
backends =
http://ftp2.it.debian.org/debian/
</pre>
 
2) modifichiamo il <code>sources.list</code> dei client:
<pre>
deb http://indirizzoserver:9999/debian/ testing main non-free contrib
</pre>
 
3) aggiorniamo apt-proxy
<pre>
# /etc/init.d/apt-proxy force-reload
</pre>
 
4) aggiorniamo con:
<pre>
# apt-get update
</pre>
 
Fine!
 
{{Autori
|Autore=[[User:MaXeR|MaXeR]]
}}

Versione attuale delle 11:08, 8 mag 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Introduzione

In questo tutorial analizzeremo apt-proxy.

Apt-proxy è un comodo strumento per mantenere una cache dei pacchetti Debian già scaricati, riuscendo così a velocizzare il download da parte di altri client connessi alla stessa LAN ed a risparmiare un po' di banda, soprattutto nei casi in cui questa è a pagamento. =)

Installazione

Per installarlo è sufficiente dare il seguente comando:

# apt-get install apt-proxy
Info.png NOTA
In questo periodo sta avvenendo la transizione tra la versione 1 e la versione 2. In questo howto verranno analizzate entrambe le versioni, e verrà illustrato anche il passaggio dalla v1 alla v2.


Configurazione

Versione 1

La configurazione è molto semplice; tutti i parametri sono contenuti in un file: /etc/apt-proxy/apt-proxy.conf.

Ne riporto una versione semplificata, in cui le varie variabili di configurazione sono commentate:

-------------------------------------------------------
# imposta la directory in cui salvare al cache
APT_PROXY_CACHE=/var/cache/apt-proxy

# Esempio per il repository ufficiale Debian
# Debian main
#
# Qui di seguito sono riportate le righe da inserire in un ipotetico
sources.list
# ovviamente sostituendo APTPROXY con l'indirizzo del server che funge da proxy.
#deb http://APTPROXY:9999/debian stable main contrib non-free
#deb http://APTPROXY:9999/debian woody main contrib non-free
#deb http://APTPROXY:9999/debian sarge main contrib non-free
#deb http://APTPROXY:9999/debian sid main contrib non-free
#deb http://APTPROXY:9999/debian project/experimental/main/binary-$(ARCH)/

# Qui aggiungiamo un backend, indicando la directory in cui verrà creata la
cache
# La prima riga contiene la dichiarazione del backend, la seconda indica un
repository 
# locale (quello della cache), dalla seconda alla penultima sono indicati i vari
mirror
# ufficiali, l'ultima indica un collegamento `alternativo` a http, cioè via
ftp...
# Da notare l'importanza delle backslash a fine riga (ultima riga esclusa)
add_backend /debian/ 
 $APT_PROXY_CACHE/debian/ 
 http://ftp2.it.debian.org/debian/ 
# http://ftp.de.debian.org/debian/ 
# http://ftp.uk.debian.org/debian/ 
# +ftp.us.debian.org::debian/



############################## OTHER VARS ##################################
# Qui sono presenti le variabili di configurazione
#
# Dopo quanti giorni devono essere eliminati i pacchetti vecchi;
# Se impostata a 0, attiva l'eliminazione immediata dei vecchi pacchetti
(sconsigliata)
CLEANUP_DAYS=14

# Dopo quanti giorni verranno cancellati i pacchetti considerati vecchi,
raramente utilizzati
# Commentarla per disabilitare questa funzione.
CLEAN_SWEEP=60

# Il numero massimo di versioni di un pacchetto da conservare in memoria.
# Commentarla per disabilitare questa funzione.
MAX_VERSIONS=2

# Frequenza massima, in minuti, degli aggiornamenti dei pacchetti
# Impostare un valore abbastanza alto per avere delle buone performance.
BACKEND_FREQ=240

# Quanti secondi devono passare prima che RSYNC vada in TimeOut
RSYNC_TIMEOUT=30

# Quanti secondi devono passare prima che RSYNC vada in TimeOut
WGET_TIMEOUT=30

# Consente di impostare il path dell'eseguibile di wget e/o di appendere delle
opzioni all'eseguibile
#WGET=wget

# Consente di impostare il path dell'eseguibile di rsync e/o di appendere delle
opzioni all'eseguibile
#RSYNC=rsync

# Per appoggiarsi ad un proxy per il download dei pacchetti:
#export http_proxy=http://proxy:8080/
#export ftp_proxy=http://proxy:8080/
# in caso di necessità, è possibile gestire l'autenticazione:
#export http_proxy=http://user:pass@proxy:8080/
#export ftp_proxy=http://user:pass@proxy:8080/

-------------------------------------------------------


Versione 2

In questo periodo è stata rilasciata la versione 2 di apt-proxy . Le migliorie sono tante, e invito a fare una visitina al sito ufficiale.

Prima di passare all'analisi del nuovo file di configurazione, vorrei sottolineare che, ora, apt-proxy gira come servizio, con relativo script di avvio/riavvio/stop: /etc/init.d/apt-proxy. Questo vuole dire che, ogni volta che viene modificato il file, conviene riavviare il server apt-proxy.

Analizziamo il file di configurazione di questa nuova versione. Come per il file di configurazione precedente, l'esempio riportato presenta dei commenti per i vari parametri.

[DEFAULT]
;; Tutti i valori usati per il tempo sono espressi in secondi, è possibile
;; però indicarli anche in minuti(m), ore(h) o giorni(d), posponendo al numero
;; la lettera distintiva dell'unità di misura.

;; È possibile impostare l'IP al quale risponde il server
;; utile per limitare l'accesso (ad esempio non renderlo accessibile
;; dall'esterno)
;address = 192.168.0.254

;; Porta a cui il server presta ascolto
port = 9999

;; Intervallo di refresh per i file di controllo (Packages/Sources/Contents)
;;
;; Età minima di un file prima di aggiornarlo
min_refresh_delay = 1h

;; Vita minima di un file prima che venga aggiornato (NOT YET IMPLEMENTED)
;min_age = 23h

;; Rimuovi il commento da questa direttiva per fare in modo che
;; apt-proxy continui a scaricare anche se il client si disconnette.
;; Utile per connessioni always-on (ADSL...), probabilmente non è una
;; buona idea per connessioni dial-up (modem 56k).
;; complete_clientless_downloads = 1

;; Debugging settings.
;; for all debug information use this:
;; debug = all:9
debug = all:4 db:0

;; Debugging remote python console
;; Do not enable in an untrusted environment
;telnet_port = 9998
;telnet_user = apt-proxy
;telnet_password = secret

;; Timeout mentre si ricevono dati da un server
timeout = 15

;; Cache directory di apt-proxy
cache_dir = /var/cache/apt-proxy

;; Usare FTP passivo? (default=on)
;passive_ftp = on

;; Usare un proxy HTTP?
;http_proxy = [username:password@]host:port

;; Limit download rate from backend servers (http and rsync only), in bytes/sec
;bandwidth_limit = 100000

;;--------------------------------------------------------------
;; Cache housekeeping

;; Time to perform periodic housekeeping:
;;  - delete files that have not been accessed in max_age
;;  - scan cache directories and update internal tables
cleanup_freq = 1d

;; Maximum age of files before deletion from the cache (seconds)
max_age = 120d

;; Maximum number of versions of a .deb to keep per distribution
max_versions = 3

;; Add HTTP backends dynamicaly if not already defined? (default=on)
;dynamic_backends = on

;;---------------------------------------------------------------
;;---------------------------------------------------------------
;; Backend servers
;;
;; Disporre ogni server nella sua sezione [section]

;[debian]
;Questo backend è stato commentato, per prevenire problemi durante
;l'importazione dei backend dalla versione 1
;
;;; The main Debian archive
;;; è possibile sovrascrivere la direttiva `timeout` di default:
;;timeout = 30
;
;;; Backend server, in ordine di preferenza
;backends =
;       http://ftp.us.debian.org/debian
;       http://ftp.de.debian.org/debian
;       http://ftp2.de.debian.org/debian
;       ftp://ftp.uk.debian.org/debian
;
;min_refresh_delay = 1d
;
;[security]
;Questo backend è stato commentato, per prevenire problemi durante
;l'importazione dei backend dalla versione 1
;
;;; Debian security archive
;backends =
;       http://security.debian.org/debian-security
;       http://ftp2.de.debian.org/debian-security
;
;min_refresh_delay = 1m
;
;[ubuntu]
;;; Ubuntu archive
;backends = http://archive.ubuntu.com/ubuntu
;min_refresh_delay = 15m
;
;[ubuntu-security]
;;; Ubuntu security updates
;backends = http://security.ubuntu.com/ubuntu
;min_refresh_delay = 1m

;[backports.org]
;; backports.org
;backends = http://backports.org/debian
min_refresh_delay = 1d

;;[blackdown]
;;; Blackdown Java
;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian
;min_refresh_delay = 1d

;[debian-people]
;; people.debian.org
;backends = http://people.debian.org

;[emdebian]
;; The Emdebian project
;backends = http://emdebian.sourceforge.net/emdebian

;[rsync]
;; Un esempio di utilizzo con un server rsync. Non è raccomandato
;; il suo utilizzo, a meno che non sia l'unico servizio disponibile:
;; rsync è molto efficiente solo nel trasferimento di dati non compressi
;; e carica molto il server.
;backends = rsync://ftp.uk.debian.org/debian

;[gnuab]
;; Debian GNU/Hurd-related tools
;backends = http://ftp.gnuab.org/debian

[debian]
backends =
        http://ftp.it.debian.org/debian

[security]
backends =
        http://security.debian.org

[blackdown]
backends =
        http://ftp.gwdg.de/pub/languages/java/linux/debian

[marillat]
backends =
        ftp://ftp.nerim.net/debian-marillat

[jedit]
backends =
        http://dl.sourceforge.net/sourceforge/jedit

[mythtv]
backends =
        http://dijkstra.csh.rit.edu:8088/~mdz/debian/

Ok, ora abbiamo visto il file di configurazione, che dire: semplicissimo! Prima di concludere la parte relativa alla configurazione del server, vorrei mostrare alcuni comandi importanti, utili per la configurazione e l'utilizzo di apt-proxy:

apt-proxy-import -- Comando utilissimo durante la prima installazione: consente di importare dei pacchetti Debian già scaricati nella cache di apt-proxy. Utilizzo:

 
# apt-proxy-import /dir/contenente/i/pacchetti

In generale, i pacchetti vengono automaticamente scaricati da APT nella directory /var/cache/apt/archives, questo è quindi il percorso da usare più comune.

apt-proxy-v1tov2 -- Comodissima utility che converte il file di configurazione della versione 1 in uno compatibile con la versione 2. Utilizzo:

# apt-proxy-v1tov2 [v1_conf [v2_sample_conf]] > v2_conf

Di default utilizza /etc/apt-proxy/apt-proxy.conf per v1_conf e /etc/apt-proxy/apt-proxy-v2.conf per v2_sample_conf.

/etc/init.d/apt-proxy [start|stop|restart|force-reload] -- Script di gestione di apt-proxy:

  • start: avvia il server;
  • stop: lo arresta;
  • restart: lo riavvia;
  • force-reload: forza la rilettura del file di configurazione.

Utilizzo

Niente di più semplice: basta modificare il proprio /etc/apt/sources.list mettendo come server indirizzo_server:9999

Esempio

Se prima, nel nostro sources.list avevamo una riga del tipo:

deb http://ftp2.it.debian.org/debian/ testing main
non-free contrib

non ci basterà che seguire questi passi, per configurare il server e i client:

1) inseriamo il backend nel server, se non è già presente:

[debian]
	backends =
		http://ftp2.it.debian.org/debian/

2) modifichiamo il sources.list dei client:

deb http://indirizzoserver:9999/debian/ testing main non-free contrib

3) aggiorniamo apt-proxy

# /etc/init.d/apt-proxy force-reload

4) aggiorniamo con:

# apt-get update

Fine!




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

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