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.
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 ~]#
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.
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)
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]#
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.
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.
[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.
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]:
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.
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.
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 ~]#
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
#
――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).