易于

易于

我希望我的 cron-run 报告脚本能够在我的软件包有更新时通知我。有没有一种方法可以apt-get给我提供可用更新列表但不再执行任何操作?

答案1

易于

对于现代版本,apt有一个特定的开关:

apt list --upgradable

apt-get

对于旧apt-get命令,-u开关显示可升级的软件包列表:

# apt-get -u upgrade --assume-no

来自apt-get手册页:

-u
--显示升级
 显示升级后的套餐;打印出所有要升级的软件包的列表。配置项:APT::Get::Show-Upgraded。
--假设-否  对所有提示自动说“否”。 <== 阻止它开始安装

答案2

apt-get --just-print upgrade

读起来不太容易,下面是一个用于解析 apt-get 输出的 perl oneliner:

apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'

这应该输出类似:

PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9

希望它能帮助别人,

答案3

另一种选择,受到 enzotib 的启发:

aptitude search '~U' | wc -l

此命令将使用 aptitude 输出新包,然后使用 wc 来计算行数。

顺便说一句,我发现 enzotib 的解决方案没有单引号,~U对我来说不起作用。 (喘息,ZSH,能力0.6.8.2)

更新 :

使用新的 apt,您可以执行以下操作:

apt list --upgradeable

答案4

你可以运行

aptitude -F%p --disable-columns search ~U

或无证的

/usr/lib/update-notifier/apt-check -p; echo

另一种使用模拟的方法apt-get

apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }'

相关内容