GNU/Linux >> Linux Esercitazione >  >> Linux

Crea un repository YUM/DNF basato su Apache su Red Hat Enterprise Linux 8

I repository software sono generalmente utilizzati su Internet e possono essere consultati da più utenti in tutto il mondo. Tuttavia, puoi creare il tuo repository locale sul tuo server locale e usarlo come utente singolo, oppure consentire l'accesso ad altre macchine sulla tua LAN usando un server web o FTP.

Il vantaggio della creazione di un repository locale è che non è necessaria una connessione Internet per installare pacchetti software o aggiornamenti. Un altro vantaggio è, ovviamente, la velocità di download. Poiché i pacchetti vengono scaricati tramite una rete locale, gli aggiornamenti vengono eseguiti rapidamente.

Yellowdog Updater, Modified (YUM) o Dandified YUM (DNF) sono gestori di pacchetti software che gestiscono distribuzioni Linux basate su RPM. Con YUM o DNF, puoi installare e aggiornare gruppi di computer senza dover aggiornare manualmente ogni RPM.

In questo articolo, spiegherò come configurare un repository YUM/DNF locale basato su Apache su Red Hat Enterprise Linux (RHEL) 8, utilizzando il DVD di installazione o il file ISO. Ti mostrerò anche come trovare e installare pacchetti software su macchine RHEL 8 client utilizzando il server web Apache. Tratteremo lo stesso processo per NGINX e FTP nei prossimi articoli.

[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]

Prerequisiti

Sarà necessario configurare due sistemi Red Hat Enterprise Linux 8:un server repo locale e una macchina client che utilizzerà il repository locale dal server locale. Il risultato sarà simile a questo:

  • Server di repository locale:RHEL 8 [10.0.0.10]

  • Macchina client locale:RHEL 8 [10.0.0.11]

  • DVD di installazione di RHEL 8

  • Server web Apache

Crea il tuo repository

La creazione del tuo repository prevede una serie di passaggi. Esaminiamoli.

Fase 1:monta il supporto Red Hat Enterprise Linux 8

Innanzitutto, monta il supporto locale (il DVD, la chiavetta USB, ecc.) che contiene Red Hat Enterprise Linux 8. Usa il DVD di installazione:

$ sudo mount /dev/cdrom /mnt 
mount: /mnt: WARNING: device write-protected, mounted read-only.

Oppure monta l'immagine ISO:

$ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt

Fase 2:crea un repository YUM locale dal supporto montato

Sposta i file repository esistenti che si trovano in /etc/yum.repos.d :

