Comment modifier un package RPM à l'aide de RPMReBuild
- 1141
- 184
- Mohamed Brunet
Introduction
RPM est l'un des gestionnaires de packages GNU / Linux les plus avancés. Créé par Red Hat, il est utilisé dans de nombreuses distributions, comme par exemple Fedora et des dérivés comme Rhel et Centos.
Les packages à installer avec ce gestionnaire de packages ont le .RPM
extension et sont essentiellement des archives qui contiennent les fichiers fournis par une bibliothèque ou une application plus des informations nécessaires pour que le package soit installé et exécuté correctement, comme ses dépendances. Dans ce tutoriel, nous apprendrons à utiliser rpmrebuild
, Un outil très puissant qui nous a permis de modifier un package RPM existant sans avoir à le reconstruire à partir du code source.
Fixation d'une dépendance manquante dans l'exemple du package Atom
Pour le bien de ce tutoriel, nous allons corriger un vrai bug, affectant l'officiel Atome
Package RPM de l'éditeur. Atome dépend de Gconf2
, Cependant, ce package est omis dans la liste des dépendances spécifier
déposer.
Vous ne le remarquerez peut-être pas si vous installez l'atome sur une installation par défaut de Fedora Workstation, puisque le Gconf2
Le package est déjà installé sur le système (probablement un autre package l'exige comme une dépendance).
Cependant, lors de l'installation de l'atome dans un environnement minimal, le problème se pose: le package sera installé sans problèmes, mais lorsque vous essayez de lancer l'éditeur, l'erreur suivante sera affichée:
/ usr / share / atom / atom: erreur lors du chargement des bibliothèques partagées: libgconf-2.donc.4: Impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type
Le libgconf-2.donc.4
L'objet partagé est fourni par le Gconf2
Package, comme nous pouvons facilement vérifier la publication de la commande Linux suivante:
$ dnf whatprovides libgconf-2.donc.4 gconf2-3.2.6-20.FC28.i686: un système de configuration de configuration de processus de processus: Fedora correspond à: fournir: libgconf-2.donc.4
Corrigeons ce bogue en ajoutant la dépendance manquante dans le fichier de spécification.
Étape 1 - Installation de RPMReBuild
La première chose que nous devons faire est d'installer le rpmrebuild
Package, qui est disponible dans les référentiels Fedora par défaut. La commande peut varier selon que l'utilisateur est dans le roue
groupe, et peut donc utiliser la commande sudo, ou si nous voulons exécuter la commande de passage à l'utilisateur racine, en utilisant su. J'assumerai l'ancien cas ici:
$ sudo dnf installer rpmrebuild
Laissez DNF faire son travail, et bientôt le package sera installé sur notre système. À ce stade, nous devons récupérer le package Atom à partir du site officiel du projet. Nous l'utiliserons comme base pour construire notre régime personnalisé.
Étape 2 - Modification des fichiers spécifiques
Le spécifier
Le fichier d'un package RPM contient des informations vitales sur le package lui-même, comme ses dépendances et les fichiers qu'il fournit: c'est ce fichier que nous devons modifier pour corriger ce petit bogue. En supposant que nous sommes dans le répertoire où nous avons téléchargé le package Atom, nous pouvons émettre la commande Linux suivante:
$ rpmrebuild -enp atom.x86_64.RPM
Nous avons invoqué le rpmrebuild
Commande offrant trois options: -e,
-n
et -p
. Voyons brièvement à quoi ils servent. La première option, -e
est la version courte de --modifier
Et il est nécessaire de dire au programme que nous voulons modifier le SpecFile du package; le deuxième, -n
, version courte de --notomé
Modifie le comportement du programme afin que le régime généré ne soit pas automatiquement installé à la fin du processus de construction.
Enfin, en utilisant le -p
ou --emballer
option, nous spécifions que nous souhaitons utiliser un réel .RPM
Fichier de package comme base de notre reconstruction, au lieu d'utiliser un régime déjà installé.
Une fois que nous exécutons la commande ci-dessus, le fichier de spécifications sera ouvert sur une instance de notre éditeur de texte par défaut. Dans notre cas, ce que nous voulons faire, c'est ajouter un A besoin
clause, afin d'inclure la dépendance manquante:
Exige: le LSB-core-noarch Rebandme: GCONF2 # Voici notre dépendance supplémentaire nécessite: libxss.donc.1 () (64bit) Exige: LibSecret-1.donc.0 () (64 bits)
De plus, nous pouvons modifier la version du package, afin de distinguer notre version modifiée de la version officielle. C'est très simple: tout ce que nous devons faire est de modifier la ligne:
Libération: 0.1
En quelque chose comme:
Libération: 0.1_
Une fois que nous aurons terminé, nous enregistrons et fermons le fichier: une invite sera affichée sur notre terminal, demandant si nous voulons procéder et construire le package modifié:
Voulez-vous continuer ? (O / N)
Si nous donnons une réponse affirmative et appuyez sur Entrée, le bâtiment commencera (cela pourrait prendre un certain temps pour terminer). Il est important de remarquer que le régime spécifié ne sera pas modifié en place, mais un nouveau, en fonction de celui-ci, sera généré. À la fin du processus, le nouveau régime sera situé dans le $ Home / rpmbuild / rpms / x86_64 /
annuaire:
$ ls $ home / rpmbuild / rpms / x86_64 / atom-1.27.0-0.1_.x86_64.RPM
Pour vérifier que la dépendance a été correctement ajoutée, nous pouvons utiliser RPM et interroger les nouvelles dépendances de package:
$ rpm -qrp $ home / rpmbuild / rpms / x86_64 / atom-1.27.0-0.1_.x86_64.RPM GCONF2 LIBXSS.donc.1 () (64bit) Libscreret-1.donc.0 () (64bit) lsb-core-noarch rpmLib (compresssFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1
Gconf2
est désormais inclus dans la liste des dépendances du package. Cela devient évident lorsque nous essayons d'installer le package: comme toujours, un résumé des opérations à effectuer sera affiché lors de l'installation du package avec DNF
:
[…] ============================================. ================================ Pack ==============================================. ================== Installation: Atom x86_64 1.27.0-0.1_Custom @Commandline 99 M Installation des dépendances: GCONF2 x86_64 3.2.6-20.FC28 Fedora 1.0 m à x86_64 3.1.20-10.FC28 Fedora 80 K Cronie x86_64 1.5.1-9.FC28 Fedora 105 K Cronie-Anacron x86_64 1.5.1-9.FC28 Fedora 40 K Crontabs Noarch 1.11-16.20150630git.FC28 Fedora 24 K ed x86_64 1.14.2-2.FC28 Fedora 80 K ESMTP x86_64 1.2-10.FC28 Fedora 57 K libxscrnsaver x86_64 1.2.2-14.FC28 Fedora 29 K libesmtp x86_64 1.0.6-14.FC28 Fedora 67 K LiblockFile x86_64 1.14-1.FC28 Fedora 30 K M4 x86_64 1.4.18-6.FC28 Fedora 221 K Mailx x86_64 12.5-28.FC28 Mises à jour 256 K ncurses-compat-libs x86_64 6.1-4.20180224.FC28 Fedora 331 K redhat-lsb-core x86_64 4.1-44.FC28 Fedora 44 K redhat-lsb-submod-security x86_64 4.1-44.FC28 Fedora 21 K Spax x86_64 1.5.3-12.FC28 Fedora 216 K Temps x86_64 1.9-1.FC28 Fedora 53 K Util-linux-user x86_64 2.32-2.FC28 Fedora 94 K Résumé de la transaction ======================================================================================= =================================== INSTALLER 19 Packages […]
Le package s'exécutera désormais correctement, car toutes ses dépendances d'exécution sont correctement satisfaites.
Dernières pensées
Dans ce tutoriel, nous avons vu comment modifier un spécifier
fichier d'un package sans avoir à le reconstruire à partir du code source à l'aide du rpmrebuild
outil. Nous avons corrigé un petit bug, qui consiste en une dépendance manquante dans le package officiel de l'ATOM.
Nous avons téléchargé et utilisé le package Atom officiel comme base de notre reconstruction, mais avec le même outil, il est possible de travailler et de modifier des fichiers qui font partie d'un régime déjà installé, afin d'en générer une nouvelle version qui comprendra les modifications. Rpmrebuild
est un outil très utile et puissant; La suggestion, comme toujours, c'est de plonger dans son page d'homme
Pour le maîtriser, débloquer son plein potentiel.
Tutoriels Linux connexes:
- Une introduction à l'automatisation Linux, des outils et des techniques
- Choses à installer sur Ubuntu 20.04
- Masterring Bash Script Loops
- Mint 20: Mieux que Ubuntu et Microsoft Windows?
- Comment reconstruire un package à l'aide du système de construction Arch Linux
- Boucles imbriquées dans les scripts bash
- Comment interroger les informations des packages avec le package RPM…
- Comment mettre à jour Centos
- Comment migrer de Centos à Almaliux
- Téléchargement Linux
- « Installer la bague, une alternative Foss VoIP Skype
- Comment créer un VPN Killswitch en utilisant iptables sur Linux »