我执行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
从该描述来看,ii意味着所需的操作是安装并且该软件包已安装。这让我感到困惑,因为我希望如果已经安装了软件包,我不需要采取任何行动。
该输出到底告诉我什么?我需要更新软件包,还是已经更新?
正如你所说,
这意味着包的期望状态是“已安装”,并且包的当前状态是“已安装”。由于两者都匹配,因此无需更改。action 列没有指定你需要采取的行动,它指定了打包系统应该采取的行动——实际上,这表明你已经要求打包系统直接或间接地安装这些包(通过依赖项) .
它没有说明包是否是最新的;你需要看看输出
来确定。
dpkg-query
仅查看 中的本地包数据库/var/lib/dpkg/status
,因此不知道其他包版本。APT 是处理包存储库并知道哪些版本的包可用(以及安装的候选者)的工具。它在您包含在问题中的手动摘录中说,它在输出的标题中说。
标题
手动(编辑以消除干扰)
可能是您在手册中误解了 column 的含义。它们在这里表示单个字符。我也认为手册有一个小错误。它说
desired action
,但我认为它的意思desired state
。