Debmirror: creiamo un mirror Debian: differenze tra le versioni

m
firma
m (firma)
 
m (firma)
Riga 1: Riga 1:
==INTRODUZIONE==
==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 =)


Molto spesso ci si trova nella necessit� di avere un mirror completo di una distribuzione Debian per uno o pi� computer che non sono connessi ad internet (o lo sono tramite una connessione troppo lenta).
==Installazione==
Debmirror ci viene in aiuto, dando la possibilit� di creare un mirror locale.
Per installarlo � sufficiente dare il seguente comando:
<pre>
# apt-get install apt-proxy
</pre>
 
{{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.}}




==INSTALLAZIONE==
==Configurazione==


Per installare debmirror sufficiente un
===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:


<pre>
<pre>
# apt-get install debmirror
-------------------------------------------------------
</pre>
# 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


Un consiglio, nel caso in cui venga creato un mirror per effettuare una installazione od un aggiornamento per un computer non connesso in rete: usate un disco fisso esterno (nel caso in cui il mirror debba essere trasportato su un altro computer) o di un DVD-RW (nel caso in cui il mirror sia parziale).
# 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


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


Il programma non richiede configurazione, in quanto tutti gli eventuali parametri devono essere passati tramite riga di comando.
# 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


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


La 'sintassi' del comando � la seguente:
# 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/


<pre>
-------------------------------------------------------
$ debmirror [OPZIONI] mirrordir
</pre>
</pre>


con i seguenti parametri:


; mirrordir : Questo parametro obbligatorio indica dove deve essere creato il mirror. Attenzione alla directory indicata in quanto, come opzione di default, vengono rimosse quelle directory e file che non appaiono nel repository di cui si effettua il mirroring
===Versione 2===


; --debug : Abilita il Debug
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.


; --progress -p : Visualizza una barra di avanzamento per monitorare lo stato del mirroring
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.


; --verbose -v : Visualizza una barra di avanzamento tra i download dei file
<pre>
[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.


; --source : Include i pacchetti dei sorgenti nel mirror [Default]
;; � 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


; --nosource: Non include i sorgenti dei programmi nel mirror
;; Porta a cui il server presta ascolto
port = 9999


; --md5sums -m: Utilizza l'md5 per verificare quali file nel mirror locale sono corretti ed aggiornati, � disabilitato di default in quanto lento e 'paranoico'
;; Intervallo di refresh per Packages/Sources/Contents
;;
;; Intervallo minimo prima di aggiornare un file
min_refresh_delay = 240


; --passive: Esegui il download in modalit� 'passiva'
;; Vita minima di un file prima che venga aggiornato (NOT YET IMPLEMENTED)
;min_age = 23h


; --host=remotehost -h: Indica qualche host utilizzare, si invita a controllare il mirror pi� vicino a questo indirizzo: http://www.debian.org/mirror/list , consentendo cos� una migior ripartizione del traffico sui mirror presenti. (Default: ftp.debian.org)
;; 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


; --user=remoteusername -u : Sperifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous]
;; Debugging settings.
;; for all debug information use this:
;; debug = all:9
debug = all db:3


;--method=ftp|hftp|http|rsync -e : Specifica quale metodo utilizzare per effettuare il download dei file. Sono supportati: ftp, http, hftp (ftp over http) rsync (per questo protocollo bisogna preporre ':' alla root directory dell'host remoto, ad esempio ":debian")
;; Debugging remote python console
;; Do not enable in an untrusted environment
;telnet_port = 9998
;telnet_user = apt-proxy
;telnet_password = secret


; --proxy=http://user:pass@url:port/:
;; Timeout mentre si ricevono dati da un server
Specifica i parametri per la connessione tramite proxy
timeout = 30


; --timeout=seconds -t: Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi]
;; Cache directory di apt-proxy
cache_dir = /var/cache/apt-proxy


; --root=directory -r directory: Specifica la root directory dell'host remoto. Normalmente � "/debian". In questa directory � contenuta la directory "dists". [Default: /debian]
;; Usa FTP passivo (default=on)
;passive_ftp = on


; --dist=foo[,bar,..] -d foo: Specifica la distribuzione (woody, sarge, sid). Possono essere indicate tutte e tre (-dist=woody,sarge,sid oppure -d woody -d sarge -d sid); i link (stable, unstable, testing) potrebbero non funzionare, quindi si invita ad utilizzare il nome della release). [Default: sid]
;; Usa un proxy apt
;http_proxy = host:port


