23/11/2024

Commandes et SystèmeLinux

CentOS : Créer son propre repository local

I. Présentation

Il arrive parfois que sur certaines machines GNU/Linux, on ait besoin d’installer certaines fonctionnalités ne se trouvant pas dans les dépôts officiels et devant être alors initialisées de façon manuelle. Heureusement, au lieu d’installer package par package, on peut créer un dépôt local et s’en servir pour initialiser l’application en question.

Au travers de ce tutoriel, je prendrais comme exemple l’installation du client Puppet, dont les packages au sein du dépôt EPEL de RedHat/CentOS ne sont pas forcément à jour. Il convient alors de se créer un dépôt local permettant de sélectionner les packages les plus récents et à jour de l’outil.

II. Récupération des différents paquetages

L’outil Puppet pourrait faire l’objet d’un tutoriel ou d’un cours. Il s’agit d’un outil Client/Serveur permettant d’automatiser et de déployer des fonctions, de façon standard et homogène sur l’ensemble des ordinateurs d’un parc informatique. Autant dire que pour un administrateur, il s’agit d’un outil précieux.

La première des choses à réaliser pour préparer le dépôt local est de connaître l’ensemble des packages et dépendances nécessaires à la constitution de ce référentiel. Pour se faire, il faut avoir déjà installé une première fois l’outil sur un serveur. On va donc tenter l’installation une première fois. Celle-ci nous avertira alors qu’il nous faut les packages de dépendances ci-dessous :

  • facter-2.4.6-1.el7.x86_64.rpm
  • hiera-1.3.4-1.el7.noarch.rpm
  • libselinux-ruby-2.5-6.el7.x86_64.rpm
  • libyaml-0.1.4-11.el7_0.x86_64.rpm
  • net-tools-2.0-0.17.20131004git.el7.x86_64.rpm
  • puppetlabs-release-el-7.noarch.rpm
  • ruby-2.0.0.648-29.el7.x86_64.rpm
  • ruby-augeas-0.4.1-3.el7.x86_64.rpm
  • rubygem-bigdecimal-1.2.0-29.el7.x86_64.rpm
  • rubygem-io-console-0.4.2-29.el7.x86_64.rpm
  • rubygem-json-1.7.7-29.el7.x86_64.rpm
  • rubygem-psych-2.0.0-29.el7.x86_64.rpm
  • rubygem-rdoc-4.0.0-29.el7.noarch.rpm
  • rubygems-2.0.14.1-29.el7.noarch.rpm
  • ruby-irb-2.0.0.648-29.el7.noarch.rpm
  • ruby-libs-2.0.0.648-29.el7.x86_64.rpm
  • ruby-shadow-2.2.0-2.el7.x86_64.rpm

Il faut aussi récupérer le package du client Puppet lui-même. On sélectionne alors la version suivante :

  • puppet-3.8.7-1.el7.noarch.rpm

Moyennant ces informations, il ne reste plus qu’à aller sur le site https://yum.puppetlabs.com/el/7/ et dans les sous-répertoires products/x86_64 et dependencies/x86_64 on devrait trouver quelques-uns des utilitaires mentionnés ci-dessus. Pour ce qui est des autres packages, il faut aller sur le site officiel de CentOS.

III. Installation de l’outil de génération de dépôt

Lorsque l’on a récupéré l’ensemble des paquetages de dépendances nécessaires, il faut alors les stocker dans un répertoire local à notre serveur. Dans mon cas, j’ai créé un compte repo. Dans le sous-répertoire /home/repo/ j’ai alors créé un dossier puppet, où j’ai déposé tous les fichiers .rpm récupéré à l’étape précédente.

A ce stade, il ne reste plus qu’à installer le package createrepo et ses dépendances :

# yum install createrepo

IV. Création du dépôt local

Il faut ensuite générer un dépôt local constitué des différents paquetages de dépendance pour le client Puppet en exécutant l’instruction suivante :

# createrepo /home/repo/puppet

Cette dernière action permet de référencer tous les packages présents dans le répertoire pointé et initialise un dossier repodata possédant tout le matériel nécessaire à l’installation de ces différents éléments et surtout du client Puppet :

On doit ensuite constituer le fichier de référencement de ce nouveau dépôt en créant dans le répertoire /etc/yum.repos.d le fichier localrepo.repo suivant :

[localrepo]
name=Puppet localrepo
baseurl=file:///home/repo/puppet
gpgcheck=0
enabled=1

Il ne reste plus qu’à ajouter ce référentiel dans la liste de ceux que vous avez déjà déclaré :

# yum makecache
# yum install puppet

 

V. Conclusion

Voilà, c’est tout simple. Mais, c’est très pratique lorsque l’on n’a pas forcément accès à Internet ou que l’on ne sait pas nécessairement sur quel site aller chercher les références des applications à installer.

Cela m’a été très utile dans bien des cas. Maintenant, il est clair que si votre applications possède des centaines de packages de dépendances, l’opération devient vite plus difficile à réaliser. Il faut faire cela uniquement pour des outils ne nécessitant pas trop de téléchargements de packages supplémentaires.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “CentOS : Créer son propre repository local

  • Bonjour

    Le fait de mettre gpgcheck=0 dans localrepo.repo n’apporte t’il pas un problème de sécurité si la vérification du paquet n’est pas faite ?

    cdt

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.