So ändern Sie ein RPM -Paket mit RPMRebuild

So ändern Sie ein RPM -Paket mit RPMRebuild

Einführung

RPM ist einer der fortschrittlichsten GNU/Linux -Paketmanager. Erstellt von Red Hat, wird es in vielen Verteilungen verwendet, wie zum Beispiel Fedora und Derivate wie Rhel und CentOS.

Pakete, die mit diesem Paketmanager installiert werden sollen, haben die .Drehzahl Erweiterung und sind im Grunde Archive, die die Dateien enthalten, die von einer Bibliothek oder einer Anwendung sowie Informationen zur Verfügung gestellt werden, damit das Paket installiert und korrekt ausgeführt wird, z. B. seine Abhängigkeiten. In diesem Tutorial lernen wir, wie man benutzt rpmrebuild, Ein sehr leistungsstarkes Tool, mit dem wir ein vorhandenes RPM -Paket ändern können, ohne es aus dem Quellcode wieder aufbauen zu müssen.

Beheben einer fehlenden Abhängigkeit im Atom -Paket -Beispiel

Für dieses Tutorial werden wir einen echten Fehler beheben, der den Beamten beeinflusst Atom Editor RPM -Paket. Atom hängt davon ab Gconf2, Dieses Paket ist jedoch in der Liste der Abhängigkeiten weggelassen Spezifikation Datei.

Sie können dies möglicherweise nicht bemerken, wenn Sie Atom auf einer Standardinstallation von Fedora Workstation installieren, da die Gconf2 Das Paket ist bereits im System installiert (wahrscheinlich ist ein anderes Paket als Abhängigkeit erforderlich).

Bei der Installation von Atom in einer minimalen Umgebung tritt jedoch das Problem auf: Das Paket wird ohne Probleme installiert. Wenn jedoch versucht wird, den Editor zu starten, wird der folgende Fehler angezeigt:

/usr/share/atom/atom: fehler beim laden freigegebenen bibliotheken: libgconf-2.So.4: Die Shared -Objektdatei kann nicht öffnen: Keine solche Datei oder Verzeichnis

Der libgconf-2.So.4 gemeinsames Objekt wird von der bereitgestellt Gconf2 Paket, wie wir leicht die Ausgabe des folgenden Linux -Befehls überprüfen können:

$ dnf was libgconf-2 vorgeht.So.4 GCONF2-3.2.6-20.FC28.i686: Ein Prozesstransparent-Konfigurationssystem Repo: Fedora übereinstimmt von: Vorgabe: libgconf-2.So.4 

Lassen Sie uns diesen Fehler beheben, indem Sie die fehlende Abhängigkeit in die Spezifikationsdatei hinzufügen.



Schritt 1 - RPMRebuild -Installation

Das erste, was wir tun müssen, ist, die zu installieren rpmrebuild Paket, das in den Standard -Fedora -Repositories erhältlich ist. Der Befehl kann variieren, je nachdem, ob sich der Benutzer in der befindet Rad Gruppe und kann daher den SUDO -Befehl verwenden oder wenn wir den Befehlswechsel zum Root -Benutzer mit SU ausführen möchten. Ich werde den früheren Fall hier annehmen:

$ sudo dnf installieren rpmrebuild

Lassen Sie DNF seinen Job machen, und bald wird das Paket auf unserem System installiert. Zu diesem Zeitpunkt müssen wir das Atom -Paket von der offiziellen Projektwebsite abrufen. Wir werden es als Basis verwenden, um unsere benutzerdefinierte Drehzahl zu erstellen.

Schritt 2 - Änderung der Spezifateidatei

Der Spezifikation Die Datei eines RPM -Pakets enthält wichtige Informationen zum Paket selbst, z. Unter der Annahme, dass wir uns im Verzeichnis befinden, in dem wir das Atom -Paket heruntergeladen haben, können wir den folgenden Linux -Befehl ausgeben:

$ rpmrebuild -enp Atom.x86_64.Drehzahl

Wir haben die aufgerufen rpmrebuild Befehl bietet drei Optionen: -e, -N Und -P. Lassen Sie uns kurz sehen, wofür sie sind. Die erste Option, -e ist die Kurzversion von --Bearbeiten. Specfile und es ist erforderlich, um das Programm zu mitteilen, dass wir die Spezifikation des Pakets bearbeiten möchten. der zweite, -N, Kurzversion von --Notestall Verändert das Verhalten des Programms so, dass das generierte RPM am Ende des Bauprozesses nicht automatisch installiert wird.

