如何获取升级阻止的已安装软件包列表?

Par*_*rag 70 package-management

最近,我需要获取安装在我的 Ubuntu 系统上的软件包列表,这些软件包也被搁置以进行升级。

包的“保留”状态意味着当操作系统升级时,安装程​​序也不会升级这些包,除非在选项中明确说明。

我正在寻找命令行解决方案,但我知道这也可能从 GUI 中实现。

hee*_*ayl 88

您可以使用apt-mark

apt-mark showhold
Run Code Online (Sandbox Code Playgroud)

这将显示保持在“保持”状态的包,以便 pacakge 管理器不会自动升级包。

来自man apt-mark

showhold
           showhold is used to print a list of packages on hold
Run Code Online (Sandbox Code Playgroud)

  • 除了系统抱怨保留的包裹外,什么也没有显示。必须是更根本的方式。 (3认同)
  • 刚刚升级到,然后全新安装了 xubuntu 20.04.1 桌面。我有同样的经历 --> “ lib32z1 : Depends: libc6-i386 (>= 2.4) but it is not going to be installed E: 无法纠正问题,您持有损坏的软件包。” apt-mark showhold 返回 null (2认同)

Par*_*rag 20

使用 dpkg

dpkg -l | grep "^hi"
Run Code Online (Sandbox Code Playgroud)

-l办法列出所有的包被,然后用管道输送到grep的。

正则表达式"^hi"意味着搜索所有以“hi”开头的行,这些行是“hold”和“installed”的首字母。

默认情况下,dpkg -l将列出状态、包名称、版本、架构和简短描述。

  • 用于在出现可疑情况时检查我的系统`dpkg -l | grep --invert-match "^ii"` 时不时地帮助我。- 这列出了所有未按应有方式安装的软件包。 (3认同)

DJC*_*mmy 7

作为替代方案,您还可以使用dpkg --get-selections

dpkg --get-selections | grep "\<hold$"
Run Code Online (Sandbox Code Playgroud)

dpkg --get-selections列出所有已安装软件包的状态,并且grep "\<hold$"仅显示以单词“hold”结尾的行。

也许也很有趣,如果您正在寻找违规行为 - 特别是如果上面没有显示任何内容(有用),那么

dpkg --get-selections | grep --invert-match "\<install$"
Run Code Online (Sandbox Code Playgroud)

这显示了所有未安装的行/包。