GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren/entfernen/abfragen/aktualisieren Sie RPM-Pakete unter Linux (Spickzettel)

Wartung von Software mit RPM (Red Hat Package Manager)

RPM ist ein leistungsstarker Software-Manager, der zum Erstellen, Installieren, Abfragen, Überprüfen, Aktualisieren und Deinstallieren einzelner Softwarepakete verwendet werden kann. Ein RPM-Paket besteht aus einem Archiv von Dateien und Paketinformationen wie Name, Version, einer Beschreibung und Informationen über Abhängigkeiten von anderen RPM-Paketen.

RPM ist mehr als ein Red Hat-spezifisches Tool. Viele andere moderne Distributionen wie Ubuntu und SuSE verwenden ebenfalls RPM. Zu den Vorteilen der Verwendung von RPM gehören:

  • Vereinfachte Softwareverteilung, -installation, -aktualisierung und -entfernung
  • Garantiert, dass:
    • Erforderliche Software ist auf dem System installiert.
    • Versionen der vorausgesetzten Software bleiben kompatibel.
    • Lokal modifizierte Konfigurationsdateien werden nicht geblockt, wenn das RPM aktualisiert wird.
    • Lokal modifizierte Konfigurationsdateien werden mit dem Suffix „.rpmsave“ gespeichert, wenn das Paket später gelöscht wird.
  • Ermöglicht die Zertifizierung, dass die installierte Software nicht geändert, modifiziert, beschädigt oder in irgendeiner Weise verändert wurde.

RPM speichert Informationen über installierte Pakete unter der Datei „/var/lib/rpm ” Verzeichnis.

Bestandteile des RPM-Tools sind:

  • Eine benutzerdefinierte Datenbank mit Informationen über die gesamte auf dem System installierte Software, gesammelt von den einzelnen RPMs.
  • Eine ausführbare „/bin/rpm“-Datei.
  • Über das Internet zugängliche Repositories verfügbarer RPM-Pakete.

Arten von RPM-Paketen

RPM-Pakete gibt es in zwei Kategorien:Quelle und binär .

Ein Quell-RPM ist immer daran zu erkennen, dass der Dateiname mit der Zeichenfolge „.src.rpm endet “. In einem Quell-RPM befinden sich nicht nur die ursprünglichen Quellcodedateien des Programms, sondern auch Skripte, die es ermöglichen, den Code automatisch neu zu kompilieren, automatisch zu installieren und automatisch zu entfernen. Es gibt keine ausführbaren Endbenutzerdateien in einem Quell-RPM. Normalerweise sind nur Entwickler an einem Quell-RPM interessiert.

Ein binäres RPM enthält die Endbenutzerkomponenten eines RPM. Binäre RPM-Dateinamen identifizieren die Hostarchitektur für die Inhalte. Zum Beispiel die binäre RPM-Datei:

bash-3.1-16.1.x86_64.rpm

Es enthält Dateien, die nur auf einer 64-Bit-CPU mit Intel X86-Architektur verwendet werden können. Andere gängige Architekturwerte sind „i386“ für 32-Bit-Intel-Hosts. Einige binäre RPMs können auf jeder CPU-Architektur installiert werden, da ihre Dateien auf jedem Host funktionieren; Ein Beispiel für diese „.noarch.rpm“-Pakete ist das „tzdata“-RPM, das Informationen über Weltzeitzonen enthält. Um Ihr System mit der neuesten Version eines Pakets zu aktualisieren, benötigen Sie das neueste binäre RPM dafür.

RPM-Namensschema

Jedes RPM-Paket ist in einer einzelnen Datei enthalten. Der Dateiname hat mehrere Felder, um den Inhalt des Pakets vollständig zu identifizieren. Während sich die RPM-Tools selbst nicht auf den Dateinamen selbst verlassen, sollten Sie die Dateinamenskonvention verstehen, damit Sie das richtige Paket identifizieren oder herunterladen können. Hier ist ein Beispiel für einen RPM-Dateinamen:

