ファイルシステムから読み取るだけで、インストールされている CentOS パッケージのリストを取得するにはどうすればよいですか?

ファイルシステムから読み取るだけで、インストールされている CentOS パッケージのリストを取得するにはどうすればよいですか?

私は画像を分析するためのツールを作成しており、画像のファイルシステムに完全にアクセスできます。

インストールされているすべてのパッケージの名前とバージョン情報のリストを作成したいのですが、VM を信頼していないため、実際に実行したくありません。

のようなコマンドがあることは知っていますrpm -qaが、ファイルを読み取るだけでデータを取得する方法がわかりません (rpm コマンドが実行しているのはこれです)。

どのような助けでも大歓迎です!

答え1

ファイルシステムから rpmdb を抽出できます: . の下にあるすべてのファイル/var/lib/rpm/

rpmその後、VMを実行せずにパッケージをクエリするために使用できます。rpmdb別の偽のファイルシステム内にあります。

これを試してみたところ、rpmデフォルトでは の下にあるデータベースを検索するようなので/usr/lib/sysimage/rpm、次の操作を実行しました。

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

ご覧のとおり、rpm別のマシンからデータベースをコピーしたので、そのパッケージをクエリできるようになりました。

関連情報