我正在尝试使用dpkg
工具列出我的计算机上安装了哪些软件包。使用该-l
选项,它会报告某些软件包的“un”,这意味着未知,“未安装”。 “未安装”标志是否意味着存在这样一个软件包,它可用于我正在运行的系统,但它不存在于我的计算机(本地)上,我必须.deb
从网络下载该文件并安装它?
答案1
我将首先解决根本问题:
dpkg -l | grep '^.i'
将列出所有已安装的软件包。其他工具也可以提供此信息;例如
apt list --installed
在dpkg -l
的输出中,“未安装”确实意味着dpkg
知道软件包的存在,即使它没有安装在您的系统上。包文件本身可能在您的系统上可用,例如在 的 APT 缓存中/var/cache/apt/archives
,但dpkg
s 不知道这一点。从dpkg
的角度来看,正如您所说,您必须下载软件包文件,或以其他方式获取它,然后安装它。
答案2
dpkg
打印un
(未知),因为其数据库未更新。您可以使用sync-available
fromdctrl-tools
包来同步dpkg
信息apt
。
sudo apt install dctrl-tools
sudo sync-available
sync-available - sync dpkg's available database with apt's database
DESCRIPTION
This program updates the dpkg(8) available database with the data in the apt(8)
package database. This is required for grep-available(1) and other similar
programs to give up-to-date results.