bash-3.1-16.1.x86_64.rpm

Dieses RPM ist für die BASH-Shell („/bin/bash“). Der Dateiname setzt sich aus mehreren Teilen zusammen:

[name]-[version]-[release].[arch].rpm

wo:

    [Name] ist der Name des Programms oder Pakets. Der [Name] wird normalerweise vom Autor des Programms vergeben. In unserem Beispiel entschieden sich die Entwickler aus Gründen, die ihnen amüsant erschienen, ihr Produkt „bash“ zu nennen.
  • Version] gibt an, welche Edition der Software dieses RPM enthält. Die [Versions]-Nummer wird vom Autor des Programms vergeben. Anhand der -Nummer lässt sich feststellen, welche Version der Quellen des Autors zur Generierung des RPM verwendet wurde.
  • [Veröffentlichung] liefert die Editionsnummer der RPM-Datei selbst und nicht die Version der Quelldateien des Autors. Ein aktualisiertes RPM kann herausgegeben werden, um eine gepatchte Version der Originalsoftware des Autors bereitzustellen. Der Patch muss nicht vom ursprünglichen Entwickler stammen, daher wird RPM [Release] statt [Version] inkrementiert.
  • [arch] beschreibt den Inhalt des RPM und gibt an, ob diese Datei die Produktquelle (eine „.src.rpm“), architekturunabhängige Dateien (eine „.noarch.rpm“) oder Dateien enthält, die nur auf einem bestimmten Host installiert werden dürfen Typ (ein „.sh.rpm“ funktioniert nur auf einem eingebetteten STRONGHOLD-Prozessor).
Hinweis :Die [Version] wird vom ursprünglichen Autor kontrolliert und die [Veröffentlichung] wird von dem kontrolliert, der das RPM erstellt hat.

RPM-Versionen verstehen

Die RPM-Felder [Version] und [Release] sind nicht immer streng numerisch und können neben gewöhnlichen Ziffern auch andere Zeichen enthalten. Es ist üblich, sowohl eine Version „10“ als auch eine „10a“-Version desselben Pakets zu sehen. Manchmal kann es schwierig sein, die neueste Version auszuwählen. So vergleicht RPM selbst Versions- und Release-Nummern intern:

1. Entfernen Sie das Präfix [name] und das Suffix „.[arch].rpm“. Beispiel:
„bash-3.1-16.1.x86_64.rpm“ wird zu „3.1-16.1“ und „bash-3.1-16.5a.1.x86_64.rpm“ wird zu „3.1-16.5a.1“

2. Vergleichen Sie die verbleibenden Zeichenfolgen Zeichen für Zeichen von links nach rechts, bis eine Ziffer gefunden wird. Wenn sich die Zeichen unterscheiden, ist das spätere Zeichen in der Sortierfolge die neuere RPM.

3. Wenn Sie auf eine Ziffer stoßen, wandeln Sie die gesamte Ziffernfolge in eine einzige Binärzahl um. In unserem Beispiel werden die beiden Zeichen „16“ zu einem Wert von sechzehn (16) kombiniert. Die resultierenden Binärwerte werden verglichen und der größere Wert ist die neuere Drehzahl. Daher ist eine RPM mit einer [Version] von „0010“ aktueller als eine mit einer [Version] von „9“.

Die Schritte 2 und 3 werden nach Bedarf wiederholt, bis ein Unterschied auftritt.

Dateien installieren und entfernen

Hinweis :Normalerweise darf nur eine oder eines RPMs gleichzeitig installiert werden.

Spätere Versionen werden normalerweise mit dem Befehl „-U installiert ” (Update) RPM-Funktion anstelle des “-i ” RPM-Funktion. Häufige Ausnahmen von der Nur-ein-RPM-Regel sind die Kernel-RPMs. Auf einem System sind üblicherweise mehrere Kernel-Versionen installiert; RPM hat eine Liste, von welchen RPMs möglicherweise mehrere Versionen installiert sind. Um eine Version zu löschen, wenn mehrere installiert sind, müssen Sie den Paketnamen und die Version vollständig angeben.

