GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un référentiel rpm personnalisé sous Linux

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

Configuration logicielle requise et conventions de ligne de commande Linux
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.


Linux
  1. Comment configurer le référentiel YUM sous Linux/Centos/Redhat | YUM sous Linux/Centos/Redhat

  2. Comment créer un script d'une commande Linux

  3. Comment créer un package RPM Linux

  4. Comment créer un utilisateur avec un répertoire personnel personnalisé sous Linux

  5. Comment créer une rotation de fichier journal personnalisée par logrotate sous Linux

Comment créer des liens symboliques sous Linux

Comment créer un fichier sous Linux

Comment créer des raccourcis sur le bureau Linux

Comment créer un montage à partir d'images sous Linux

Comment créer un alias SSH sous Linux

Comment créer un alias sous Linux