GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un référentiel YUM/DNF basé sur Nginx sur Red Hat Enterprise Linux 8

Les référentiels de logiciels sont généralement utilisés sur Internet et peuvent être consultés par plusieurs utilisateurs dans le monde. Cependant, vous pouvez créer votre propre référentiel local sur votre serveur local et l'utiliser en tant qu'utilisateur unique, ou autoriser l'accès à d'autres machines sur votre réseau local à l'aide d'un serveur Web ou FTP.

L'avantage de créer un référentiel local est que vous n'avez pas besoin d'une connexion Internet pour installer des packages logiciels ou des mises à jour. Un autre avantage est, bien sûr, la vitesse de téléchargement. Étant donné que les packages sont téléchargés via un réseau local, les mises à jour s'exécutent rapidement.

Yellowdog Updater, Modified (YUM) ou Dandified YUM (DNF) sont des gestionnaires de packages logiciels qui gèrent les distributions Linux basées sur RPM. Avec YUM ou DNF, vous pouvez installer et mettre à jour des groupes d'ordinateurs sans avoir à mettre à jour manuellement chaque RPM.

Dans cet article, j'expliquerai comment configurer un référentiel YUM/DNF basé sur le Web local sur Red Hat Enterprise Linux (RHEL) 8, à l'aide du DVD d'installation ou du fichier ISO. Je vais également vous montrer comment rechercher et installer des packages logiciels sur des machines clientes RHEL 8 à l'aide du serveur HTTP Nginx et des serveurs Web Apache. Pour les instructions Apache, consultez Créer votre propre référentiel YUM/DNF basé sur Apache sur Red Hat Enterprise Linux 8 et pour les instructions FTP, consultez Créer votre propre référentiel YUM/DNF basé sur FTP sur Red Hat Enterprise Linux 8.

[Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.]

Prérequis

Vous devrez configurer deux systèmes Red Hat Enterprise Linux 8 :un serveur de référentiel local et une machine cliente qui utilisera le référentiel local à partir du serveur local. Le résultat ressemblera à ceci :

  • Serveur de référentiel local :RHEL 8 [10.0.0.10]

  • Ordinateur client local :RHEL 8 [10.0.0.11]

  • DVD d'installation RHEL 8

  • Serveur HTTP Nginx

Créer votre référentiel

La création de votre référentiel implique un certain nombre d'étapes. Je vais vous guider à travers eux.

Étape 1 :Monter le support Red Hat Enterprise Linux 8

Commencez par monter le support local (le DVD, la clé USB, etc.) qui contient Red Hat Enterprise Linux 8. Utilisez le DVD d'installation :

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

Ou montez l'image ISO :

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

Étape 2 :Créer un référentiel YUM local à partir du support monté

Déplacez les fichiers de dépôt existants situés dans /etc/yum.repos.d :

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

À partir de ce moment, il est préférable de continuer en tant qu'utilisateur racine. Passez en superutilisateur avec su commande.

Ensuite, créez un répertoire pour le dépôt :

# mkdir /local_repo

Utilisez ce répertoire avec Nginx ou Apache pour diffuser des fichiers sur le réseau local.

Créez le nouveau fichier de configuration du référentiel local, local-dvdrom.repo , sous le /etc/yum.repos.d répertoire :

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

Étape 3 :copier le contenu multimédia dans le répertoire local

Copiez les fichiers ISO localement sous le /local_repo répertoire :

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

Attendez que les fichiers soient copiés, puis vérifiez que les fichiers ont été copiés en utilisant :

# 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

Étape 4 :Configurer le référentiel YUM/DNF local

Modifiez le fichier de configuration du référentiel que vous avez créé précédemment :

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

Collez-y cette configuration :

