[LINUX] Configurez un serveur de référentiel yum sur la série CentOS 7 et faites-y référence localement et à partir d'autres serveurs, etc.

introduction

Je ne pense pas qu'il y ait beaucoup d'autres articles comme celui-ci qui soient courants. Je ne sais pas si quelqu'un a un référentiel yum local pour le moment, Depuis que j'ai récemment construit mon propre serveur de distribution rpm, En plus du mémo du contenu de l'époque, j'ai décidé de participer au Linux Advent Calender 2019.

De plus, étant donné que les détails de construction de la partie publique du référentiel sur le Web seront omis pour le moment, Veuillez utiliser apache, nginx, etc. pour définir le dossier du référentiel comme public. Le contenu est un contenu de niveau débutant. C'est facile à créer.

Cet environnement

Préparez-vous à créer un référentiel

Installez le package create repo pour créer le référentiel.

# yum install createrepo

Les packages suivants sont également installés en tant que dépendances.

deltarpm
python-deltarpm

Cliquez ici pour la version de create repo installée cette fois

[root@yum-server ~]# rpm -qa | fgrep createrepo
createrepo-0.9.9-28.el7.noarch
[root@yum-server ~]#

Créons un référentiel

Préparation

Tout d'abord, considérez la zone dans laquelle vous allez créer la base de données du référentiel. Compte tenu de la taille du disque, je pense qu'il est recommandé de créer un espace.

S'il s'agit d'un serveur sur site, c'est une zone avec de nombreuses boules de disque. Ou s'il s'agit d'AWS, etc., il peut être bon d'insérer une zone supplémentaire. Je ne pense pas qu'il y aura de problème si je ne l'utilise pas localement pour les E / S, etc., c'est donc votre propre politique.

Créer un annuaire

Cette fois, nous sécuriserons la zone ci-dessous. /var/yum-repo

De plus, cette fois, il sera possible de publier pour plusieurs versions de CentOS J'essaierai également la politique suivante.

/ var / yum-repo / centos / [numéro de version CentOS] / rpms

Si vous voulez diviser par architecture, vous pouvez utiliser x86_64 après le numéro de version CentOS. Je pense qu'il serait préférable de diviser par noarch etc. (Si vous faites rpmbuild, rpm sera créé en unités de hiérarchie arch, donc cela semble être une bonne chose)

Placer en fait rpm

Par exemple, si vous l'avez reconstruit vous-même, posez-le.

Cette fois, à titre d'exemple, je vais l'utiliser en supprimant le rpm du référentiel CentOS-Base. Il est pratique d'utiliser # yumdownloader [nom du package] etc. lors du téléchargement de rpm. Cette fois, nous utiliserons le rpm wget, qui est facile à comprendre et n'a aucune dépendance.

[root@yum-server rpms]# ls -ltr
total 548
-rw-r--r-- 1 root root 560272 May 17 00:48 wget-1.14-18.el7_6.1.x86_64.rpm
[root@yum-server rpms]#

Créer des informations de métadonnées de référentiel

Il est enfin temps pour la commande createrpo.

Étant donné que les informations du fichier rpm dans le répertoire sous l'analyse spécifiée sont importées, Je pense que cela prendra un certain temps selon le nombre. Cette fois, c'était un, donc il a été terminé immédiatement.

# createrepo -d [hiérarchie pour créer des métadonnées]

[root@yum-server 7]# pwd
/var/yum-repo/centos/7

[root@yum-server 7]# createrepo -d ./
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@yum-server 7]#

Si vous effectuez la création d'un repo, les données du repo seront créées sous le répertoire spécifié par l'argument. Les informations rpm sous le répertoire spécifié par l'argument sont récupérées. Les informations relatives au XML sont stockées comme suit.

