对于很少的软件包,我想知道apt-get update
如果有新版本可用,是否已经有一些选项可以做到这一点?
我正在考虑使用apt.conf
,Post-Invoke
但尚未采取任何行动。
答案1
您可以使用apt-show-versions
(在同名包中);跑步
apt-show-versions -u
将列出系统上安装的所有可用更新版本的软件包(使用 的apt
数据库,因此您需要apt-get update
按照您提到的方式运行)。
您可以将包列为参数,以apt-show-versions
将列表限制为仅包含这些包;因此,运行
apt-show-versions -u ${YOUR_WATCHED_PACKAGES}
之后apt-get update
将向您显示您要查找的信息。Post-Invoke
正如您提到的,您可以使用它来实现自动化。
答案2
一种简单的方法是运行:
apt-get -s --only-upgrade install package1 package2 ...
您可以将其放入从文件构建包列表的脚本中,运行apt-get update
然后运行上面的命令。
答案3
-u
所以,我现在最终得到了下面的东西,它似乎有效,如果支持更多的软件包就好了,看着很多可能会变得很慢。
/etc/apt/watch
一个文本文件,其中一行包含一个包名称(支持 # 条注释)
/usr/local/bin/apt-watch.sh
:
#!/bin/sh
test -f /etc/apt/watch || exit 0
apt-show-versions -u $(grep -v ^# /etc/apt/watch) >/tmp/apt.watch
if [ $(cat /tmp/apt.watch | wc -l) -gt 0 ] ; then
cat /tmp/apt.watch | mail root -s '[apt watch] upgrades available'
fi
/etc/apt/apt.conf.d/99-apt-watch
:
# check upgrades avaiable for watched packages
APT::Update::Post-Invoke { "[ ! -x /usr/local/bin/apt-watch.sh ] || /usr/local/bin/apt-watch.sh || true"; };