Sådan opsættes lokalt HTTP Yum Repository på CentOS 7


Et softwarelager (“repo” i korte træk) er et centralt fillagringssted for at opbevare og vedligeholde softwarepakker, hvorfra brugere kan hente pakker og installere dem på deres computere.

Repositories opbevares ofte på servere på et netværk, for eksempel et internet, som flere brugere kan få adgang til. Du kan dog oprette og konfigurere et lokalt lager på din computer og få adgang til det som en enkelt bruger eller give adgang til andre maskiner på dit LAN (Local Area Network).

En fordel ved at oprette et lokalt lager er, at du ikke har brug for en internetforbindelse for at installere softwarepakker.

YUM (Yellowdog Updater Modified) er et meget anvendt pakkehåndteringsværktøj til RPM (RedHat Package Manager) baseret på Linux-systemer, hvilket gør installation af software let på Red Hat/CentOS Linux.

I denne artikel vil vi forklare, hvordan du opretter et lokalt YUM-lager over HTTP (Nginx) -webserver på CentOS 7 VPS, og viser dig også, hvordan du finder og installerer softwarepakker på CentOS 7-klientmaskiner.

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

Trin 1: Installer Nginx Web Server

1. Start først med at installere Nginx HTTP-serveren fra EPEL-lageret ved hjælp af YUM-pakkehåndteringen som følger.

# yum install epel-release
# yum install nginx 

2. Når du har installeret Nginx-webserveren, kan du starte den for første gang og aktivere den til at starte automatisk ved systemstart.

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

3. Dernæst skal du åbne port 80 og 443 for at tillade webtrafik til Nginx-tjenesten, opdatere system firewallreglerne for at tillade indgående pakker på HTTP og HTTPS ved hjælp af nedenstående kommandoer.

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

4. Nu kan du bekræfte, at din Nginx-server kører ved hjælp af følgende URL; Hvis du ser standard-Nginx-websiden, er alt godt.

http://SERVER_DOMAIN_NAME_OR_IP 

Trin 2: Opret et Yum Local Repository

5. I dette trin skal du installere de nødvendige pakker til at oprette, konfigurere og administrere dit lokale lager.

# yum install createrepo  yum-utils

6. Opret derefter de nødvendige mapper (yum-arkiver), der gemmer pakker og alle relaterede oplysninger.

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

7. Brug derefter reposync-værktøjet til at synkronisere CentOS YUM-repositories til de lokale mapper 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 ovenstående kommandoer er indstillingen:

  • -g - gør det muligt at fjerne pakker, der ikke kontrollerer GPG-signaturkontrol efter download.
  • -l - muliggør understøttelse af yum-plugin.
  • -d - muliggør sletning af lokale pakker, der ikke længere findes i lageret.
  • -m - muliggør download af comps.xml-filer.
  • --repoid - angiver lager-id'et.
  • - kun nyeste - fortæl reposync kun at trække den nyeste version af hver pakke i repos.
  • --download-metadata - muliggør download af alle ikke-standardmetadata.
  • --download_path - angiver stien til download af pakker.

8. Kontroller derefter indholdet af dine lokale kataloger for at sikre, at alle pakkerne er synkroniseret 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. Opret nu en ny repodata til de lokale arkiver ved at køre følgende kommandoer, hvor flag -g bruges til at opdatere pakkegruppeoplysningerne ved hjælp af den angivne .xml -fil .

# 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 at muliggøre visning af opbevaringssteder og pakker i dem, via en webbrowser, skal du oprette en Nginx-serverblok, der peger på roden til dine opbevaringssteder som vist.

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

Tilføj følgende konfiguration af 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
        }
}

Gem filen, og luk den.

11. Genstart derefter din Nginx-server, og se arkiverne fra en webbrowser ved hjælp af følgende URL.

http://repos.test.lab

Trin 3: Opret et Cron-job til at synkronisere og oprette arkiver

12. Tilføj derefter et cron-job, der automatisk synkroniserer dine lokale repos med de officielle CentOS repos for at hente opdateringerne og sikkerhedsopdateringerne.

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

Tilføj disse kommandoer i scriptet.

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

Gem scriptet, og luk det, og indstil de relevante tilladelser til det.

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

Trin 4: Konfigurer Local Yum Repository på klientmaskiner

13. Føj nu dine lokale repos til YUM-konfigurationen på dine CentOS-klientmaskiner.

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

Kopier og indsæt nedenstående konfiguration i filen local-repos.repo (foretag ændringer, hvis det er nødvendigt).

[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

Gem filen, og begynd at bruge dine lokale YUM-spejle.

14. Kør derefter følgende kommando for at se dine lokale repos på listen over tilgængelige YUM repos på klientmaskinerne.

#  yum repolist
OR
# yum repolist all

Det er alt! I denne artikel har vi forklaret, hvordan man opretter et lokalt YUM-lager på CentOS 7. Vi håber, at du fandt denne vejledning nyttig. Hvis du har spørgsmål eller andre tanker at dele, skal du bruge kommentarformularen nedenfor.