Come impostare il repository Yum HTTP locale su CentOS 7
Un repository software (“repo” in breve) è una posizione centrale di archiviazione dei file per conservare e mantenere i pacchetti software, da cui gli utenti possono recuperare i pacchetti e installarli sui propri computer.
I repository sono spesso archiviati su server su una rete, ad esempio Internet, a cui possono accedere più utenti. Tuttavia, puoi creare e configurare un repository locale sul tuo computer e accedervi come utente singolo o consentire l'accesso ad altri computer sulla tua LAN (Local Area Network).
Un vantaggio di configurare un repository locale è che non è necessaria una connessione Internet per installare i pacchetti software.
YUM (Yellowdog Updater Modified) è uno strumento di gestione dei pacchetti ampiamente utilizzato per RPM (RedHat Package Manager) basato su sistemi Linux, che semplifica l'installazione del software su Red Hat /CentOSLinux.
In questo articolo spiegheremo come configurare un repository YUM locale su server web HTTP (Nginx) su CentOS 7 VPS e ti mostrerà anche come trovare e installare pacchetti software sui computer client CentOS 7.
Il nostro ambiente di test
Yum HTTP Repository Server: CentOS 7 [192.168.0.100]
Client Machine: CentOS 7 [192.168.0.101]
Passaggio 1: installare il server Web Nginx
1. Inizia innanzitutto installando il server HTTP Nginx dal repository EPEL utilizzando il gestore pacchetti YUM come segue.
yum install epel-release
yum install nginx
2. Dopo aver installato il server web Nginx, puoi avviarlo per la prima volta e abilitarlo all'avvio automatico all'avvio del sistema.
systemctl start nginx
systemctl enable nginx
systemctl status nginx
3. Successivamente, devi aprire le porte 80 e 443 per consentire il traffico web al servizio Nginx, aggiornare le regole del firewall di sistema per consentire i pacchetti in entrata su HTTP e HTTPS utilizzando i comandi seguenti.
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
4. Ora puoi confermare che il tuo server Nginx è attivo e funzionante, utilizzando il seguente URL; se vedi la pagina web Nginx predefinita, va tutto bene.
http://SERVER_DOMAIN_NAME_OR_IP
Passaggio 2: crea un repository locale Yum
5. In questo passaggio, devi installare i pacchetti richiesti per creare, configurare e gestire il tuo repository locale.
yum install createrepo yum-utils
6. Successivamente, crea le directory necessarie (repository yum) che memorizzeranno i pacchetti e tutte le informazioni correlate.
mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
7. Quindi utilizza lo strumento reposync per sincronizzare i repository CentOS YUM nelle directory locali come mostrato.
reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
Uscita del campione
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.fibergrid.in
* epel: mirror.xeonbd.com
* extras: mirrors.fibergrid.in
* updates: mirrors.fibergrid.in
base/7/x86_64/group | 891 kB 00:00:02
No Presto metadata available for base
(1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm | 163 kB 00:00:02
(2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm | 267 kB 00:00:02
(3/9911): ElectricFence-2.2.2-39.el7.i686.rpm | 35 kB 00:00:00
(4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm | 35 kB 00:00:00
(5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm | 695 kB 00:00:04
(6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm | 110 kB 00:00:00
(7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm | 110 kB 00:00:00
(8/9911): GConf2-3.2.6-8.el7.i686.rpm | 1.0 MB 00:00:06
Nei comandi precedenti, l'opzione:
-g
– abilita la rimozione dei pacchetti che non superano il controllo della firma GPG dopo il download.-l
– abilita il supporto del plugin yum.-d
– abilita l'eliminazione dei pacchetti locali non più presenti nel repository.-m
– abilita il download dei file comps.xml.--repoid
– specifica l'ID del repository.--newest-only
– indica a reposync di estrarre solo la versione più recente di ciascun pacchetto nei repository.--download-metadata
– abilita il download di tutti i metadati non predefiniti.--download_path
– specifica il percorso per scaricare i pacchetti.
8. Successivamente, controlla il contenuto delle directory locali per assicurarti che tutti i pacchetti siano stati sincronizzati localmente.
ls -l /var/www/html/repos/base/
ls -l /var/www/html/repos/base/Packages/
ls -l /var/www/html/repos/centosplus/
ls -l /var/www/html/repos/centosplus/Packages/
ls -l /var/www/html/repos/extras/
ls -l /var/www/html/repos/extras/Packages/
ls -l /var/www/html/repos/updates/
ls -l /var/www/html/repos/updates/Packages/
9. Ora crea un nuovo repository per i repository locali eseguendo i seguenti comandi, dove il flag -g
viene utilizzato per aggiornare le informazioni sul gruppo di pacchetti utilizzando il specificato file .xml
.
createrepo -g comps.xml /var/www/html/repos/base/
createrepo -g comps.xml /var/www/html/repos/centosplus/
createrepo -g comps.xml /var/www/html/repos/extras/
createrepo -g comps.xml /var/www/html/repos/updates/
10. Per abilitare la visualizzazione dei repository e dei pacchetti in essi contenuti, tramite un browser web, crea un blocco server Nginx che punti alla radice dei tuoi repository come mostrato.
vim /etc/nginx/conf.d/repos.conf
Aggiungi la seguente configurazione nel file repos.conf.
server {
listen 80;
server_name repos.test.lab; #change test.lab to your real domain
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}
Salva il file e chiudilo.
11. Quindi riavvia il server Nginx e visualizza i repository da un browser Web utilizzando il seguente URL.
http://repos.test.lab
Passaggio 3: crea un processo Cron per sincronizzare e creare repository
12. Successivamente, aggiungi un processo cron che sincronizzerà automaticamente i tuoi repository locali con i repository CentOS ufficiali per acquisire gli aggiornamenti e le patch di sicurezza.
vim /etc/cron.daily/update-localrepos
Aggiungi questi comandi nello script.
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done
Salva lo script, chiudilo e imposta le autorizzazioni appropriate su di esso.
chmod 755 /etc/cron.daily/update-localrepos
Passaggio 4: impostare il repository Yum locale sui computer client
13. Ora sui tuoi computer client CentOS, aggiungi i tuoi repository locali alla configurazione YUM.
vim /etc/yum.repos.d/local-repos.repo
Copia e incolla la configurazione seguente nel file local-repos.repo (apporta modifiche dove necessario).
[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1
Salva il file e inizia a utilizzare i tuoi mirror YUM locali.
14. Successivamente, esegui il comando seguente per visualizzare i tuoi repository locali nell'elenco dei repository YUM disponibili, sui computer client.
yum repolist
OR
yum repolist all
È tutto! In questo articolo, abbiamo spiegato come configurare un repository YUM locale su CentOS 7. Ci auguriamo che tu abbia trovato utile questa guida. Se hai domande o altri pensieri da condividere, utilizza il modulo dei commenti qui sotto.