Comment modifier un package RPM à l'aide de RPMReBuild

Comment modifier un package RPM à l'aide de RPMReBuild

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