标头

标头

我执行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

相关内容