我希望我的 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 }'