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

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

最近,我需要获取安装在我的 Ubuntu 系统上且因升级而被搁置的软件包列表。

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

我正在寻找一个命令行解决方案,但了解这也可能通过 GUI 实现。

答案1

您可以使用apt-mark

apt-mark showhold

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

man apt-mark

showhold
           showhold is used to print a list of packages on hold

答案2

使用 dpkg

dpkg -l | grep "^hi"

-l列出所有包然后将其通过管道传输到 grep 的方法。

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

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

答案3

或者你也可以使用dpkg --get-selections

dpkg --get-selections | grep "\<hold$"

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

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

dpkg --get-selections | grep --invert-match "\<install$"

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

答案4

要取消保留所有保留的包裹,请使用

sudo apt-mark unhold $(apt-mark showhold)

相关内容