Creare un mirror dell'archivio Debian
- Se creare un mirror
- Cosa mettere nel mirror
- Da dove sincronizzarsi
- Come sincronizzarsi
- Mirroring parziale
- Quando sincronizzarsi
- Ulteriori impostazioni raccomandate
- Come aggiungere un mirror alla lista dei mirror
Se creare un mirror
I nuovi mirror sono sempre ben accetti ma ogni potenziale gestore di un nuovo mirror dovrebbe rispondere alle seguenti domande prima di avviare un proprio mirror:
- È necessario un mirror nella mia area georgrafica? Magari ce ne sono già altri nelle vicinanze.
- Dispongo delle risorse per ospitare un mirror? I mirror richiedono un considerevole spazio su disco e molta banda, si deve essere in grado di coprirne i costi.
- Un mirror è la scelta giusta? Capita che qualcuno avvii un mirror quando, in realtà, voglia solamente un proxy, per esempio apt-cacher-ng.
Cosa mettere nel mirror
La pagina principale dei mirror elenca gli archivi disponibili.
- Gli utenti cercheranno la directory debian/ per installare Debian via rete, per scaricare i CD (usando jigdo), e per aggiornare sistemi già installati.
- debian-cd/ è una directory che non è identica su tutti i mirror.
Su qualche mirror conterrà i template di jigdo per produrre le immagini
dei CD (insieme ai file contenuti in debian/), da altri conterrà delle
immagini già complete, su altri ancora li conterrà entrambi.
Controllare la pagina mirror delle immagini dei CD per ulteriori informazioni a riguardo. - debian-archive/ contiene il vero archivio: le versioni vecchie e obsolete di Debian. Di solito è interesante solo per un piccolo numero di utenti.
Visitare la pagina delle dimensioni dei mirror per informazioni più precise riguardo la grandezza dei mirror.
La directory debian-security/ contiene solamente gli aggiornamenti di sicurezza rilasciati dal Debian Security Team. Sembra interessante per tutti, ma siccome gli aggiornamenti sono sporadici, bisognerebbe sincronizzare il mirror molto spesso per essere aggiornati (oppure usare il push mirroring) ed è per questo che non è raccomandato. Debian si sforza al massimo per mantenere disponibile security.debian.org.
NB: l'archivio debian-non-US/ è deprecato a partire da Debian 3.1 (sarge) rilasciato nel giugno 2005.
Da dove sincronizzarsi
Molte persone pensano che ftp.debian.org sia la
locazione canonica dei pacchetti Debian e che sincronizzarsi da quel
sito sia la scelta migliore. Questo non è vero.
ftp.debian.org è solamente uno dei tanti server che
sono aggiornati da un server interno di Debian. Attualmente è geograficamente
posizionato su un singolo server ed esiste ancora principalmente per
compatibilità con il passato.
I mirror ufficiali sono degli ottimi punti da cui fare un mirror. Uno qualsiasi dei server nella lista completa dei mirror etichettato Type: Push-Primary oppure Type: Push-Secondary è una buona fonte per sincronizzarsi. Si raccomanda di utilizzarne uno rete-geograficamente vicino.
Non c'è nessuna differenza tra i vari mirror Push-Primary fintanto che il mirroring viene effettuato. D'altra parte, se molte persone usassero ftp.debian.org (e purtroppo lo fanno), questo necessariamente comporta uno spreco della banda che ci viene donata.
Chi gestisce un mirror negli Stati Uniti d'America dovrebbe fare il
mirror da ftp.us.debian.org (l'indirizzo del mirror ufficiale negli Stati
Uniti, che è un mirror di push primario). Ma, poiché quell'indirizzo
è anche un alias DNS in round-robin tra parecchie macchine, è solitamente
raccomandabile determinare quale delle macchine è la migliore e poi
fare il mirror da quella.
Il vantaggio di questa operazione è che previene il rischio di
errori durante la sincronizzazione a due fasi con rsync (a causa della
finestra temporale le due diverse fasi potrebbero svolgersi su due
macchine diverse con dati diversi, causando una race condition).
Lo svantaggio è che si concentra tutto su un solo sito le cui prestazioni
potrebbero variare, ma questo è comune all'intera rete dei
mirror.
Come sincronizzarsi
Il metodo raccomandato per sincronizzarsi è l'insieme di script chiamato ftpsync, disponibile in due formati:
- come tarball da http://ftp-master.debian.org/ftpsync.tar.gz
- dal repository git: git clone https://ftp-master.debian.org/git/archvsync.git
Il protocollo caldamente raccomandato per la sincronizzazione è rsync.
Si raccomanda di non usare wget o oltri strumenti basati su FTP. Sembrano funzionare bene, ma hanno parecchi problemi (non riconoscono i collegamenti fisici, complicano la realizzazione di mirror parziali, ecc.).
Impostazione di rsync
Si raccomanda l'utilizzo dell'insieme di script ftpsync per sincronizzarsi con l'archivio. Seguire le indicazioni nel file README per impostare il mirroring.
Se invece si vogliono usare dei propri script, queste sono le funzionalità minimali che devono essere supportate:
DEVE fare una sincronizzazione in 2 fasi
Il mirror dell'archivio deve esere fatto in 2 fasi. Con il primo rsync si devono ignorare i file di indice. Le giuste opzioni di esclusione per la prima esecuzione di rsync sono:
--exclude Packages* --exclude Sources* --exclude Release* --exclude InRelease --exclude i18n/* --exclude ls-lR*La prima fase non deve cancellare nessun file.
La seconda fase deve quindi trasferire i file esclusi in precedenza e cancellare i file che non sono più sul mirror.
Motivo: se il mirror dell'archivio fosse fatto con un solo passaggio, potrebbero verificarsi dei periodi temporali in cui i file di indice fanno riferimento a file ancora non presenti sul mirror.
NON DEVE ignorare i push mentre è in esecuzione (nel caso di push mirroring).
Se viene ricevuto un push mentre è in corso la sincronizzazione di un mirror, tale segnale NON DEVE essere ignorato. È necessario ripetere l'intero processo di sincronizzazione.
Motivo: la maggior parte degli script di mirror per Debian lasciano il mirror in uno stato inconsistente nel caso che venga ricevuto un secondo push mentre è ancora in corso la sincronizzazione precedente. È possibile che nel prossimo futuro cresca la frequenza dei push.
- Eseguire rsync con almeno queste opzioni: --recursive --times --links --hard-links --delete.
- Se si dispone di altro spazio su disco, usare anche l'opzione --delete-after per prevenire qualche problema temporaneo di aggiornamento.
- Dopo che rsync ha finito di sincronizzarsi, si aggiunga un file
timestamp nella sottodirectory
project/trace/del mirror chiamata come il vostro server. Questo significa eseguire date -u > .../debian/project/trace/vostro.server dopo che la sincronizzazione giornaliera è finita. - Si sconsiglia fortemente di escludere project/, doc/ e altre sotto-directory. Solitamente hanno una dimensione ridotta ma risultano molto utili agli utenti. Specialmente project/trace aiuta molto se ci sono dei problemi con il mirror.
Mirroring parziale
Considerando le già grandi dimensioni dell'archivio Debian, alcune persone preferisono fare il mirroring solo delle parti di cui hanno bisogno. Se si vuole escludere qualcosa si dovrebbero escludere le architetture.
Con ftpsync, questo si può fare modificando la variabile ARCH_EXCLUDE.
Si scoraggia fortemente l'esclusione delle directory project/, doc/ e delle altre sottodirectory. Di solito hanno una dimensione minore e sono comunque utili agli utenti. Specialmente project/trace aiuta molto in caso di problemi con il mirror.
È possibile usare altri script ma di solito non è necessario e inoltre non è raccomandato sui mirror ufficiali.
Quando sincronizzarsi
L'archivio principale viene aggiornato quattro volte al giorno. I mirror solitamente iniziano la sincronizzazione intorno alle 03:00, 09:00, 15:00 e 21:00 (tutti orari UTC) ma questi non sono mai orari definitivi e ogni mirror non si dovrebbe fissare su quelli.
Il mirror andrebbe aggiornato dopo qualche ora rispetto agli aggiornamenti dell'archivio principale. È opportuno controllare se il mirror utilizzato per la sincronizzazione crea un file timestamp nella sua directory project/trace/. Il file di timestamp sarà chiamato come il sito, e conterrà l'orario di completamento dell'ultimo aggiornamento. Aggiungere un paio di ore da quell'orario (per essere sicuri) e avviare la sincronizzazione a quell'ora.
La maniera più semplice per sincronizzarsi ogni giorno è usare cron. Consultare man crontab per dettagli.
Notare che se l'aggiornamento del proprio mirror viene attivato tramite il meccanismo di push, allora questa operazione non è necessaria.
Avvio del mirroring con push
Il push mirroring
è una forma di mirroring basata su rsync che
è stata sviluppata per minimizzare i tempi che impiegano i cambiamenti
dell'archivio a raggiungere i vari mirror. Il server di origine usa un
trigger SSH per avvisare i mirror destinatari di aggiornarsi. L'attività
di pushing
è solitamente limitata a un trigger sicuro che non
contiene dati variabili, quindi il resto del processo di mirroring è
la semplice pull
come un job di cron.
Il push mirroring è necessario per mantenere sincronizzati molti
server (come i server con DNS in round-robin ftp.us.debian.org)
ed è utilizzato per i nostri mirror di primo e secondo livello.
Questo metodo richiede uno sforzo maggiore di impostazione e non è
comunemente usato per i mirror privati
.
Per una descrizione più dettagliata del funzionamento, perché è più sicuro e come creare un push mirror, consultare la spiegazione completa.
Ulteriori impostazioni raccomandate
Se si crea un mirror Debian disponibile via HTTP per favore
aggiungete le seguenti impostazioni alla vostra configurazione di Apache
(supponendo naturalmente che stiate usando Apache) nel blocco
<Directory /percorso/al/vostro/mirror/debian>
dove /percorso/al/vostro/mirror/debian dovrebbe essere il percorso
alla directory che contiene la copia dell'archivio Debian:
Options +Indexes +SymlinksIfOwnerMatch IndexOptions NameWidth=* +SuppressDescription
Questo abilita l'indice delle directory e assicura che funzionino i link simbolici. I nomi dei file nell'indice delle directory non saranno troncati e le descrizioni (pressoché inesistenti) non saranno mostrate.
Con Apache 1.3.x, è necessario aggiungere la seguente opzione:
DirectoryIndex .
Non aggiungerla con Apache 2.x.
Come aggiungere un mirror alla lista dei mirror
Una volta che il mirror è impostato dovrebbe essere registrato in Debian così da essere incluso nella lista dei mirror. Gli invii delle registrazioni possono essere effettuati utilizzando il nostro semplice form web.
Problemi o domande possono essere inoltrati a mirrors@debian.org.
