例如,如果我运行以下命令dpkg -l ‘*compiz*’
,输出如下:
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
+++-==============-============-============-=================================
pi compiz 1:0.9.12.2+1 all OpenGL window and compositing man
ii compiz-core 1:0.9.12.2+1 amd64 OpenGL window and compositing man
un compiz-core-ab <none> <none> (no description available)
[more output deleted]
输出有点神秘。关于 askubuntu 有几个详细的解释,example就是其中之一。同样,man dpkg
并man dpkg-query
给出类似的解释。
在上面的示例输出中,第一个字段中的第一个字符“p”表示所需的包状态。包装系统认为包装应该处于哪种状态。
期望状态的潜在含义是什么?即为什么包装管理系统知道包装应该处于什么状态?我可以看到,一个智能系统会推荐(或希望)一个包被清除,如果它只被用作一个已经删除的父包的依赖项。但是,在我们的示例中并非如此。
在我们的示例中,安装了“compiz”包,但是dpkg
认为应该清除它,或者至少希望清除该包,这是为什么呢?此外,这个特定领域一般如何运作?即系统如何决定一个包的“期望状态”以及这个功能的根本原因是什么?
我不知道您是否曾经使用过
aptitude
or之类的工具synaptic
,甚至更低级别的命令,例如:dpkg
等dpkg-purge
。使用诸如 之类的工具
aptitude
,我可以标记许多要删除的包,一些要清除,还有一些要安装、降级等,然后我可以运行一个命令来执行所有必要的事情来获得我想要的东西(触发待处理的操作)。所需字段用于确定我应该如何处理包。
让我们安装
axel
:现在让我们看看它的状态:
我可以将其标记为
purge
:现在所需的操作是:
我也可以使用其他工具将包标记为“清除”:
现在,如果我运行:
或者
它问我是否要删除
axel
...这些数据来自哪里: