RPM
Siehe auch
Der RPM Package Manager (wobei RPM ursprünglich „Red Hat Package Manager“ bedeutete) ist ein initial von Red Hat entwickeltes Paketverwaltungs-System. RPM bezeichnet das Paketformat an sich und alle nötigen Programme, um RPM-Pakete zu erstellen und verwalten. yum und dnf sind demnach erweiterte rpm-Tools, um RPM-Dateien aus RPM-Repositories (Datenbanken im weitesten Sinne) herunterzuladen, zu installieren und dabei Paket-Abhängkeiten aufzulösen.
Umgang mit RPM
Paket entfernen:
rpm --erase packagename
Paket nur aus der RPM-Datenbank entfernen:
rpm --erase --justdb packagename
Wer von rpm
wissen möchte, ob ein Paket bereits installiert wurde, verwendet den Parameter -q
:
rpm --query bridge-utils
Welche Dateien wird eine RPM-Datei installieren?
rpm --query --list --package packagename.rpm
Wie extrahiert man die Dateien aus einem RPM, ohne sie zu installieren? Durch Umwandlung in ein .tgz
- oder in ein cpio
-Archiv, wobei erstes bevorzugt wird.
# get the rpm file
rpm2archive packagename.rpm; tar xvz packagename.rpm.tgz
rpm2cpio packagename.rpm | cpio --extract --make-directories --preserve-modification-time --verbose
So zieht man die Sourcen eines Paketes, beispielsweise von Nano:
yumdownloader --source nano
rpm2archive nano-2.3.1-10.el7.src.rpm
tar xvz nano-2.3.1-10.el7.src.rpm.tgz
Changelog zu einem Paket anschauen:
rpm --query --changelog curl
Wer wissen möchte, welche Dateien ein Paket mitliefert, kann repoquery
verwenden:
yum -y install yum-utils
repoquery --list packagename
Wer wissen möchte, welche Abhängigkeiten benötigt und installiert werden, nutzt:
repoquery --requires --resolve packagename
Liste alle installierten Pakete auf, die nicht vom CentOS-Projekt, sondern von Drittanbietern stammen:
rpm --query --all --queryformat '%{name} %{vendor}\n' | grep -Ev 'CentOS|none'
Troubleshooting
- Error in POSTIN scriptlet in rpm package qemu-guest-agent.
Das deutet auf eine korrupte rpm-Datenbank hin:
dnf history
error: rpmdb: BDB0113 Thread/process 258084/139857857010560 failed: BDB1507 Thread died in Berkeley DB library error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db5 - (-30973) error: cannot open Packages database in /var/lib/rpm Error: Error: rpmdb open failed
So wird das Problem behoben:
mkdir /var/lib/rpm/backup cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/ rm -f /var/lib/rpm/__db.[0-9][0-9]* rpm --quiet -qa rpm --rebuilddb dnf clean all
Built on 2023-03-17