Slik konfigurerer du lokalt HTTP Yum-lager på CentOS 7


Et programvarelager (repo kort sagt) er en sentral fillagringsplass for å holde og vedlikeholde programvarepakker, hvorfra brukere kan hente pakker og installere dem på datamaskinene sine.

Lagre er ofte lagret på servere på et nettverk, for eksempel et internett, som kan nås av flere brukere. Du kan imidlertid opprette og konfigurere et lokalt depot på datamaskinen din og få tilgang til det som en enkelt bruker eller tillate tilgang til andre maskiner på ditt LAN (Local Area Network).

En fordel med å sette opp et lokalt depot er at du ikke trenger en internettforbindelse for å installere programvarepakker.

YUM (Yellowdog Updater Modified) er et mye brukt pakkehåndteringsverktøy for RPM (RedHat Package Manager) basert på Linux-systemer, som gjør programvareinstallasjonen enkel på Red Hat/CentOS Linux.

I denne artikkelen vil vi forklare hvordan du setter opp et lokalt YUM-lager over HTTP (Nginx) webserver på CentOS 7 VPS og viser deg også hvordan du finner og installerer programvarepakker på klient CentOS 7-maskiner.

Yum HTTP Repository Server:	CentOS 7 [192.168.0.100]
Client Machine:		CentOS 7 [192.168.0.101]

Trinn 1: Installer Nginx Web Server

1. Start først med å installere Nginx HTTP-serveren fra EPEL-depotet ved å bruke YUM-pakkebehandlingen som følger.

# yum install epel-release
# yum install nginx 

2. Når du har installert Nginx-webserveren, kan du starte den for første gang og la den starte automatisk ved systemoppstart.

 
# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Deretter må du åpne port 80 og 443 for å tillate nettrafikk til Nginx-tjenesten, oppdatere systembrannmurreglene for å tillate innkommende pakker på HTTP og HTTPS ved å bruke kommandoene nedenfor.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Nå kan du bekrefte at Nginx-serveren din er oppe og kjører, ved å bruke følgende URL; hvis du ser standard Nginx-nettsiden, er alt bra.

http://SERVER_DOMAIN_NAME_OR_IP 

Trinn 2: Opprett et Yum Local Repository

5. I dette trinnet må du installere de nødvendige pakkene for å opprette, konfigurere og administrere ditt lokale depot.

# yum install createrepo  yum-utils

6. Deretter oppretter du de nødvendige katalogene (yum repositories) som vil lagre pakker og all relatert informasjon.

# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

7. Bruk deretter reposync-verktøyet til å synkronisere CentOS YUM-depoter til de lokale katalogene som vist.

# 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/
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     

I kommandoene ovenfor, alternativet:

  • -g – gjør det mulig å fjerne pakker som mislykkes i GPG-signaturkontroll etter nedlasting.
  • -l – aktiverer støtte for yum-plugin.
  • -d – gjør det mulig å slette lokale pakker som ikke lenger finnes i depotet.
  • -m – muliggjør nedlasting av comps.xml-filer.
  • --repoid – spesifiserer depot-ID.
  • --newest-only – be reposync bare trekke den nyeste versjonen av hver pakke i reposen.
  • --download-metadata – gjør det mulig å laste ned alle ikke-standard metadata.
  • --download_path – spesifiserer banen for å laste ned pakker.

8. Deretter kontrollerer du innholdet i de lokale katalogene dine for å sikre at alle pakkene har blitt synkronisert lokalt.

# 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. Opprett nå nye repodata for de lokale repositoriene ved å kjøre følgende kommandoer, der flagget -g brukes til å oppdatere pakkegruppeinformasjonen ved å bruke den spesifiserte .xml-filen .

# 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. For å aktivere visning av depoter og pakker i dem, via en nettleser, lag en Nginx-serverblokk som peker til roten til lagrene dine som vist.

# vim /etc/nginx/conf.d/repos.conf 

Legg til følgende konfigurasjon av filen 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
        }
}

Lagre filen og lukk den.

11. Start deretter Nginx-serveren på nytt og vis depotene fra en nettleser ved å bruke følgende URL.

http://repos.test.lab

Trinn 3: Opprett en Cron-jobb for å synkronisere og opprette depoter

12. Deretter legger du til en cron-jobb som automatisk vil synkronisere din lokale repos med den offisielle CentOS-reposen for å hente oppdateringene og sikkerhetsoppdateringene.

# vim /etc/cron.daily/update-localrepos

Legg til disse kommandoene i skriptet.

#!/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

Lagre skriptet og lukk det og angi de riktige tillatelsene på det.

# chmod 755 /etc/cron.daily/update-localrepos

Trinn 4: Konfigurer Local Yum Repository på klientmaskiner

13. Nå på CentOS-klientmaskinene dine, legg til din lokale repos i YUM-konfigurasjonen.

# vim /etc/yum.repos.d/local-repos.repo

Kopier og lim inn konfigurasjonen nedenfor i filen local-repos.repo (gjør endringer der det er nødvendig).

[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

Lagre filen og begynn å bruke dine lokale YUM-speil.

14. Kjør deretter følgende kommando for å se dine lokale reposer i listen over tilgjengelige YUM-reposer, på klientmaskinene.

#  yum repolist
OR
# yum repolist all

Det er alt! I denne artikkelen har vi forklart hvordan du setter opp et lokalt YUM-lager på CentOS 7. Vi håper at du fant denne veiledningen nyttig. Hvis du har spørsmål eller andre tanker å dele, bruk kommentarskjemaet nedenfor.