jas*_*yan 310
对于现代版本,apt有一个特定的开关:
apt list --upgradable
对于旧apt-get命令,-u开关显示可用于升级的软件包列表:
# apt-get -u upgrade --assume-noRun Code Online (Sandbox Code Playgroud)
-u
--show-upgraded 显示升级包;打印出所有要升级的包的列表。配置项:APT::Get::Show-Upgraded。
--assume-no 对所有提示自动“否”。<== 防止它开始安装
Tom*_*Tom 71
apt-get --just-print upgrade
Run Code Online (Sandbox Code Playgroud)
不是那么容易阅读,下面是一个 perl one liner 来解析 apt-get 的输出:
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"}'
Run Code Online (Sandbox Code Playgroud)
这应该输出如下内容:
PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9
Run Code Online (Sandbox Code Playgroud)
希望它会帮助别人,
小智 40
另一种选择,受 enzotib 启发:
aptitude search '~U' | wc -l
此命令将使用 aptitude 输出新包,然后使用 wc 来计算行数。
在旁注中,我发现 enzotib 没有单引号的解决方案~U对我不起作用。(喘息,ZSH,资质 0.6.8.2)
更新 :
使用新的 apt,您可以执行以下操作:
apt list --upgradeable
enz*_*tib 21
你可以跑
aptitude -F%p --disable-columns search ~U
Run Code Online (Sandbox Code Playgroud)
或无证
/usr/lib/update-notifier/apt-check -p; echo
Run Code Online (Sandbox Code Playgroud)
另一种使用apt-get模拟的方法:
apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }'
Run Code Online (Sandbox Code Playgroud)
f4m*_*4m8 12
看看包“apticron”:
apticron - 邮寄有关待定软件包更新的简单工具
Apticron 是一个简单的脚本,它每天发送有关待处理软件包更新(例如安全更新)的电子邮件,通过 dselect 和 aptitude 正确处理保留的软件包。
https://packages.debian.org/buster/apticron
小智 12
apt-get update && apt-get -s upgrade
Run Code Online (Sandbox Code Playgroud)
将列出可用更新而无需实际安装。
第一个命令在模拟(因此 -s)升级完成之前更新包索引文件。“-s”将进行模拟升级,显示将安装但实际上不会安装任何内容的数据包。
相反,“-u”而不是“-s”将在确认后实际安装。
小智 10
我需要有关可能升级的完整版本信息,所以我使用了 jasonwryan 答案的修改:
apt-get -V -u upgrade
Run Code Online (Sandbox Code Playgroud)
它很简单,而且 IMO 的输出格式合理。
apt-get update > /dev/null && apt-get --just-print upgrade | grep "Inst "
Run Code Online (Sandbox Code Playgroud)
对于 cron 电子邮件来说是最简单的;没有用户迭代,如果没有更新,就没有输出。
| 归档时间: |
|
| 查看次数: |
392947 次 |
| 最近记录: |