[root@yum-server 7]# ls -ltr
total 4
drwxr-xr-x 2 root root   45 Nov  8 19:41 rpms
drwxr-xr-x 2 root root 4096 Nov  8 19:43 repodata
[root@yum-server 7]# cd repodata/
[root@yum-server repodata]# ls -ltr
total 28
-rw-r--r-- 1 root root 1139 Nov  8 19:43 dedbecb0ef25ebe6b8646e2589dc48e9a2adb34d1d6a677eed9e100ad2cbca54-primary.xml.gz
-rw-r--r-- 1 root root  523 Nov  8 19:43 29d912df4c348eba529c6a9845827f02a8160c094ab0da8892a398fab70c27e0-filelists.xml.gz
-rw-r--r-- 1 root root  893 Nov  8 19:43 b7d1045f4692acfa996b581a68c9483103e0c4edd5b14ae96e92640aeaa68351-other.xml.gz
-rw-r--r-- 1 root root 1512 Nov  8 19:43 d9410596837121203e82f0dabbf83afc8d467d16b15d73c8436bdcfac86db0d6-other.sqlite.bz2
-rw-r--r-- 1 root root 1880 Nov  8 19:43 b80afe3ab58edef03d0043b69da54e041574ee17f3e717ef53d04926194cc67b-filelists.sqlite.bz2
-rw-r--r-- 1 root root 2620 Nov  8 19:43 dc35f95c517d1b9014fa0b21d80be4c28483bfab6dac993443ba195dd232d07a-primary.sqlite.bz2
-rw-r--r-- 1 root root 2969 Nov  8 19:43 repomd.xml
[root@yum-server repodata]#

Ceci termine la création des métadonnées.

Si vous utilisez cette politique de création de référentiel, je pense que le répertoire a été créé pour chaque version de CentOS, donc Si vous avez une version pour CentOS 6, veuillez également faire create repo ici.

Paramètres Yum.conf pour chaque serveur client

Édition du serveur local

Je me demande un peu s'il doit être utilisé sur un serveur local, mais il peut être lu en créant un fichier de référentiel yum comme celui ci-dessous.

Ensemble
[root@yum-server yum.repos.d]# pwd
/etc/yum.repos.d
[root@yum-server yum.repos.d]#
[root@yum-server yum.repos.d]# vim local.repo
[local-repo]
enabled=0
name= local-repo of the year.
baseurl=file:///var/yum-repo/centos/$releasever
[root@yum-server yum.repos.d]#

