有没有办法只打印可升级的软件包列表?
我正在使用 arch linux 的 pacman (yay)。
谢谢你的帮助
答案1
该包pacman-contrib
包含一个脚本,可以列出所有待处理的更新而不应用它们,称为checkupdates
. pacman-contrib 位于社区存储库中
checkupdates - 打印待处理更新的列表,而不触及系统同步数据库(为了滚动发布发行版的安全)。
答案2
首先,您需要更新本地包存储库数据库:
sudo pacman -Sy
或pacman -Sy
以 root 身份更新。然后 Pacman 从您配置的镜像中获取最新的数据库。 (这不是升级,这只是更新可用软件包版本的列表)
然后使用此命令列出可升级的软件包:
pacman -Qu
此命令将已安装的软件包版本与本地软件包存储库数据库中的可用版本进行比较。如果您跳过第一步(上面),这可能会产生一个空列表。
同样适用于 yay: yay -Sy; yay -Qu
。
重要提示:Arch 不支持部分升级和运行pacman -Sy
设置。看拱门维基以供参考。如果您使用这种方式检查可升级的软件包,请确保始终使用pacman -Su $package
.由于本地数据库中的软件包版本可能不再存在于镜像中,因此我建议在安装新软件包时始终升级系统。所以在我看来,最终这是工作流程的权衡和选择。当然,替代方案是提到的解决方案亚历克斯其中包括一个额外的包来实现您的要求,但不更新系统包数据库。
Pacman 是最好的包管理器之一(在我看来),而且大多数时候 Arch Linux Wiki 都是一个很好的信息来源:拱门维基
答案3
我从来没有使用过 yay,但是对于 pacman,你可以尝试这样的方法(请注意你不需要 sudo):
pacman -S -u -p --print-format %n,%v
要获得数字,您可以做同样的事情,只需将其通过管道传递到wc -l
打印逗号分隔的列表pkgnames,version
在 pacman 手册页中查找--print
&--printf