我想弄清楚 Ubuntu (14.04/16.04) 系统上安装的每个软件包/软件。
根据我的理解以及关于 SE 和其他地方的几次讨论,比如unix_stack_exchange 询问ubuntu,看起来系统上安装了任何软件包/软件,最终都会使用 dpkg (无论是软件包本身还是它的依赖项)。
- 那么这是否意味着 dpkg 总是会比 apt-get 提供系统上安装的所有软件包(包括依赖项等)更全面的列表?
- 可以安全地假设 dpkg 可用于列出系统上安装的所有软件(用户/系统/等应用程序)吗?
答案1
dpkg -l
将始终给出已安装(或已删除但仍配置)的软件包的正确列表。它实际上用来dpkg-query
完成它的工作,引用的内容/var/lib/dpkg/status
是这已安装软件包的参考。
apt
使用相同的信息,但直到最近才提供列出软件包的简单方法;现在这样做,您将得到与(以不同格式)apt list
给出的相同结果。dpkg -l
dpkg
可以用来列出所有套餐。如果系统上的所有软件都是使用软件包安装的,那么它会列出所有软件;但如果任何软件是手动安装的,没有软件包,那么它就不会知道。
答案2
您可以使用apt
选项 ( man apt-cache
, man apt
..) 来获取所需的信息
dpkg
应该被视为一个系统工具(后端),并且apt
被视为一个更接近用户的工具,它克服了前者的局限性。这些工具协同工作,每种工具都有其特殊性,适合特定的任务。
dpkg
e,g 1:您可以通过或列出系统上已安装的软件包apt
:
apt list --installed
dpkg -l
e,g 2:要找出可以使用的依赖项apt-rdepends
,或者apt-cache showpkg
...
apt-rdepends <package_name>
apt-cache showpkg <package_name>