Auf der x86_64-Architektur ist es üblich, dass sowohl die 32-Bit-RPM-Pakete „.i386“ als auch die 64-Bit-RPM-Pakete „.x86_64“ installiert sind, um sowohl 32-Bit- als auch 64-Bit-Anwendungen zu unterstützen. Normalerweise zeigt RPM die Architektur eines Pakets bei einer Abfrage nicht an, aber Sie können sie manuell anzeigen.

Installation und Entfernung

# rpm -i --install (install new RPM; error if already installed)
# rpm -U --upgrade (delete existing RPM, if any; install new)
# rpm -F --freshen (update RPM only if package already installed)
# rpm -e --erase (remove, delete, expunge)

Allgemeine Optionen
Ausgabe:-v (verbose – Dateiname), -h (Hash)
Voraussetzungen:–nodeps, –replacefiles, –force (SEIEN SIE HIER VORSICHTIG!!!)
Umzug:–excludepath, –prefix, –relocate, –badreloc, –root
URL-Unterstützung:ftp, http

Beispiele:

# rpm -ivh binutils-2.11.90.0.8-12.i386.rpm
# rpm -Uvh finger-0.17-9-i386.rpm
# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
# rpm -e diffutils
# rpm -e kernel-enterprise-2.4.9-e.12

Hinweis Hinweis:Verwenden Sie niemals die Option „-U“, um ein neues Kernel-RPM zu installieren. Die Update-Funktion „-U“ löscht zuerst das aktuelle RPM vom System und versucht dann, das neue RPM zu installieren. Jedes Problem, das die Installation des neuen RPM verhindert, führt dazu, dass das System nicht mehr bootfähig ist. Das ist nicht das, was Sie wollen, verwenden Sie also immer den „-i“-Schalter, um ein Kernel-RPM zu installieren.

Abfragen (Pakete und/oder Informationen)

Verwenden Sie eine Abfrage für Informationen zu installierten Paketen. Sie können alle installierten Pakete oder ein einzelnes installiertes Paket abfragen. Sie können auch herausfinden, welches RPM eine bestimmte Datei bereitstellt.

# rpm -q [packages] [information]
# rpm -qa (all installed packages)
# rpm -q package_name
# rpm -qf (filename)
# rpm -qp (package filename)

Informationen
Standard (Paketname)
-i :Allgemeine Informationen
-l :Dateiliste

Beispiele:

# rpm -qa
# rpm -q kernel -i (information)
# rpm -q kernel -l (files contained in package)
# rpm -q kernel --requires (prereqs)
# rpm -q kernel --provides (capabilities provided by package)
# rpm -q kernel --scripts (scripts run during installation and removal)
# rpm -q kernel --changelog (revision history)
# rpm -q kernel -queryformat format (rpm --querytags for list of options)

Hinweis :Bei der Suche nach einem bestimmten RPM-Paket, wenn der genaue Name nicht bekannt ist, wird eine Befehlspipeline wie:

$ rpm -qa | grep foo

wird häufig verwendet. Spätere Versionen des RPM-Tools ermöglichen dies kurz und knapp wie folgt:

$ rpm -qa '*foo*'

Abfragen – Überprüfung (Dateien)

Die RPM-Datenbank enthält viele Attribute zu jeder einzelnen Datei, die von einem RPM installiert wird. Sie können den aktuellen Status der Datei anhand der Informationen überprüfen, die von RPM katalogisiert wurden, als das Paket installiert wurde.