$ sudo mv /etc/yum.repos.d/*.repo /tmp/

Da questo punto, è meglio se continuiamo come utente root. Passa a superutente con su comando.

Quindi, crea una directory per il repository:

# mkdir /local_repo

Usa questa directory con Nginx o Apache per servire i file sulla LAN.

Crea il nuovo file di configurazione del repository locale, local-dvdrom.repo , sotto il /etc/yum.repos.d directory:

# touch /etc/yum.repos.d/local-dvdrom.repo
# chmod  u+rw,g+r,o+r  /etc/yum.repos.d/local-dvdrom.repo

Fase 3:copia il contenuto multimediale nella directory locale

Copia i file ISO in locale sotto /local_repo directory:

# cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)

Attendi fino a quando i file non vengono copiati, quindi verifica che i file siano stati copiati utilizzando:

# ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root    38 Apr  4  2019 AppStream
dr-xr-xr-x. 4 root root    38 Apr  4  2019 BaseOS
dr-xr-xr-x. 3 root root    18 Apr  4  2019 EFI
-r--r--r--. 1 root root  8266 Mar  1  2019 EULA
-r--r--r--. 1 root root  1455 Apr  4  2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar  1  2019 GPL
dr-xr-xr-x. 3 root root    76 Apr  4  2019 images
dr-xr-xr-x. 2 root root   256 Apr  4  2019 isolinux
-r--r--r--. 1 root root   103 Apr  4  2019 media.repo
-r--r--r--. 1 root root  1669 Mar  1  2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  5134 Mar  1  2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root  1796 Apr  4  2019 TRANS.TBL

Fase 4:configura il repository YUM/DNF locale

Modifica il file di configurazione del repository che abbiamo creato in precedenza:

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

Incolla questa configurazione al suo interno:

[LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Installa i pacchetti richiesti per creare, configurare e gestire il repository locale:

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                              94 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                 97 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658


# yum install createrepo  yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
 Package              Arch      Version            Repository              Size
================================================================================
Installing:
 createrepo_c         x86_64    0.11.0-1.el8       LocalRepo_AppStream     76 k
Installing dependencies:
 createrepo_c-libs    x86_64    0.11.0-1.el8       LocalRepo_AppStream    101 k
 drpm                 x86_64    0.3.0-14.el8       LocalRepo_AppStream     71 k

Transaction Summary
================================================================================
Install  3 Packages

Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : drpm-0.3.0-14.el8.x86_64                               1/3 
  Installing       : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Installing       : createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Verifying        : createrepo_c-0.11.0-1.el8.x86_64                       1/3 
  Verifying        : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Verifying        : drpm-0.3.0-14.el8.x86_64                               3/3 
Installed products updated.

Installed:
  createrepo_c-0.11.0-1.el8.x86_64     createrepo_c-libs-0.11.0-1.el8.x86_64    
  drpm-0.3.0-14.el8.x86_64            

Complete!

Infine, esegui createrepo comando:

# createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

Passaggio 5:testa e verifica il tuo repository locale

In questo passaggio, ripulisci i file del repository temporaneo e verifica che il repository locale sia abilitato:

# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                             120 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                103 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658

Verifica che il repository locale sia stato creato:

# ls /local_repo/repodata/
26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2
5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz
6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz
a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2
c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2
ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz
repomd.xml

Puoi vedere che il repository locale ha generato file, quindi a questo punto è tutto a posto.

Se leggi attentamente l'output del comando precedente, vedrai il messaggio di avviso, This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register . Se vuoi sopprimere o impedire questo messaggio durante l'esecuzione di dnf o yum comando quindi modifica il file /etc/yum/pluginconf.d/subscription-manager.conf :

# vim /etc/yum/pluginconf.d/subscription-manager.conf

e cambia il parametro enabled=1 su enabled=0 :

[main]
enabled=0

Configura il tuo server web Apache

Come accennato in precedenza, questo articolo copre la configurazione del proprio repository utilizzando il server Web Apache. Esaminiamo l'installazione e la configurazione di Apache per servire il tuo repository.

Installa Apache

Per installare httpd Pacchetto (Apache) utilizzando YUM:

# yum install httpd
Last metadata expiration check: 3:38:03 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=========================================================================================
 Package            Arch   Version                             Repository           Size
=========================================================================================
Installing:
 httpd              x86_64 2.4.37-10.module+el8+2764+7127e69e  LocalRepo_AppStream 1.4 M
Installing dependencies:
 apr                x86_64 1.6.3-9.el8                         LocalRepo_AppStream 125 k
 apr-util           x86_64 1.6.1-6.el8                         LocalRepo_AppStream 105 k
 httpd-filesystem   noarch 2.4.37-10.module+el8+2764+7127e69e  LocalRepo_AppStream  34 k
 httpd-tools        x86_64 2.4.37-10.module+el8+2764+7127e69e  LocalRepo_AppStream 101 k
 mod_http2          x86_64 1.11.3-1.module+el8+2443+605475b7   LocalRepo_AppStream 156 k
 mailcap            noarch 2.1.48-3.el8                        LocalRepo_BaseOS     39 k
 redhat-logos-httpd noarch 80.7-1.el8                          LocalRepo_BaseOS     25 k
Installing weak dependencies:
 apr-util-bdb       x86_64 1.6.1-6.el8                         LocalRepo_AppStream  25 k
 apr-util-openssl   x86_64 1.6.1-6.el8                         LocalRepo_AppStream  27 k
Enabling module streams:
 httpd                     2.4                                                          

Transaction Summary
=========================================================================================
Install  10 Packages

Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]: 

Configura Apache per l'avvio automatico all'avvio

Una volta installato Apache, avvia e abilita httpd servizio per avviarsi automaticamente all'avvio e verificarne lo stato utilizzando i seguenti comandi:

# systemctl start httpd

# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
 Main PID: 16880 (httpd)
    Tasks: 213 (limit: 2348)
   Memory: 7.6M
   CGroup: /system.slice/httpd.service
           ├─16880 /usr/sbin/httpd -DFOREGROUND
           ├─16881 /usr/sbin/httpd -DFOREGROUND
           ├─16883 /usr/sbin/httpd -DFOREGROUND
           ├─16884 /usr/sbin/httpd -DFOREGROUND
           └─16885 /usr/sbin/httpd -DFOREGROUND

Oct 06 10:15:47 server systemd[1]: Starting Apache HTTP Server...
Oct 06 10:15:47 httpd[16880]: AH00558: httpd: Could not reliably determine the>
Oct 06 10:15:47 server httpd[16880]: Server configured, listening on: port 80
Oct 06 10:15:47 server systemd[1]: Started The Apache HTTP Server.

Configura il firewall

Quindi, configura il firewall in modo che Apache possa essere raggiunto:

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

Verifica che Apache sia attivo e funzionante

Ora puoi verificare che il tuo server Apache sia attivo e funzionante andando su localhost URL sul tuo browser web. La pagina Web predefinita di Apache http://localhost/ dovrebbe essere visualizzato.

Configura Apache

Per configurare Apache, apri il file di configurazione:

# vim /etc/httpd/conf/httpd.conf

Una volta aperto, trova la DocumentRoot riga e cambiarlo in:

DocumentRoot "/local_repo"

Quindi cambia il /var/www/http sezione directory:

<Directory "/local_repo">
    Options All Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Test e pulizia

Ora, avvia nuovamente il servizio Apache e verifica il suo stato:

# systemctl start httpd

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disab>
   Active: active (running) since Sun 2019-10-06 14:06:34 UTC; 7s ago
     Docs: man:httpd.service(8)
 Main PID: 5402 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 11528)
   Memory: 39.3M
   CGroup: /system.slice/httpd.service
           ├─5402 /usr/sbin/httpd -DFOREGROUND
           ├─5403 /usr/sbin/httpd -DFOREGROUND
           ├─5404 /usr/sbin/httpd -DFOREGROUND
           ├─5405 /usr/sbin/httpd -DFOREGROUND
           └─5406 /usr/sbin/httpd -DFOREGROUND

Oct 06 14:06:34 server systemd[1]: Starting The Apache HTTP Server...
Oct 06 14:06:34 server httpd[5402]: AH00558: httpd: Could not reliably determine the ser>
Oct 06 14:06:34 server httpd[5402]: Server configured, listening on: port 80
Oct 06 14:06:34 server systemd[1]: Started The Apache HTTP Server.

È tutto a posto. Rimuovi la pagina di benvenuto in modo da poter servire i file repository:

# rm -rf /etc/httpd/conf.d/welcome.conf

Ora prova httpd e riavvia Apache:

# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
# systemctl restart httpd

Cambia i permessi e imposta SELinux

Continua la configurazione della sicurezza modificando i permessi su local_repo directory e la configurazione di SELinux. Per modificare i permessi:

# setfacl -R -m u:httpd:rwx /local_repo/

Quindi, controlla se SELinux sta applicando:

# getenforce
Enforcing

Se è Enforcing , digita:

# chcon -Rt httpd_sys_content_t /local_repo/

Se SELinux non è impostato su Enforcing, i file non verranno pubblicati dal repository.

# setenforce enforcing

E rendi permanente la modifica modificando il file /etc/sysconfig/selinux e impostando il seguente valore:

SELINUX=enforcing

Configura il client

Ora, per configurare il repository della macchina client di Red Hat Enterprise Linux 8.

Aggiungi il repository

Sulla macchina client, aggiungi i repository locali dal server alla configurazione YUM del client:

$ sudo vim /etc/yum.repos.d/local-rhel8.repo 

Quindi incolla la seguente configurazione (assicurati di modificare l'indirizzo IP del server in base alla tua configurazione):

[LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)

Testa il repository

Testare il LocalServerRepo installando un pacchetto. Ad esempio:

$ sudo yum install mc
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:01:42 ago on Sun 06 Oct 2019 02:14:03 PM UTC.
Dependencies resolved.
================================================================================
 Package    Arch           Version                Repository               Size
================================================================================
Installing:
 mc         x86_64         1:4.8.19-9.el8         LocalServerRepo         1.9 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 1.9 M
Installed size: 6.8 M
Is this ok [y/N]: y
Downloading Packages:
mc-4.8.19-9.el8.x86_64.rpm                       34 MB/s | 1.9 MB     00:00    
--------------------------------------------------------------------------------
Total                                            32 MB/s | 1.9 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : mc-1:4.8.19-9.el8.x86_64                               1/1 
  Running scriptlet: mc-1:4.8.19-9.el8.x86_64                               1/1 
  Verifying        : mc-1:4.8.19-9.el8.x86_64                               1/1 
Installed products updated.

Installed:
  mc-1:4.8.19-9.el8.x86_64                                                      

Complete!

È grandioso! Tutto funziona come previsto. Ora hai un repository YUM/DNF locale basato su Apache in Red Hat Enterprise Linux 8, utilizzando il DVD di installazione o il file ISO.


Linux
  1. Crea un repository YUM/DNF basato su FTP su Red Hat Enterprise Linux 8

  2. Crea un repository YUM/DNF basato su Nginx su Red Hat Enterprise Linux 8

  3. Ottimizzazione di un'immagine ISO di installazione di Red Hat Enterprise Linux

  4. Cosa fa "touch /.autorelabel" quando reimpostiamo la password di root in Red Hat Enterprise Linux?

  5. Come ottenere Red Hat Enterprise Linux gratuitamente?

Scarica Red Hat Linux

RHEL 6 – Guida all'installazione del server Red Hat Enterprise Linux passo dopo passo

Red Hat Enterprise Linux (RHEL) 8 passaggi di installazione con schermate

Come creare un repository Red Hat locale

Come installare Red Hat Enterprise Linux 8 (RHEL 8)

Come creare un repository Yum locale per i pacchetti MySQL Enterprise