我执行dpkg-query -l libgtk2.0-0 libgtk-3-0
查找这些包的版本,并得到以下输出。
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==========================-==================-==================-==========================================================
ii libgtk-3-0:amd64 3.22.30-1ubuntu1 amd64 GTK+ graphical user interface library
ii libgtk2.0-0:amd64 2.24.32-1ubuntu1 amd64 GTK+ graphical user interface library
我从中man dpkg-query
得到了第一列的以下描述。
输出的前三列按顺序显示所需的操作、包状态和错误。
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
从那个描述来看,二意味着期望的行动是安装并且该软件包已安装。这让我很困惑,因为我希望如果已经安装了该软件包,我不需要采取任何操作。
该输出到底告诉我什么?我是否需要更新软件包,或者它已经更新了吗?
答案1
正如你所说,
从那个描述来看,二意味着期望的行动是安装但该软件包已安装。
这意味着包的所需状态是“已安装”,并且包的当前状态是“已安装”。由于两者匹配,因此无需更改。操作列未指定操作你需要采取的操作,它指定了打包系统应该采取的操作 - 实际上,这表明您已要求打包系统直接或间接安装这些软件包(通过依赖项)。
它没有说明该软件包是否是最新的;你需要看看的输出
apt policy libgtk2.0-0 libgtk-3-0
来确定这一点。
dpkg-query
只查看 中的本地包数据库/var/lib/dpkg/status
,因此它不知道其他包版本。 APT 是处理软件包存储库并了解软件包的哪些版本可用(以及可供安装的候选版本)的工具。
答案2
它在您包含在问题中的手动摘录中说,它在输出的标题中说。
标头
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/
手册(经过编辑以消除干扰)
Desired action:
i = Install
Package status:
i = Installed
您可能误解了手册中列的含义。它们在这里指的是单个字符。另外我认为手册有一个小错误。它这么说desired action
,但我认为是这个意思desired state
。