; --section=foo[,bar,..] -s foo: Specifica la sezione (o le sezioni) di Debian di cui effettuare il mirroring. [Default: main,contrib,non-free,main/debian-installer]
;; Disable HTTP pipelining within apt-proxy (for test purposes)
;disable_pipelining=1


;--arch=foo[,bar,..] -a foo: Specifica la architettura (o le architetture) di cui effettuare il mirroring. (Default: i386)
;;--------------------------------------------------------------
;; Cache housekeeping


; --cleanup: Esegue una pulizia della directory in cui verr� creato il mirror. [Default: on]
;; 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


; --nocleanup: Non esegue la pulizia del mirror al termine della creazione dello stesso
;; Maximum age of files before deletion from the cache (seconds)
max_age = 14d


; --postcleanup: Esegue la pulizia del mirror locale solo quando il mirroring � terminato senza errori
;; Maximum number of versions of a .deb to keep per distribution
max_versions = 2


; --ignore=regex: Non elimina i file che rispondono l'espressione regolare [regexp] (pu� essere usato pi� volte)
;; Add HTTP backends dynamicaly if not already defined? (default=on)
;dynamic_backends = on


; --exclude=regex: Non esegue il download dei file che soddisfano l'espressione regolare (pu� essere usato pi� volte)
;;---------------------------------------------------------------
;;---------------------------------------------------------------
;; Backend servers
;;


