Rpm est l'acronyme de RPM Package Manager :il s'agit du gestionnaire de paquets de bas niveau utilisé dans toute la famille de distributions Red Hat, telles que Fedora et Red Hat Enterprise Linux.
Un package rpm est un package contenant un logiciel destiné à être installé à l'aide de ce système de gestion de packages, et les packages rpm sont généralement distribués via des référentiels de logiciels. Dans ce didacticiel, nous apprenons à créer un référentiel rpm personnalisé et à configurer notre distribution pour l'utiliser comme source logicielle.
Dans ce didacticiel, vous apprendrez :
- Comment créer un dépôt rpm
- Comment utiliser le référentiel comme source de logiciels

Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | Toute distribution de la famille Red Hat |
Logiciel | dnf, createrepo |
Autre | Privilèges administratifs pour configurer le référentiel |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo command$ - nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Installation du logiciel
Pour les besoins de ce tutoriel, nous allons créer notre référentiel personnalisé sur une machine locale avec IP 192.168.0.39
qui servira de serveur http. Sur cette machine, la première chose à faire est d'installer le createrepo
emballer. La distribution installée sur la machine distante n'a pas besoin d'être elle-même une distribution basée sur rpm, tant que ledit paquet est disponible. Dans notre cas, par exemple, le système installé sur le serveur est Debian, donc pour installer le paquet, nous devons exécuter la commande suivante :
$ sudo apt-get update && sudo apt-get install createrepo
Comme nous l'avons dit précédemment, dans notre exemple spécifique, nous voulons rendre le logiciel hébergé sur notre référentiel personnalisé accessible via le protocole HTTP, nous devons donc installer un serveur HTTP; dans ce cas nous travaillerons avec Apache. L'installer sur Debian, c'est juste une question d'exécution :
$ sudo apt-get install apache2
Une fois les packages installés, nous pouvons continuer et créer notre référentiel rpm en quelques étapes très simples.
Création du dépôt
L'hôte virtuel Apache par défaut DocumentRoot
créé lors de l'installation d'Apache sur Debian est /var/www/html
. À ce stade, nous pouvons choisir de créer un VirtualHost pour notre référentiel, ou simplement de créer le répertoire du référentiel dans le cadre de celui par défaut. Par souci de simplicité, dans ce tutoriel, nous allons explorer cette dernière option :
$ sudo mkdir /var/www/html/repo
Le repo
répertoire que nous avons créé avec la commande ci-dessus, à l'intérieur du VirtualHost DocumentRoot par défaut , hébergera nos packages et sera la base de notre référentiel. Pour mieux le structurer, nous souhaitons maintenant créer des sous-répertoires
nommés d'après la distribution, sa version et l'architecture des packages que nous souhaitons rendre disponibles. Supposons, par exemple, que nous voulions utiliser le référentiel sur Fedora 33 x68_64
, nous devons exécuter la commande suivante :
$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64
L'étape suivante consiste à peupler le référentiel. Tout ce que nous avons à faire est de placer les packages que nous voulons rendre disponibles, dans le répertoire de référentiel approprié. Dans ce cas, à titre d'exemple, je remplirai le référentiel avec un package obtenu en compilant l'éditeur VSCode à partir de la source. Le paquet s'appelle code-1.56.0-1617183449.el8.x86_64.rpm
. Une fois copié, notre structure de fichiers devrait ressembler à ceci :
repo └── fedora └── releases └── 33 └── x86_64 └── code-1.56.0-1617183449.el8.x86_64.rpm
Avec notre référentiel rempli, tout ce que nous voulons faire est d'exécuter le createrepo
commande dans le répertoire contenant les packages. Dans ce cas, nous lancerions :
$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64
La commande créera les métadonnées du référentiel dans un répertoire nommé repodata
, en fonction des packages contenus dans le répertoire de destination et doit être relancé chaque fois que le référentiel est mis à jour avec de nouveaux packages ou que d'anciens packages sont supprimés. Une fois la commande lancée, notre structure de répertoires ressemblera à :
repo └── fedora └── releases └── 33 └── x86_64 ├── code-1.56.0-1617183449.el8.x86_64.rpm └── repodata ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2 ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2 ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2 ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz └── repomd.xml
Notre référentiel a été créé avec succès. Nous devons maintenant configurer notre distribution pour l'utiliser comme source logicielle.
Ajout du référentiel en tant que source logicielle
Passons à notre distribution basée sur rpm et voyons comment la configurer afin d'utiliser notre référentiel personnalisé comme source logicielle. Les fichiers de configuration du référentiel se trouvent sous le /etc/yum.repos.d
répertoire, et doit avoir le.repo
extension. En regardant à l'intérieur du répertoire, nous pouvons voir ceux qui existent déjà :
$ ls /etc/yum/repos.d fedora-cisco-openh264.repo fedora-updates-testing-modular.repo fedora-modular.repo fedora-updates-testing.repo fedora.repo rpmfusion-free.repo fedora-updates-modular.repo rpmfusion-free-updates.repo fedora-updates.repo rpmfusion-free-updates-testing.repo
Maintenant, créons notre configuration de référentiel personnalisée. À l'intérieur du fichier, comme ensemble minimum d'informations, nous devrions fournir :
- L'identifiant du référentiel
- Le nom du référentiel
- Une URL de base de dépôt
- L'état du référentiel
- S'il faut ou non vérifier la signature gpg des packages
Nous enregistrerons ces informations dans un fichier appelé ownrepo.repo
, voici son contenu :
[ownrepo] name=Own repository baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch enabled=1 gpgcheck=0
La définition indiquée entre crochets ([ownrepo]
) est l'ID de référentiel et doit être unique dans toutes les définitions de référentiel. Avec le name
key, nous avons fourni un nom lisible par l'homme pour le référentiel sous forme de chaîne. Ceci est facultatif ; si aucun nom n'est fourni, l'ID du référentiel sera également utilisé comme nom.
Avec le baseurl
key, nous spécifions une liste des URL du référentiel. Les URL doivent être séparées par un espace ou une virgule. Dans notre exemple, nous n'avons fourni qu'une seule URL, mais vous pouvez remarquer que nous y avons utilisé deux variables :
- $releasever
- $basearch
L'extension du premier, $releasever
, se traduira par la version finale du système d'exploitation, dans ce cas 33
, puisque nous installons notre référentiel sur un système Fedora 33. La deuxième variable, $basearch
, sera développé dans une chaîne représentant l'architecture de base du système, qui dans notre cas est x86_64
.
Le enabled
la clé nécessite un booléen valeur qui détermine si le référentiel doit être considéré comme actif ou non. La dernière clé que nous avons utilisée est gpgcheck
:il nécessite également une valeur booléenne et est utilisé pour déterminer si une vérification de signature gpg doit être effectuée sur les packages installés à partir du référentiel. Dans notre exemple, nous avons simplement désactivé la vérification, car le référentiel est destiné à un usage personnel uniquement.
Maintenant que notre référentiel est configuré, nous pouvons essayer d'installer le code
package à partir de celui-ci, en exécutant simplement :
$ sudo dnf install code Own repository 451 kB/s | 13 kB 00:00 Dependencies resolved. ================================================================================================================== Package Architecture Version Repository Size ================================================================================================================== Installing: code x86_64 1.56.0-1617183449.el8 ownrepo 100 M Transaction Summary ================================================================================================================== Install 1 Package Total download size: 100 M Installed size: 294 M Is this ok [y/N]:
Une fois que nous avons fourni une réponse affirmative à l'invite et que nous l'avons confirmée, le package sera installé sur notre système.
Conclusion
Dans cet article, nous avons appris à quel point il est facile de créer un référentiel rpm personnalisé avec le createrepo
utilitaire, et nous avons vu comment créer un fichier de configuration dnf sur notre distribution pour l'utiliser comme source logicielle. Nous avons vu un sous-ensemble minimal de
les clés qui peuvent être utilisées dans la configuration du référentiel ; pour une liste plus détaillée vous pouvez consulter la documentation officielle dnf.