RPM: Création d'un dépôt personnel

De Adadov.net wiki
Article en cours de rédaction ou de modification !
WorkInProgress.png
Le présent article est actuellement en cours de rédaction ou de modification.
Adressez-vous à la personne en charge pour toute proposition ou modification.
Auteur / Editeur : Adadov
Dernière édition : 15/11/2018
Ecrit Par : Adadov

Un dépôt personnel devient très utile dés lors qu'on souhaite diffuser des RPM sur plusieurs machines.

Il peut contenir aussi bien des RPM fait maison que des RPM récupérés ailleurs et simplement diffusés ...

On oubliera pas d'installer la nouvelle version d'un RPM sur une machine vu que DNF s'en occupera ...

Structure des dépôts

Pour se laisser la possibilité d'héberger plusieurs dépôt, on va créer un dossier dans /export/repos dans mon cas je l'ai simplement nommé adadov.

Il faut ensuite créer dans ce dossier l'arborescence qui permettra de séparer les différentes versions de la distribution. J'ai choisi de coller au fonctionnement de Fedora.

Ce qui nous donne la structure suivante:

adadov
├── 27
│   ├── i386
│   └── x86_64
├── 28
│   ├── i386
│   └── x86_64
└── 29
    ├── i386
    └── x86_64

Si vous ajoutez beaucoup de RPM ou si simplement vous souhaitez de l'ordre, vous pouvez ajouter vos RPM dans des sous-dossiers.

Comme le fait Fedora, par exemple, avec un dossier par lettre.

SELinux

Les fichiers du dépôt se trouveront dans /export/repos il faut donc dire à SELinux que ce dossier sera autorisé pour Apache:

[root@linux] # semanage fcontext -a -t httpd_sys_content_t '/export/repos(/.*)?'dblclick to copy
[root@linux] # restorecon -rv /export/repos

Création des métadonnées

Une fois les RPM en place, il faut générer les métadonnées pour chaque dépôt que vous souhaitez rendre accessible.

La commande createrepo s'occupe de ça, il suffit de lui passer en paramètre la racine du dépôt.

[root@linux] # createrepo /export/repos/<chemin_du_repos>dblclick to copy

Chaque dossier i386 et x86_64 sera à considérer comme un dépôt séparé. Il faudra donc penser à mettre à jour les métadonnées du dépôt lors d'une modification.

Ce script mettra à jour les métadonnées de chaque dossier nommé i386 ou x86_64.

#!/usr/bin/env bash

find /export/repos -type d -regextype posix-egrep -regex '^.*/(i386|x86_64)$' -exec createrepo {} \;