Old:Apt-Proxy: un proxy per i pacchetti Debian
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
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 fineriga (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 (http://apt-proxy.sourceforge.net/). 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 = 30 ;; 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 = 60d ;; Maximum age of files before deletion from the cache (seconds) max_age = 14d ;; Maximum number of versions of a .deb to keep per distribution max_versions = 2 ;; 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 1onfiguration ; ;;; 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 1onfiguration ; ;;; 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/contentente/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!