# rpm -V package_name
# rpm -Va (verify all)
# rpm -Vf (filename)
# rpm -Vp (package filename)
Hinweis :Viele Linux-Distributionen enthalten ein „Prelink“-RPM, das versucht, die Zeit zu verkürzen, die zum Starten einer Anwendung mithilfe einer gemeinsam genutzten Bibliothek erforderlich ist (die meisten Anwendungen verwenden mindestens eine gemeinsam genutzte Bibliothek und möglicherweise Dutzende), indem spezielle Informationen direkt in die Programmdatei einer Anwendung eingefügt werden.

Das Hinzufügen dieser Informationen führt zwar dazu, dass Anwendungen schneller starten, aber die Dateiänderungen machen die meisten Dateiattribute in der RPM-Datenbank ungültig, wie z. B. das Datum der letzten Dateiänderung, die Dateigröße und die MD5-Prüfsumme der Datei.

Abfragen – Verifizierung (Pakete)

# rpm -import /mnt/cdrom/RPM-GPG-KEY
# rpm -q gpg-pubkey
# rpm --checksig m4-1.4.1-11.i386.rpm

Beispiele:

# rpm -qf /path/filename (what package owns filename)
# rpm -qf /path/filename -i (what does it do)
# rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4)
# rpm -qp m4-1.4.1-11.i386.rpm --requires (prereqs needed to install m4)
# rpm -q --whatprovides glibc.so (what package provides requisite library)

Reparieren Sie die RPM-Datenbank

Das RPM-Tool verwendet seine eigene benutzerdefinierte Datenbankimplementierung, um seine Informationen aufzunehmen. Manchmal kann diese Datenbank beschädigt werden; Zu den Symptomen gehören Behauptungen, dass ein installiertes RPM-Paket fehlt; oder Versuche, ein RPM zu aktualisieren, hängen einfach. Wenn Ihre RPM-Datenbank hängt oder beschädigt ist, können Sie versuchen, sie mit diesen Befehlen zu reparieren. Es kann nicht garantiert werden, dass dieser Vorgang funktioniert.

Für diese Schritte müssen Sie mit Superuser-Rechten (auch bekannt als „root“) angemeldet sein. Die Befehle können kopiert und direkt in ein Root-Terminalfenster eingefügt werden.

1. Stellen Sie sicher, dass auf Ihrem System keine RPM-Prozesse mehr ausgeführt werden. Verwenden Sie den Befehl ps, um sie zu identifizieren. Verwenden Sie den kill-Befehl, um alle „rpm“-Prozesse zu beenden, die Sie finden; ein „kill -9“ kann notwendig sein.

2. Löschen Sie die von RPM verwendeten Sperrdateien:

# rm -f /var/lib/rpm/__db*

3. Wenn Sie einen hängenden „rpm“-Befehl erlebt haben, versuchen Sie es erneut. Wenn es funktioniert, sind Sie fertig. Wenn nicht, führen Sie die Schritte 1 und 2 erneut aus. Fahren Sie dann mit dem nächsten Schritt fort.

4. Erstellen Sie eine Sicherungskopie Ihrer RPM-Datenbank:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Erstellen Sie Ihre RPM-Datenbank neu:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Wiederholen Sie Ihren fehlgeschlagenen RPM-Befehl.


Linux
  1. Wie man RPM-Pakete baut

  2. So aktivieren Sie Snap unter Linux Mint 20 und installieren Snap-Pakete

  3. So installieren, entfernen und aktualisieren Sie Software unter Arch Linux

  4. So installieren Sie Pakete aus einem bestimmten Repository in Linux

  5. So installieren Sie RPM-Pakete auf Ubuntu

Entfernen Sie Pakete, die an einem bestimmten Datum/einer bestimmten Uhrzeit in Linux installiert wurden

So installieren Sie Software von der Quelle in Linux

So installieren und entfernen Sie Software in Manjaro Linux

So installieren Sie die Arduino-Software (IDE) unter Linux

So installieren Sie Windows-Software unter Linux mit Bottles

So installieren Sie wget unter CentOS 7 mit einem wget-Spickzettel