Uno dei motivi per cui potresti considerare di configurare un server di repository apt locale è ridurre al minimo la larghezza di banda richiesta se hai più istanze di Ubuntu da aggiornare. Prendi ad esempio una situazione in cui hai circa 20 server che devono essere tutti aggiornati due volte a settimana. Potresti risparmiare una grande quantità di larghezza di banda perché tutto ciò che devi fare è aggiornare tutti i tuoi sistemi su una LAN dal tuo server di repository locale.
In questa guida imparerai come configurare un server di repository apt locale su Ubuntu 20.04 LTS.
Prerequisiti
- Sistema Ubuntu 20.04 LTS
- Server Web Apache
- Minimo di 170 GB di spazio libero su disco sul file system /var/www/html
- Connessione Internet stabile
Passaggio 1) Crea un server Web Apache locale
Prima di tutto, accedi al tuo Ubuntu 20.04 e configura il server web Apache come mostrato.
$ sudo apt install -y apache2
Abilita il servizio Apache2 in modo che sia persistente durante il riavvio. Esegui il comando seguente
$ sudo systemctl enable apache2
La directory principale dei documenti predefinita di Apache si trova nel percorso /var/www/html. Successivamente creeremo una directory di repository in questo percorso che conterrà i pacchetti richiesti necessari.
Fase 2) Crea una directory di repository di pacchetti
Successivamente, creeremo una directory di repository locale chiamata ubuntu nel percorso /var/www/html.
$ sudo mkdir -p /var/www/html/ubuntu
Imposta le autorizzazioni richieste sulla directory creata sopra.
$ sudo chown www-data:www-data /var/www/html/ubuntu
Passaggio 3) Installa apt-mirror
Il prossimo passo è installare il pacchetto apt-mirror, dopo aver installato questo pacchetto otterremo il comando o lo strumento apt-mirror che scaricherà e sincronizzerà i pacchetti debian remoti con il repository locale sul nostro server. Quindi, per installarlo, esegui seguendo
$ sudo apt update $ sudo apt install -y apt-mirror
Passaggio 4) Configura i repository per il mirroring o la sincronizzazione
Una volta installato apt-mirror, la sua configurazione '/etc/apt/mirrror.list' viene creata automaticamente. Questo file contiene un elenco di repository che verranno scaricati o sincronizzati nella cartella locale del nostro server Ubuntu. Nel nostro caso la cartella locale è "/var/www/html/ubuntu/". Prima di apportare modifiche a questo file, eseguiamo prima il backup.
$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list-bak
Ora modifica il file usando l'editor vi e aggiorna base_path e repository come mostrato di seguito.
$ sudo vi /etc/apt/mirror.list ############# config ################### set base_path /var/www/html/ubuntu set nthreads 20 set _tilde 0 ############# end config ############## deb http://archive.ubuntu.com/ubuntu focal main restricted universe \ multiverse deb http://archive.ubuntu.com/ubuntu focal-security main restricted \ universe multiverse deb http://archive.ubuntu.com/ubuntu focal-updates main restricted \ universe multiverse clean http://archive.ubuntu.com/ubuntu
Salva ed esci dal file.
Nel caso tu abbia notato che ho usato i repository di pacchetti LTS di Ubuntu 20.04 e ho commentato i repository di pacchetti src perché non ho abbastanza spazio sul mio sistema. Se desideri scaricare o sincronizzare anche i pacchetti src, decommenta le righe che iniziano con "deb-src".
Passaggio 5) Avvia il mirroring dei repository remoti nella cartella locale
Prima di avviare il mirroring o la sincronizzazione, copia lo script postmirror.sh nella cartella /var/www/html/ubuntu/var usando il comando cp sottostante.
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var
Ora è il momento di iniziare a eseguire il mirroring dei pacchetti dai repository remoti alla cartella locale del nostro sistema. Esegui di seguito:
$ sudo apt-mirror
Il comando sopra può anche essere avviato in background usando il comando sotto nohup,
$ nohup sudo apt-mirror &
Per monitorare l'avanzamento del mirroring, utilizzare di seguito,
$ tail nohup.out
In Ubuntu 20.04 LTS, apt-mirror sincronizza la directory CNF e i suoi file, quindi dobbiamo scaricare e copiare manualmente la cartella e i suoi file. Quindi, per evitare di scaricare manualmente la directory CNF, crea uno script di shell con i contenuti seguenti,
$ vi cnf.sh #!/bin/bash for p in "${1:-focal}"{,-{security,updates}}\ /{main,restricted,universe,multiverse};do >&2 echo "${p}" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz" done
salva e chiudi lo script.
Esegui lo script per scaricare la directory CNF e i suoi file.
$ chmod +x cnf.sh $ bash cnf.sh
Questo script creerà una cartella con il nome "archive.ubuntu.com" nella directory di lavoro attuale. Copia questa cartella nella cartella mirror,
$ sudo cp -av archive.ubuntu.com /var/www/html/ubuntu/mirror/
Nota : Se non sincronizziamo la directory cnf, sui computer client otterremo i seguenti errori, quindi per risolvere questi errori dobbiamo creare ed eseguire lo script sopra.
E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal/restricted/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-updates/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-security/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80]
Pianificazione della sincronizzazione automatica dei repository
Configura un lavoro cron per aggiornare automaticamente i nostri repository apt locali. Si consiglia di impostare questo processo cron ogni giorno di notte.
Esegui "crontab -e" e aggiungi il seguente comando da eseguire ogni giorno all'1:00 di notte.
$ sudo crontab -e 00 01 * * * /usr/bin/apt-mirror
Salva e chiudi.
Nota:nel caso in cui Firewall sia in esecuzione su Ubuntu Server, consenti la porta 80 utilizzando il seguente comando
$ sudo ufw allow 80
Fase 6) Accesso al repository APT locale tramite browser web
Per accedere al nostro repository apt configurato localmente tramite browser web, digita il seguente URL:
http://
Passaggio 7) Configura il client Ubuntu 20.04 per utilizzare il server repository apt locale
Per testare e verificare se il nostro server di repository apt funziona correttamente o meno, ho un altro sistema Ubuntu 20.04 lts in cui aggiornerò il file /etc/apt/sources.list in modo che il comando apt punti ai repository locali anziché a quelli remoti.
Quindi, accedi al sistema, modifica quanto segue in sources.list
http://archive.ubuntu.com/ubuntu to http://169.144.104.219/ubuntu/mirror/archive.ubuntu.com/ubuntu
Qui "169.144.104.219" è l'indirizzo IP del mio server di repository apt, sostituisci questo indirizzo IP adatto al tuo ambiente.
Assicurati anche di commentare tutti gli altri repository che non sono rispecchiati sul nostro server di repository apt. Quindi, dopo aver apportato le modifiche al file sources.list, sembrerebbe di seguito:
Ora esegui il comando "apt update" per verificare che la macchina client stia ricevendo l'aggiornamento dal nostro server di repository apt locale,
$ sudo apt update
Perfetto, l'output sopra conferma che la macchina client è in grado di connettersi con successo al nostro repository per recuperare i pacchetti e gli aggiornamenti. Questo è tutto da questo articolo, spero che questa guida ti aiuti a configurare il server del repository apt locale sul sistema Ubuntu 20.04.
Leggi anche :14 utili esempi di comandi "ls" in Linux