[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

Installez les packages requis pour créer, configurer et gérer le dépôt local :

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

Enfin, exécutez le createrepo commande :

# 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

Étape 5 :Tester et vérifier votre référentiel local

Au cours de cette étape, vous nettoyez les fichiers du référentiel temporaire et vérifiez que le référentiel local est activé :

# 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

Vérifiez que le dépôt local a été créé :

# 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

Vous pouvez voir que le référentiel local a généré des fichiers, donc tout va bien à ce stade.

Si vous lisez attentivement la sortie de la commande ci-dessus, vous obtenez le message d'avertissement :This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register . Si vous souhaitez supprimer ou empêcher ce message lors de l'exécution du dnf ou yum commande puis éditez le fichier /etc/yum/pluginconf.d/subscription-manager.conf :

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

et modifiez le paramètre enabled=1 à enabled=0 :

[main]
enabled=0

Configurer votre serveur HTTP Nginx

Comme je l'ai déjà mentionné, cet article couvre la configuration de votre propre référentiel à l'aide du serveur HTTP Nginx. Je vais vous guider tout au long de l'installation et de la configuration de Nginx pour servir votre dépôt.

Installer Nginx

Pour installer le serveur HTTP Nginx à l'aide de YUM :

# yum install nginx
Last metadata expiration check: 0:19:18 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=======================================================================================
 Package          Arch   Version                             Repository           Size
=======================================================================================
Installing:
 nginx            x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream 569 k
Installing dependencies:
 gd               x86_64 2.2.5-6.el8                         LocalRepo_AppStream 144 k
 jbigkit-libs     x86_64 2.1-14.el8                          LocalRepo_AppStream  55 k
 libX11           x86_64 1.6.7-1.el8                         LocalRepo_AppStream 612 k
 libX11-common    noarch 1.6.7-1.el8                         LocalRepo_AppStream 157 k
 libXau           x86_64 1.0.8-13.el8                        LocalRepo_AppStream  36 k
 libXpm           x86_64 3.5.12-7.el8                        LocalRepo_AppStream  58 k
 libjpeg-turbo    x86_64 1.5.3-7.el8                         LocalRepo_AppStream 155 k
 libtiff          x86_64 4.0.9-13.el8                        LocalRepo_AppStream 188 k
 libwebp          x86_64 1.0.0-1.el8                         LocalRepo_AppStream 273 k
 libxcb           x86_64 1.13-5.el8                          LocalRepo_AppStream 230 k
 nginx-all-modules
                  noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  23 k
 nginx-filesystem noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  24 k
 nginx-mod-http-image-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  34 k
 nginx-mod-http-perl
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  45 k
 nginx-mod-http-xslt-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  33 k
 nginx-mod-mail   x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  64 k
 nginx-mod-stream x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  85 k
 dejavu-fonts-common
                  noarch 2.35-6.el8                          LocalRepo_BaseOS     74 k
 dejavu-sans-fonts
                  noarch 2.35-6.el8                          LocalRepo_BaseOS    1.5 M
 fontconfig       x86_64 2.13.1-3.el8                        LocalRepo_BaseOS    275 k
 fontpackages-filesystem
                  noarch 1.44-22.el8                         LocalRepo_BaseOS     16 k
 libxslt          x86_64 1.1.32-3.el8                        LocalRepo_BaseOS    249 k
Enabling module streams:
 nginx                   1.14                                                         

Transaction Summary
=======================================================================================
Install  23 Packages

Total size: 4.8 M
Installed size: 15 M
Is this ok [y/N]: y

Configurer Nginx pour démarrer automatiquement au démarrage

Une fois Nginx installé, démarrez et activez le service pour qu'il démarre automatiquement au démarrage et vérifiez son état à l'aide des commandes suivantes :

# systemctl start nginx

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

# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
 Main PID: 3596 (nginx)
    Tasks: 3 (limit: 11528)
   Memory: 7.6M
   CGroup: /system.slice/nginx.service
           ├─3596 nginx: master process /usr/sbin/nginx
           ├─3597 nginx: worker process
           └─3598 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[3593]: nginx: the configuration file /etc/nginx/nginx.con>
Oct 06 10:15:47 server nginx[3593]: nginx: configuration file /etc/nginx/nginx.conf te>
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurer le pare-feu

Ensuite, vous devez configurer le pare-feu pour que Nginx soit accessible :

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

Vérifier que Nginx est opérationnel

Vous pouvez maintenant vérifier que votre serveur Nginx est opérationnel en accédant au localhost URL sur votre navigateur Web. La page Web Nginx par défaut http://localhost/ doit être affiché.

Configurer Nginx

Pour configurer Nginx, ouvrez le fichier de configuration :

# vim /etc/nginx/nginx.conf

Maintenant, trouvez le server section du fichier et modifiez-la pour qu'elle ressemble à ceci :

    server {
	listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /local_repo/;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                allow all;
                sendfile on;
                sendfile_max_chunk 1m;
                autoindex on;
                autoindex_exact_size off;
                autoindex_format html;
                autoindex_localtime on;
        }
	  error_page 404 /404.html;
            location = /40x.html {
        }

	  error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Tester et nettoyer

Maintenant, redémarrez le service Nginx et testez son état :

# systemctl restart nginx

# systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 3 hours 51 min ago
Process: 24032 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 24033 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 24034 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 24035 (nginx)
   Status: "Started, listening on: port 80"
    Tasks: 3 (limit: 2438)
   Memory: 3.9M
   CGroup: /system.slice/nginx.service
           ├─24035 nginx: master process /usr/sbin/nginx
           ├─24036 nginx: worker process
           └─24037 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[24033]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si>
Oct 06 10:15:47 server nginx[24033]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 06 10:15:47 server nginx[24033]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 06 10:15:47 server nginx[24033]: nginx[24034]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Tout va bien.

Modifier les autorisations et définir SELinux

Continuez la configuration de la sécurité en changeant les permissions sur le local_repo répertoire et configuration de SELinux. Pour modifier les autorisations :

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

Ensuite, vérifiez si SELinux applique :

# getenforce
Enforcing

Si c'est Enforcing , saisissez :

# chcon -Rt httpd_sys_content_t /local_repo/

Si SELinux n'est pas défini sur Enforcement, les fichiers ne seront pas servis à partir du dépôt.

# setenforce enforcing

Et rendez le changement permanent en éditant le fichier /etc/sysconfig/selinux et définissez la valeur suivante :

SELINUX=enforcing

Configurer le client

Maintenant, pour configurer le référentiel de la machine client Red Hat Enterprise Linux 8.

Ajouter le dépôt

Sur la machine cliente, ajoutez les dépôts locaux du serveur à la configuration YUM du client :

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

Collez ensuite la configuration suivante (assurez-vous de modifier l'adresse IP du serveur en fonction de votre configuration) :

[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/)

Tester le dépôt

Testez le LocalServerRepo en installant un package. Par exemple :

$ yum repolist
Not root, Subscription Management repositories not updated
LocalServerRepo                                 112 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:04:21 PM UTC.
repo id                              repo name                            status
LocalServerRepo                      LocalServerRepo                      6,647

$ sudo yum install nano
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.
LocalServerRepo                                 103 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:07:33 PM UTC.
Dependencies resolved.
================================================================================
 Package      Arch           Version              Repository               Size
================================================================================
Installing:
 nano         x86_64         2.9.8-1.el8          LocalServerRepo         580 k

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

Total download size: 580 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
nano-2.9.8-1.el8.x86_64.rpm                      19 MB/s | 580 kB     00:00    
--------------------------------------------------------------------------------
Total                                            17 MB/s | 580 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : nano-2.9.8-1.el8.x86_64                                1/1 
  Running scriptlet: nano-2.9.8-1.el8.x86_64                                1/1 
  Verifying        : nano-2.9.8-1.el8.x86_64                                1/1 
Installed products updated.

Installed:
  nano-2.9.8-1.el8.x86_64                                                       

Complete!

C'est super! Tout fonctionne comme prévu. Vous disposez maintenant d'un référentiel YUM/DNF local basé sur Nginx dans Red Hat Enterprise Linux 8, à l'aide du DVD d'installation ou du fichier ISO.


Linux
  1. Enregistrez Red Hat Enterprise Linux et attachez un abonnement avec Ansible

  2. Configuration d'une adresse IPv6 dans Red Hat Enterprise Linux 7 et 8

  3. Création d'une image Red Hat Enterprise Linux 7 personnalisée pour Microsoft Azure

  4. Éléments à prendre en compte lors de l'exécution de Red Hat Enterprise Linux sur Azure

  5. Comment mettre en miroir un référentiel sous Linux

Téléchargement Red Hat Linux

RHEL 6 – Guide d'installation étape par étape de Red Hat Enterprise Linux Server

Étapes d'installation de Red Hat Enterprise Linux (RHEL) 8 avec captures d'écran

Comment installer Red Hat Enterprise Linux 8 (RHEL 8)

Comment obtenir Red Hat Enterprise Linux gratuitement ?

Comment exclure un référentiel spécifique pour la mise à jour Yum dans CentOS / Red Hat