我必须提取 Ubuntu/Debian 上已安装软件包的列表,而无需使用命令或查看 dpkg.log?
基本要求是从软件包数据库文件(如果有)中获取 Debian/Ubuntu OS 上已安装软件包的列表,我可以从以下文件中获取可用软件包的列表,
/var/lib/dpkg/available
但这个文件包含了所有未安装的软件包。
Debian/Ubuntu 上是否有其他 db 文件仅包含已安装软件包的列表?
答案1
包含与命令提供的信息相同的信息的文件dpkg -l
是/var/lib/dpkg/status
。来自FILES
的部分man dpkg
:
/var/lib/dpkg/status Statuses of available packages. This file contains information about whether a package is marked for removing or not, whether it is installed or not, etc. See section INFORMATION ABOUT PACKAGES for more info. The status file is backed up daily in /var/backups. It can be useful if it's lost or corrupted due to filesystems troubles. The format and contents of a binary package are described in deb(5).
但是你的“w/o 命令”要求没有什么意义,因为你需要编写一个命令来解析它。例如
awk -vRS= '/Status: install/ {print $2}' /var/lib/dpkg/status
大致相当于dpkg -l | awk '$1 == "ii" {print $2}'
(它们在排序顺序和一些可能的架构后缀上会有所不同,如:amd64
)。