William Overton Asked: 2019-08-17 00:53:57 +0800 CST2019-08-17 00:53:57 +0800 CST 2019-08-17 00:53:57 +0800 CST 如何仅通过读取文件系统来获取已安装的 centos 软件包列表? 772 我正在编写一个用于分析图像的工具,并且可以完全访问图像的文件系统。 我想生成一个包含名称和版本信息的所有已安装软件包的列表。但是,我不想实际运行 VM,因为我不信任它。 我知道像这样的命令,rpm -qa但不确定是否有任何方法可以仅从读取文件中获取数据(这一定是 rpm 命令正在做的事情)。 非常欢迎任何帮助! linux centos 1 个回答 Voted Best Answer Chris Maes 2019-08-17T01:18:02+08:002019-08-17T01:18:02+08:00 您可以从您的文件系统中提取 rpmdb: 下的所有文件/var/lib/rpm/。 然后你仍然可以使用rpm查询包,但不运行虚拟机:如果你把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从另一台机器上复制了数据库,现在我可以查询它的包了。
您可以从您的文件系统中提取 rpmdb: 下的所有文件
/var/lib/rpm/
。然后你仍然可以使用
rpm
查询包,但不运行虚拟机:如果你把rpmdb放在另一个假文件系统中。我试过了,似乎
rpm
默认搜索它的数据库/usr/lib/sysimage/rpm
,所以我做了以下事情:如你所见,我
rpm
从另一台机器上复制了数据库,现在我可以查询它的包了。