Home > Comandi Console, Connessioni, Debian, Guide, Installazione, Linux, Pacchetti, Sistema, Ubuntu, Virtualizzazione > Velocizzare l’aggiornamento di più installazioni con apt-proxy

Velocizzare l’aggiornamento di più installazioni con apt-proxy

28 luglio 2009

Proxy

Al termine di ogni installazione di un sistema basato su Debian segue la lenta agonia degli aggiornamenti che porta via sempre parecchio tempo. Alla stessa maniera quando è necessario aggiornare altri computer connessi alla rete la connessione Internet viene impegnata pesantemente ed è necessario attendere la lunga procedura di scaricamento dei pacchetti.

Con apt-proxy tutto questo diventa un gioco, i pacchetti verranno scaricati soltanto una volta alla prima richiesta e conservati all’interno della macchina che fa da proxy; le future operazioni di aggiornamento da parte di altre macchine riceveranno gli aggiornamenti dal server posto sulla rete interna senza doverli scaricare nuovamente da Internet con evidenti tempi ridotti.

L’installazione di apt-proxy è semplicissima e andrà fatta sulla macchina che dovrà raccogliere i pacchetti dai repository e distribuirli alle altre macchine. Assicurarsi quindi di avere abbastanza spazio da tenere una copia di tutti gli aggiornamenti richiesti da tutte le altre macchine connesse.

Tramite Synaptic oppure apt-get installare il pacchetto apt-proxy con:

sudo apt-get install apt-proxy

Configurazione di apt-proxy sul server

La configurazione è abbastanza semplice e risiede in un unico file, è possibile modificarlo con:

gksudo gedit /etc/apt-proxy/apt-proxy-v2.conf

Al suo interno sono riportate le opzioni generali di apt-proxy e le definizioni dei backends. Un backend definisce un singolo repository che verrà pescato dal sito remoto.

[DEFAULT]
;address = 192.168.0.254
port = 9999
min_refresh_delay = 1h
;cache_dir = /var/cache/apt-proxy
cache_dir = /media/Downloads/apt-proxy
;bandwidth_limit = 100000
max_age = 120d
max_versions = 3

Le righe che iniziano per ; sono disabilitate e non verranno prese in considerazione nella configurazione, qui vengono riportate soltanto le opzioni principali.

L’opzione address consente di definire su quale indirizzo verrà messo in ascolto apt-proxy, se non viene specificato verrà utilizzato l’ip 0.0.0.0 che corrisponde a tutte le interfacce connesse al sistema. Risulta utile per limitare l’accesso ad una sola interfaccia di rete. La porta in ascolto viene definita nell’opzione port, è possibile utilizzare qualsiasi porta TCP libera.

L’opzione min_refresh_delay consente di limitare il controllo degli aggiornamenti, per evitare che vengano continuamente cercate nuove versioni dei pacchetti.

La directory dove verranno depositati i pacchetti scaricati da offrire alle altre macchine è indicata nell’opzione cache_dir. Per impostazione predefinita sta /var/cache/apt-proxy ma approfitteremo di questa guida per osservare come modificare questa posizione per archiviare i pacchetti in una partizione più spaziosa. E’ stato quindi indicato il percorso /media/Downloads/apt-proxy.

E’ possibile limitare la banda utilizzata nelle connessioni HTTP e RSYNC  esterne mediante l’opzione bandwidth_limit indicando il massimo numero di bytes per secondo.

Le ultime due opzioni presentate riguardano la pulizia della cache: max_age definisce il numero massimo di giorni per i quali il pacchetto verrà conservato prima di essere cancellato, nell’esempio sopra sono indicati 120 giorni; max_versions indica invece il numero massimo di versioni di uno stesso pacchetto da conservare.

Terminate le opzioni generali sul file di configurazione sono definiti i backends che interfacceranno apt-proxy con i repository reali. Nel file predefinito dovrebbero essere predefiniti quelli di Debian e di Ubuntu e in fondo altri repository di esempio normalmente disabilitati:

[debian]
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]
backends =
  http://security.debian.org/debian-security
  http://ftp2.de.debian.org/debian-security

[ubuntu]
backends =
  http://it.archive.ubuntu.com/ubuntu
  http://archive.ubuntu.com/ubuntu

[ubuntu-security]
backends = http://security.ubuntu.com/ubuntu

Sono qui indicati 4 backends: debian, security, ubuntu e ubuntu-security. Per il primo sono indicati 4 differenti server da cui pescare gli aggiornamenti, analizzati in sequenza se i precedenti risulteranno non raggiungibili. Viene anche ridefinita l’opzione min_refresh_delay definita in precedenza, per indicare che soltanto per questo backend varrà il nuovo valore indicato.

