CentOS : Créer son propre repository local
Sommaire
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.
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