最近,我需要获取在我的Ubuntu系统上安装的并且被标记为“hold”状态的软件包列表。
软件包的“hold”状态意味着当操作系统升级时,安装程序不会自动升级这些软件包,除非在选项中明确指定。
我正在寻找一个命令行解决方案,但也了解到这可能在图形界面中实现。
软件包的“hold”状态意味着当操作系统升级时,安装程序不会自动升级这些软件包,除非在选项中明确指定。
我正在寻找一个命令行解决方案,但也了解到这可能在图形界面中实现。
apt-mark
:apt-mark showhold
showhold
showhold is used to print a list of packages on hold
dpkg -l | grep "^hi"
-l
的意思是列出所有的软件包,然后通过管道传递给 grep。"^hi"
的意思是搜索以 "hi" 开头的所有行,这是 "hold" 和 "installed" 的首字母缩写。dpkg -l
会列出状态、软件包名称、版本、架构和简短描述。dpkg -l | grep --invert-match "^ii"
来检查我的系统。这个命令会列出所有未按照正常安装的软件包。 - DJCrashdummyri
而不是ii
。所有这些问题都可以通过sudo apt install --reinstall package-name
来修复。你知道是什么原因导致了这些问题吗? - Mikko Rantalainendpkg -l
的输出顶部,你会看到一些关于输出的解释... ii
表示该软件包当前已经安装(第二个字母),并且应该保持安装(第一个字母)。ri
表示该软件包当前已经安装(第二个字母),但应该被移除/卸载(第一个字母),但保留配置。- 所以我不确定你要“修复”什么。**||** 真正的错误会通过第三个字母来指示,或者如果第二个字母是 F
或 H
,我也会进一步调查一下。 - DJCrashdummyri
,而我并没有请求将该包裹移除? - Mikko Rantalainendpkg --get-selections
。dpkg --get-selections | grep "\<hold$"
dpkg --get-selections
列出所有已安装软件包的状态,grep "\<hold$"
只显示以单词"hold"结尾的行。
如果你正在寻找异常情况,特别是如果上述未显示任何有用信息,以下内容可能也会有所帮助。
dpkg --get-selections | grep --invert-match "\<install$"
在apt-mark版本> 2.4中,您必须使用以下命令:
apt-mark showhold
aptitude
输入 u 更新软件包,然后按下 g,您将看到被保留的软件包。
sudo apt-mark unhold $(apt-mark showhold)
sudo apt-mark unhold $(apt-mark showhold)
- sondra.kinsey