Questa guida mostrerà come configurare un server di repository locale basato su Ubuntu Bionic, ma può essere adattato a una versione precedente di Ubuntu o anche a qualsiasi distribuzione che utilizzi Aptitude come sistema di gestione dei pacchetti principale, come Debian o Mint. In genere potresti voler configurare un repository locale per risparmiare larghezza di banda Internet.
In questo tutorial imparerai:
- Come installare il software richiesto sul server
- Come selezionare quali repository eseguire il mirroring sul server
- Come eseguire il mirroring della selezione dei repository in locale sul server
- Come configurare il client Linux per utilizzare il server di repository locale
Come detto sopra, non stiamo considerando un mirror pubblico o country per questo tutorial, ma se vuoi implementarlo considera che:
- La larghezza di banda della tua rete diventa molto importante
- Devi registrare il repository nell'elenco dei mirror di Ubuntu
- Devi sincronizzare il mirror almeno quattro volte al giorno
- Poiché devi eseguire il mirroring di tutte le versioni precedenti, potresti aver bisogno di 2 TB o più di spazio su disco
Aggiornamento dell'elenco dei pacchetti dai repository locali.
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Ubuntu 18.04.2 (Bionic Beaver) LTS |
Software | Apache http 2.x, apt-mirror |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando, minimo 200 GB di spazio su disco per il repository |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Come creare un server di repository Ubuntu passo dopo passo
- Installazione del software richiesto sul server.
Come primo passo abbiamo bisogno di installare il server HTTP Apache che si trova sotto il pacchetto chiamato
apache2
, con il comando:$ sudo apt install apache2
Installazione di Apache HTTPQuindi assicurati che il servizio venga eseguito all'avvio:
$ sudo systemctl enable apache2
Se tutto va bene, ci sposteremo nella directory DocumentRoot predefinita (che è /var/www/html).
Lì possiamo quindi creare la sottodirectory/var/www/html/ubuntu
e assegnarlo all'apposito titolare, in questo casowww-data
(l'utente con cui viene eseguito Apache HTTP).$ sudo mkdir -p /var/www/html/ubuntu $ sudo chown www-data:www-data /var/www/html/ubuntu
È fortemente raccomandato che DocumentRoot o almeno la sottocartella ubuntu si trovi su un filesystem appartenente a un volume logico; in questo modo possiamo ingrandirlo online, senza tempi di inattività.
Al momento del mio test 171.5 GiB sono lo spazio minimo assoluto necessario per rispecchiare anche i pacchetti src; quindi per pianificare il futuro si consiglia di avere almeno 300 GiB di spazio su disco.Questa è principalmente una stima se si sceglie una versione di Ubuntu; se è necessario eseguire il mirroring di pacchetti per versioni diverse, i requisiti di spazio aumenteranno notevolmente.
- Lo strumento principale che ci consente di creare un repository locale è
apt-mirror
, per installarlo eseguire:$ sudo apt install apt-mirror
Nel caso in cui il pacchetto non venga trovato, assicurati di aggiornare prima l'elenco dei pacchetti con:
$ sudo apt update
- Selezione di quali repository eseguire il mirroring sul server.
Una volta installato apt-mirror possiamo fare una copia di backup del suo file di configurazione
/etc/apt/mirror.list
, dopodiché assicurati che la riga contenente l'opzioneset base_path
punta al percorso corretto per il nostro repository (di default è /var/spool/apt-mirror ).$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.org
Quindi ora puoi usare il tuo editor preferito (vi o nano per esempio) per cambiare l'opzione base_path nel file mirror.list in
file di configurazione mirror.list/var/www/html/ubuntu
; devi anche specificare che stai eseguendo il mirroring dei repository bionic distro (cambia di conseguenza se hai una versione Ubuntu diversa), sempre nel file di configurazione mirror.list.Nel caso in cui non hai molto spazio su disco puoi scegliere di non eseguire il mirroring dei pacchetti src; così commenterai le relative righe:
file di configurazione mirror.listQuindi copi uno script importante in
/var/www/html/ubuntu/var/
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
- Mirroring dei repository selezionati localmente sul server.
Ora è il momento di creare un mirror locale, tieni presente che un mirroring iniziale (da
archive.ubuntu.com
solo per questo tutorial) può richiedere molto tempo e rallentare la tua connessione, quindi ti suggerisco di iniziare questo lavoro di notte.
Per avviare il mirroring dei pacchetti di repository remoti sul server locale, esegui semplicemente il comando:$ sudo apt-mirror
Se necessario, puoi interrompere questo processo (con la classica combinazione CTRL+C) e riavviarlo in un secondo momento; riprenderà da dove era stato lasciato.
Alla fine arriveremo al punto in cui gli script clean.sh e postmirror.sh vengono eseguiti, è un segno che il processo di mirroring è stato completato.
Fine del processo di mirroring. - Configurazione del processo di sincronizzazione automatica utilizzando cron scheduler.
Dopo che la nostra prima sincronizzazione è stata completata, dobbiamo creare un cron job per assicurarci di avere un repository locale aggiornato automaticamente; ad esempio, vogliamo che questa attività venga eseguita ogni notte alle 2:00 e quindi:
$ sudo crontab -e
Quindi modifichiamo il crontab per aggiungere la seguente riga:
00 02 * * * /usr/bin/apt-mirror
E salva ed esci (usando vi, nano o qualunque editor sia impostato).
Configurazione del client Linux per utilizzare il server di repository locale
- Configurazione dell'elenco dei repository locali.
In qualsiasi client che utilizzerà il nostro repository locale, dobbiamo modificare il file di configurazione
/etc/apt/sources.list
specificando il nostro repository locale e disabilitando qualsiasi repository remoto.Nel nostro caso sono stati scaricati i seguenti repository:
Repository locali del serverNOTA
Si consiglia di commentare qualsiasi riga in
/etc/apt/sources.list
file che si riferisce a repository non rispecchiati nel nostro server, ad esempio, in questo caso, qualsiasi riga che inizia condeb-src
e contenentebionic-backports
sono stati commentati.In caso contrario, potresti ricevere l'errore
Release file has not been found
durante l'esecuzione del comando apt update sul client.Prima di tutto sostituiamo qualsiasi stringa archive.ubuntu.com con il nostro IP mirror locale, in questo caso 10.0.0.42. Ovviamente il tuo indirizzo IP locale potrebbe essere diverso.
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\.\42/g" /etc/apt/sources.list
Questo comando creerà il file di backup
/etc/apt/sources.list.bak0
e sostituisci qualsiasiarchive.ubuntu.com
stringa con10.0.0.42
.Un'ulteriore regolazione sta funzionando di nuovo in questo modo:
$ sudo sed -i.bak1 "s/ubuntu/ubuntu\/mirror\/archive\.ubuntu\.com\/ubuntu/g" \ /etc/apt/sources.list
Ciò è necessario poiché apt-mirror aggiunge il percorso
mirror/archive.ubuntu.com/ubuntu
al nostro cammino di base. Qui verrà creato un ulteriore file di backup/etc/apt/sources.list.bak1.
Ai fini di questo tutorial, stiamo solo eseguendo il mirroring di pacchetti o repository da archive.ubuntu.com; ovviamente puoi aggiungere altri repository non ufficiali nel file mirror.list nel server, ma poi devi rieseguire apt-mirror lì e modificare di conseguenza il file sources.list su qualsiasi client.
- Aggiorna l'indice del repository locale.
Ora devi assicurarti che la porta 80 non sia bloccata dal firewall del client e quindi puoi eseguire:$ sudo apt update
E sei pronto per partire.
Aggiornamento dell'elenco dei pacchetti dai repository locali.
Conclusione
Configurare un repository locale in Ubuntu non è difficile come potrebbe sembrare e può tornare utile a condizione che tu abbia una rete locale adeguata e risorse del disco.