Wie kann ich eine Liste der installierten CentOS-Pakete erhalten, indem ich nur aus dem Dateisystem lese?

Wie kann ich eine Liste der installierten CentOS-Pakete erhalten, indem ich nur aus dem Dateisystem lese?

Ich schreibe ein Tool zur Bildanalyse und habe vollen Zugriff auf das Dateisystem eines Bildes.

Ich möchte eine Liste aller installierten Pakete mit Name und Versionsinformationen erstellen. Allerdings möchte ich die VM nicht wirklich ausführen, da ich ihr nicht vertraue.

Ich kenne Befehle wie diesen, rpm -qabin mir aber nicht sicher, ob ich die Daten nur durch das Lesen von Dateien abrufen kann (was wohl der RPM-Befehl macht).

Jede Hilfe ist herzlich willkommen!

Antwort1

Sie könnten die RPMDB aus Ihrem Dateisystem extrahieren: alle Dateien darunter /var/lib/rpm/.

Dann könnte man immer noch rpmdie Pakete abfragen, aber ohne die VM auszuführen: Wenn man das einfügtrpmdbin einem anderen gefälschten Dateisystem.

Ich habe dies ausprobiert. Es scheint, als ob rpmdie Datenbank standardmäßig unter durchsucht wird /usr/lib/sysimage/rpm. Daher habe ich Folgendes getan:

mkdir -p /tmp/fakeroot/usr/lib/sysimage/rpm/
scp other-machine:/var/lib/rpm/* /tmp/fakeroot/usr/lib/sysimage/rpm/
rpm --root /tmp/fakeroot -qa

wie Sie sehen, habe ich die rpmDatenbank von einem anderen Computer kopiert und kann jetzt ihre Pakete abfragen.

verwandte Informationen