Schließlich durch die Verwendung der -P oder --Paket Option geben wir an, dass wir einen tatsächlichen verwenden möchten .Drehzahl Paketdatei als Basis unseres Umbaues, anstatt eine bereits installierte Drehzahl zu verwenden.

Sobald wir den obigen Befehl ausführen. In unserem Fall wollen wir eine hinzufügen, um a hinzuzufügen Erfordert Klausel, um die fehlende Abhängigkeit einzuschließen:

Erfordert: LSB-CORE-NOARCH BEDEUTEN: GCONF2 # Hier ist unsere zusätzliche Abhängigkeit erforderlich: libxss.So.1 () (64bit) erfordert: libscret-1.So.0 () (64bit) 

Darüber hinaus können wir die Paketversion ändern, um unsere modifizierte Version vom offiziellen zu unterscheiden. Es ist sehr einfach: Wir müssen nur die Zeile ändern:



Veröffentlichung: 0.1

In etwas wie:

Veröffentlichung: 0.1_Custom

Sobald wir fertig sind, speichern und schließen wir die Datei: Eine Eingabeaufforderung wird auf unserem Terminal angezeigt. Sie fragen, ob wir fortfahren und das geänderte Paket erstellen möchten:

Möchtest du fortfahren ? (y/n)

Wenn wir eine positive Antwort geben und die Eingabetaste drücken, beginnt das Gebäude (es könnte eine Weile dauern, bis er fertig ist). Es ist wichtig zu beachten. Am Ende des Prozesses befindet sich die neue Drehzahl in der $ Home/rpmbuild/rpms/x86_64/ Verzeichnis:

$ ls $ home/rpmbuild/rpms/x86_64/atom-1.27.0-0.1_Custom.x86_64.Drehzahl 

Um zu überprüfen, ob die Abhängigkeit korrekt hinzugefügt wurde, können wir RPM verwenden und die neuen Paketabhängigkeiten abfragen:

$ RPM -qrp $ HOME/RPMBUILD/RPMS/X86_64/ATOM -1.27.0-0.1_Custom.x86_64.RPM GCONF2 LIBXSS.So.1 () (64bit) libSecret-1.So.0 () (64-Bit) LSB-CORE-Noarch RPMLIB (CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 

Gconf2 ist jetzt in der Liste der Paketabhängigkeiten enthalten. Dies wird deutlich, wenn wir versuchen, das Paket zu installieren: Wie immer wird eine Zusammenfassung der zu ausgeführten Vorgänge bei der Installation des Pakets mit angezeigt DNF:



[...] ===============================================================================================================================================================================================================ieben =====================ieben ====================================================== ================== installieren: Atom x86_64 1.27.0-0.1_custom @commandline 99 m Installation von Abhängigkeiten: GCONF2 x86_64 3.2.6-20.FC28 Fedora 1.0 m bei 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 Updates 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 TIME X86_64 1.9-1.FC28 Fedora 53 K Util-Linux-User x86_64 2.32-2.fc28 fedora 94 k Transaction Summary ============================================ =================================== Installieren Sie 19 Pakete […] 

Das Paket wird jetzt korrekt ausgeführt, da alle Laufzeitabhängigkeiten korrekt erfüllt sind.

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie man a modifiziert Spezifikation Datei eines Pakets, ohne es mit dem Quellcode neu aufbauen zu müssen rpmrebuild Werkzeug. Wir haben einen kleinen Fehler behoben, der in einer fehlenden Abhängigkeit im offiziellen RPM -Paket von Atom besteht.

Wir haben das offizielle Atom -Paket als Basis unseres Umbaues heruntergeladen und verwendet. Mit demselben Tool ist es jedoch möglich, Dateien zu arbeiten und zu ändern. Rpmrebuild ist ein sehr nützliches und mächtiges Werkzeug; Der Vorschlag wie immer ist es, in seine zu tauchen Manpage Um das volle Potenzial zu meistern.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • So bauen Sie ein Paket mit dem Arch Linux Build -System wieder auf
  • Verschachtelte Schleifen in Bash -Skripten
  • Sofragen Sie Informationen mit dem RPM -Paket…
  • So aktualisieren Sie CentOs
  • Wie man von CentOS nach Almalinux migriert
  • Linux -Download