;--exclude-deb-section=regex: Non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (pu� essere usato pi� volte)
;[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


; --limit-priority=regex: Limita il download ai file che soddisfano l'espressione regolare per quanto riguarda la priorit� del pacchetto (reguired, extra, optional, ...); (pu� essere usato pi� volte)
;[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


; --include=regex: Vengono inclusi i file che soddisfano l'espressione regolare [regexp] (pu� essere usato pi� volte)
;[apt-proxy]
;; Apt-proxy new versions
;backends = http://apt-proxy.sourceforge.net/apt-proxy


; --skippackages: Non scarica i file Packages e Sources (utile se questi file sono gi� aggiornati)
;[backports.org]
;; backports.org
;backends = http://backports.org/debian


; --getcontents: Scarica il file Contents.arch.gz
;[blackdown]
;;; Blackdown Java
;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian
;
;
;[debian-people]
;; people.debian.org
;backends = http://people.debian.org


;--ignore-missing-release: Non lancia un errore se il file Release non � presente nel mirror
;[emdebian]
;; The Emdebian project
;backends = http://emdebian.sourceforge.net/emdebian


;--ignore-release-gpg: Non lancia un errore se non � presente il file Release.gpg (consigliato)
;[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


;--dry-run: Esegue una simulazione, senza scaricare i file e pulire il mirror.
[debian]
backends =
        http://ftp.it.debian.org/debian


;--rsync-options=options: Specifica le opzioni da passare a rsync. [Default: -aIL --partial]
[non-US]
Utile � anche l'opzione "--bwlimit=x" che consente di impostare la larghezza di banda massima da usare per il download
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


;--ignore-small-errors: Ignora degli errori 'piccoli' o 'poco sognificanti' come il non aver trovato un file al 'primo colpo' e il dover procedere ad un altro tentativo... Consigliato
[security]
backends =
        http://security.debian.org


;--help: Visualizza un help.
[blackdown]
backends =
        http://ftp.gwdg.de/pub/languages/java/linux/debian


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


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


L'utilizzo � semplice: basta indicare solo quello necessario e lui provveder� a scaricare tutti i file necessari.
[mythtv]
Verr� creata una struttura uguale a quella di un mirror Debian ed eventualmente (se gi� presente) verranno controllati ed aggiornati i pacchetti vecchi.
backends =
        http://dijkstra.csh.rit.edu:8088/~mdz/debian/
</pre>


Ecco alcuni esempi di utilizzo:
Ok, ora abbiamo visto il file di configurazione...che dire: semplicissimo!
* Mirror completo di sarge:
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:


<pre>
<pre>
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg /path/to/dir
# apt-proxy-import
</pre>
</pre>


Comando utilissimo durante la prima installazione: consente di importare dei
pacchetti Debian gi scaricati nella cache di apt-proxy.
Utilizzo:
<pre>
# apt-proxy-import --import-dir=/dir/contentente/i/pacchetti
# apt-proxy-v1tov2
</pre>


(--ignore-small-errors --ignore-release-gpg le includo sempre, in quanto potrebbero dare dei problemi; eventualmente si pu� provare a lanciare il processo senza gli 'ignore' per controllare eventuali errori nel caso il processo non vada a buon fine.
Comodissima utility che converte il file di configurazione della versione 1 in
uno compatibile con la versione 2.
Utilizzo:


* Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti:
<pre>
<pre>
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --exclude="games" --nosources /path/to/dir
# apt-proxy-v1tov2 [v1_conf [v2_sample_conf]] > v2_conf
</pre>
</pre>


* Mirror di tutta Sarge (Sorgenti esclusi):
Di default utilizza /etc/apt-proxy/apt-proxy.conf per v1_conf e
/etc/apt-proxy/apt-proxy-v2.conf per v2_sample_conf.
 
<pre>
<pre>
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg  --nosources /path/to/dir
# /etc/init.d/apt-proxy
[start|stop|restart|force-reload]
</pre>
</pre>


Come potete vedere da questi 3 esempi, l'utilizzo � molto semplice ed immediato.
Script di gestione di apt-proxy:
start: avvia il server;
stop: lo arresta;
restart: lo raivvia;
force-reload: Forza la rilettura del file di configurazione.


==DEBMIRROR E CRON==
==Utilizzo==


Pu� essere utile, per manterene aggiornato il mirror, lanciare debmirror ad intervalli regolari (magari ogni giorno)...
Niente di pi� semplice: basta modificare il proprio
Cos�, aggiungengo una semplice riga a /etc/crontab � possibile programmare l'esecuzione di debmirror.
/etc/apt/sources.list
Ecco un esempio, che programma l'esecuzione del mirroring alle 00.00 di ogni giorno:
mettendo come server indirizzo_server:9999
 
 
===Esempio===
Se prima, nel nostro sources.list avevamo una riga del tipo:


<pre>
<pre>
0 0 * * * maxer /usr/bin/debmirror -d sarge --ignore-small-errors --ignore-release-gpg --arch=none --nosource /store3/deb/
deb http://ftp2.it.debian.org/debian/ testing main
non-free contrib
</pre>
</pre>


cos� il mirror verr� aggiornato di notte, evitando eventuali problemi di banda o di carico eccessivo del sistema!
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>


==CONSIDERAZIONI SULL'UTILIZZO==
2) modifichiamo il soruces.list dei client:
<pre>
deb http://indirizzoserver:9999/debian/ testing main non-free contrib
</pre>


Prima di utilizzare questo strumento per installare o aggiornare Debian su un computer sprovvisto di connessione ad internet e/o con una connessione lenta, vorrei porre in luce alcune questioni:
3) aggiorniamo apt-proxy
* L'utilizzo smodato di questo strumento genera un aumento di banda utilizzata (da parte dei mirror) considerevole (nell'ordine di Gbyte), uno spreco per un solo computer.
<pre>
* Spesso si scaricano pi� programmi di quelli necessari (anzi, spesso quelli non utilizzati sono pi� del doppio di quelli utilizzati); consiglio quindi il download della prima e della seconda ISO di Sarge, o il primo DVD, in quanto su questi � presente il 90% dei pacchetti pi� utilizzati in ambito 'domestico'.
# /etc/init.d/apt-proxy force-reload
* Apt-zip � spesso molto pi� comodo da utilizzare, ed anche pi� veloce... ([[Apt-zip: aggiornamenti senza una connessione veloce]]
</pre>


Non dimentichiamoci che le risorse dei mirror sono 'donate' al progetto Debian, ed un aumento esponenziale o troppo sostenuto delle risorse richieste potrebbe compromettere la disponibilit� dell'hoster...
4) aggiorniamo con
<pre>
# apt-get update
</pre>


Inoltre debmirror non designato propriamente per generare 'mirror di installazione', ma per creare mirror locali in LAN di medie dimensioni (anche se oramai pu venir tranquillamente sostituito da apt-cache o simili).


Dopo queste piccole considerazioni, happy Debian!
Fine!


Lettura Consigliata: [[Apt-Proxy: un proxy per i pacchetti Debian]]


---- [[User:MaXeR|MaXeR]]
---- [[User:MaXeR|MaXeR]]
1 487

contributi