Spécifiez le chemin du fichier local (hiérarchie où se trouvent les métadonnées) pour la partie baseurl. De plus, si vous utilisez $ releasever, la version majeure du système d'exploitation sera attribuée. Il est probablement utilisé dans le référentiel CentOS-Base, donc je pense que c'est en quelque sorte compris. Vous pouvez vérifier les détails dans man yum.conf. Au fait, puisque ʻenabled = 0`, il n'est normalement pas lu.

Voir le référentiel

J'ai mis en place une référence locale sous yum.repos.d, alors vérifions s'il peut être lu.

Puisqu'il est difficile de changer les indicateurs valides d'autres référentiels de base, etc. sur le fichier, Désactiver autre que le référentiel ajouté cette fois avec un joker sur la commande yum, Assurez-vous que vous disposez d'une référence de référentiel en activant uniquement le nom du référentiel que vous avez créé.

[root@yum-server 7]# yum --disablerepo=* --enablerepo=local-repo repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                    repo name                                                              status
local-repo/7                                               local-repo of the year.                                                1
repolist: 1
[root@yum-server 7]#

J'ai pu confirmer qu'il n'existe qu'un seul package référencé et géré en toute sécurité.

Si vous souhaitez l'installer et le vérifier, vous pouvez également l'installer.

[root@yum-server 7]# yum --disablerepo=* --enablerepo=local-repo install wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
local-repo                                                                                                       | 2.9 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7_6.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================
 Package                    Arch                         Version                                 Repository                        Size
========================================================================================================================================
Installing:
 wget                       x86_64                       1.14-18.el7_6.1                         local-repo                       547 k

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

Total download size: 547 k
Installed size: 2.0 M
Is this ok [y/d/N]:

Édition du serveur distant

Et pour les références à distance. Fondamentalement, définissez simplement les informations du référentiel dans le client auquel vous souhaitez faire référence au référentiel créé de la même manière que la référence locale.

Publier le référentiel

Tout d'abord, pour y faire référence à distance, publiez le répertoire du référentiel sur le Web sur le serveur sur lequel le référentiel a été créé précédemment. Veuillez utiliser ce que vous voulez, comme apache ou nginx.

Comme mentionné au début, la procédure ici est omise. Screen Shot 2019-11-08 at 20.10.17.png

Définir yum du côté client

C'est un paramètre qui donne l'impression d'avoir été défini localement.

[root@yum-client ~]# cat /etc/yum.repos.d/local.repo
[local-repo]
enabled=0
name= local-repo of the year.
baseurl=http://[Adresse Web publique]/centos/$releasever
[root@yum-client ~]#

Vérifiez également si le référentiel peut également être lu ici.

[root@yum-client ~]# yum --disablerepo=* --enablerepo=local-repo repolist
Plug-in chargé:fastestmirror
Loading mirror speeds from cached hostfile
local-repo                                                                                                       | 2.9 kB  00:00:00
local-repo/7/primary_db                                                                                          | 2.6 kB  00:00:00
ID du référentiel Nom du référentiel Statut
local-repo/7                                                  local-repo of the year.                                               1
repolist: 1
[root@yum-client ~]#

J'ai pu m'y référer à distance!

Enfin, installons wget.

[root@yum-client ~]# yum --disablerepo=* --enablerepo=local-repo install wget
Plug-in chargé:fastestmirror
Loading mirror speeds from cached hostfile
Résolution des dépendances
-->Effectuer la confirmation de transaction.
--->Paquet wget.x86_64 0:1.14-18.el7_6.Installer 1
-->Résolution des dépendances terminée.

Résolution de la dépendance

========================================================================================================================================
Capacité du référentiel de versions d'architecture de package
========================================================================================================================================
Pendant l'installation:
 wget                       x86_64                       1.14-18.el7_6.1                         local-repo                       547 k

Récapitulatif des transactions
========================================================================================================================================
Pack d'installation 1

Capacité totale de téléchargement: 547 k
Capacité d'installation: 2.0 M
Is this ok [y/d/N]: y
Downloading packages:
wget-1.14-18.el7_6.1.x86_64.rpm                                                                                  | 547 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Pendant l'installation: wget-1.14-18.el7_6.1.x86_64                                                                             1/1
Pendant la vérification: wget-1.14-18.el7_6.1.x86_64                                                                             1/1

Installation:
  wget.x86_64 0:1.14-18.el7_6.1

A completé!
[root@yum-client ~]#

Ajouter des packages pour refléter les informations de la base de données

Si vous souhaitez ajouter un package à votre référentiel, vous devez le mettre à jour.

# createrepo --update ./
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Spawning worker 4 with 1 pkgs
Spawning worker 5 with 0 pkgs
Spawning worker 6 with 0 pkgs
Spawning worker 7 with 0 pkgs
Spawning worker 8 with 0 pkgs
Spawning worker 9 with 0 pkgs
Spawning worker 10 with 0 pkgs
Spawning worker 11 with 0 pkgs
Spawning worker 12 with 0 pkgs
Spawning worker 13 with 0 pkgs
Spawning worker 14 with 0 pkgs
Spawning worker 15 with 0 pkgs
Spawning worker 16 with 0 pkgs
Spawning worker 17 with 0 pkgs
Spawning worker 18 with 0 pkgs
Spawning worker 19 with 0 pkgs
Spawning worker 20 with 0 pkgs
Spawning worker 21 with 0 pkgs
Spawning worker 22 with 0 pkgs
Spawning worker 23 with 0 pkgs
Spawning worker 24 with 0 pkgs
Spawning worker 25 with 0 pkgs
Spawning worker 26 with 0 pkgs
Spawning worker 27 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#

à la fin

――Si vous créez votre propre build ou avez besoin de le publier en interne, vous pouvez facilement le créer, alors faisons-le. --Il semble que vous puissiez vous référer au référentiel git tant que vous pouvez lire les métadonnées (bien que cela semble être une charge).

Recommended Posts

Configurez un serveur de référentiel yum sur la série CentOS 7 et faites-y référence localement et à partir d'autres serveurs, etc.
De l'introduction de Flask sur CentOS au service sur Nginx et uWSGI
Comment configurer un serveur de développement local
Notez que j'étais accro à la configuration de TensowFlow
Configurer un serveur local simple sur votre Mac
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
Configurez un serveur gratuit sur AWS en 30 minutes
[Partie 1] Configurons un serveur Micra sur Linux
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.
Comment configurer WSL2 sur Windows 10 et créer un environnement d'étude pour les commandes Linux
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
Étapes pour configurer Pipenv, créer une application CRUD avec Flask et la conteneuriser avec Docker
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Installez mecab sur le serveur partagé Sakura et appelez-le depuis python
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Tout, de la création d'un environnement Python à son exécution sous Windows
Configurer un serveur SMTP factice avec Python et vérifier le fonctionnement de l'envoi depuis Action Mailer
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Configurer l'environnement Python sur CentOS
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
Définissez la fonction Lambda et laissez-la fonctionner avec les événements S3!
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Configurer un proxy inverse vers le serveur https avec CentOS Linux 8 + Apache mod_ssl
Une histoire sur un débutant essayant de configurer CentOS 8 (mémo de procédure)
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la