如何僅透過從檔案系統讀取來取得已安裝的 centos 軟體包清單?

如何僅透過從檔案系統讀取來取得已安裝的 centos 軟體包清單?

我正在編寫一個用於分析圖像的工具,並且可以完全存取圖像的檔案系統。

我想產生所有已安裝軟體包的列表,其中包含名稱和版本資訊。但是,我不想實際運行虛擬機,因為我不信任它。

我知道類似的命令rpm -qa,但不確定是否有任何方法可以從讀取檔案中獲取資料(這必須是 rpm 命令正在執行的操作)。

非常歡迎任何幫助!

答案1

您可以從檔案系統中提取 rpmdb:. 下的所有檔案/var/lib/rpm/

然後你仍然可以用來rpm查詢包,但不運行虛擬機器:如果你把它rpm資料庫在另一個假檔案系統中。

我嘗試了一下,似乎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從另一台機器複製了資料庫,現在我可以查詢它的套件。

相關內容