Il secondo backend è denominato security e riporta due indirizzi di repository di aggiornamenti di sicurezza per Debian.

Seguono i backend ubuntu e ubuntu-security che si riferiranno ai repository di Ubuntu. Per il primo di questi due nell’esempio sopra è stato aggiunto il mirror italiano http://it.archive.ubuntu.com/ubuntu in modo da velocizzare l’accesso rispetto l’archivio principale.

I nomi dei backends sono arbitrari e può essere indicato qualsiasi nome valido per un repository. Possono ovviamente essere aggiunti nuovi backends o rimossi quelli esistenti se non desiderati.

Terminate le modifiche al file di configurazione chiudere l’editor di testo e riavviare apt-proxy con:

sudo /etc/init.d/apt-proxy restart

Ricordiamo di aver modificato il parametro cache_dir per conservare i pacchetti archiviati nella directory /media/Downloads/apt-proxy. Ovviamente su /media/Downloads si troverà la nostra partizione già montata, adattare il percorso a quello desiderato. E’ quindi necessario creare quella directory con:

sudo mkdir /media/Downloads/apt-proxy
sudo chown -R aptproxy:nogroup /media/Downloads/apt-proxy
sudo chmod -R u=rwx,go= /media/Downloads/apt-proxy

Il primo dei tre comandi creerà la directory vuota, il secondo imposterà il proprietario aptproxy e il gruppo a nogroup e il terzo comando assegnerà tutti i permessi all’utente proprietario e toglierà tutti i permessi agli altri utenti in modo che soltanto l’utente aptproxy possa apportare modifiche a quella posizione.

Configurazione di apt-proxy sui client

Terminata la configurazione del server andranno configurati i client per consentir loro di scaricare i pacchetti da apt-proxy. La configurazione è di una semplicità unica: basterà definire nell’elenco dei repository /etc/apt/sources.list (e tutti gli eventuali files aggiuntivi che siano stati definiti su /etc/apt/sources.list.d/) come indirizzo del repository http://SERVERAPT:9999/backend.

Un esempio su tutti, se il file inizialmente conterrà:

deb http://it.archive.ubuntu.com/ubuntu/ jaunty main restricted
deb http://security.ubuntu.com/ubuntu jaunty-security main restricted

Abbiamo definito un backend di nome ubuntu che punta a it.archive.ubuntu.com/ubuntu e un altro backend di nome ubuntu-security che punta a security.ubuntu.com/ubuntu. Basterà rimpiazzare le righe con:

deb http://SERVERAPT:9999/ubuntu/ jaunty main restricted
deb http://SERVERAPT:9999/ubuntu-security jaunty-security main restricted

Al posti di SERVERAPT potrà essere indicato l’indirizzo IP del server con apt-proxy oppure sarà possibile lasciare il nome SERVERAPT e aggiungerlo al file hosts con:

gksudo gedit /etc/hosts
192.168.0.254     SERVERAPT

Modificati i repository a dovere bisognerà aggiornarli con:

sudo apt-get update

La prima operazione di aggiornamento non riporterà nessun miglioramento in quanto il server apt-proxy non ha ancora quegli aggiornamenti e dovrà scaricarli e passarli al client ma dalla seconda operazione di aggiornamento degli stessi pacchetti si avrà l’aumento di velocità offrendo i pacchetti all’interno della rete mediante la rete locale anziché doverli scaricare da Internet.

In caso di problemi il log delle attività di apt-proxy si potrà leggere tramite root su /var/log/apt-proxy.log.

  1. 03 ottobre 2010 alle 17:27

    che comando hai eseguito di preciso?

  2. Rikku
    03 ottobre 2010 alle 17:38

    ping -c 1 SERVERAPT && wget http….ecc

    mi correggo sorry,
    il ping funziona, si connette al server ma:

    “HTTP richiesta inviata, in attesa di risposta… 500 Unknown status code: 302
    2010-10-03 18:34:14 ERRORE 500: Unknown status code: 302.”

  3. 03 ottobre 2010 alle 18:25

    apri una richiesta di supporto su LQH o nel forum di ubuntu, in queste condizioni non ti si puo` aiutare.

    abbi cura di descrivere il problema e postare tutte le modifiche fatte e il file di configurazione di apt-proxy

  4. Rikku
    04 ottobre 2010 alle 8:26

    senz altro grazie mille ancora Muflone 🙂 e per la pazienza ^^”

Comment pages
I commenti sono chiusi.