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, riporto una copia del mio file di configurazione, commentando 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), postponendo 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 Packages/Sources/Contents ;; ;; Intervallo minimo prima di aggiornare un file min_refresh_delay = 240 ;; 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 disconnettr ;; Utile per connessioni always-on (ADSL...) ;; complete_clientless_downloads = 1 ;; Debugging settings. ;; for all debug information use this: ;; debug = all:9 debug = all db:3 ;; 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 ;; Usa FTP passivo (default=on) ;passive_ftp = on ;; Usa un proxy apt ;http_proxy = host:port ;; Disable HTTP pipelining within apt-proxy (for test purposes) ;disable_pipelining=1 ;;-------------------------------------------------------------- ;; 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 ;; ;[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 ; ;;; Rsync server (NOT YET IMPLEMENTED) ;;;rsyncpackages = rsync://ftp.de.debian.org/debian ; ;;; 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 ; ; ;[non-US] ;; Debian non-US archive ;timeout non è stata sovrascritta, quindi verrà mantenuto il ;valore di default ;backends = ; http://ftp.uk.debian.org/debian-non-US ; http://ftp.de.debian.org/debian-non-US ; ftp://ftp.uk.debian.org/debian ;[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 ; ;[openoffice] ;; OpenOffice.org packages ;backends = ; http://ftp.freenet.de/pub/debian-openoffice ; http://ftp.sh.cvut.cz/MIRRORS/OpenOffice.deb ; http://borft.student.utwente.nl/debian ;[apt-proxy] ;; Apt-proxy new versions ;backends = http://apt-proxy.sourceforge.net/apt-proxy ;[backports.org] ;; backports.org ;backends = http://backports.org/debian ;[blackdown] ;;; Blackdown Java ;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian ; ; ;[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 [debian] backends = http://ftp.it.debian.org/debian [non-US] backends = http://debian.fastweb.it/debian-non-US http://ftp.debian.org/debian-non-US http://ftp.it.debian.org/debian-non-US http://ftp2.it.debian.org/debian-non-US [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 --import-dir=/dir/contentente/i/pacchetti # 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 soruces.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!