1)第一个问题
如何列出真的在 ubuntu 中安装了软件包吗?
dpkg --get-selections
(几乎所有论坛中写的命令)的问题在于,它的第二列(即install
/ deinstall
)完全取决于先前发出的命令(我的意思是dpkg --set-selections
和dpkg --clear-selections
),但不取决于包的实际状态(是否安装)。
2)第二个问题
我(调查上述问题)偶尔执行命令 - dpkg --clear-selections
,现在几乎所有包都处于deinstall
状态。那么我如何更新包的状态(并使它们与输出的状态一致aptitude show <pkg_name>
)?
答案1
要获取已安装包的列表,请运行以下命令:
dpkg -l | grep -c ^.i
dpkg -l
将列出所有可用的软件包,第一个字段由状态代码组成。具体来说(来自man dpkg
):
The first three columns of the output show the desired action,
the package status, and errors, in that order.
Desired action:
u = Unknown
i = Install
h = Hold
r = Remove
p = Purge
Package status:
n = Not-installed
c = Config-files
H = Half-installed
U = Unpacked
F = Half-configured
W = Triggers-awaiting
t = Triggers-pending
i = Installed
Error flags:
<empty> = (none)
R = Reinst-required
因此,第二个字符为 的行i
描述已安装的软件包。因此,传递输出grep -c ^.i
将返回第二个字符为 的行数i
,即您当前已安装的软件包数。