我希望能够列出自上次运行脚本/命令以来已升级的软件包中的所有新闻。然后,这可能会在 cron 作业中每周运行一次,以提供任何升级信息的摘要。
该apt-listchanges
命令看起来像我想要的,但我似乎无法让它完全按照我所描述的方式运行。我尝试运行的命令是:
apt-listchanges -f text -a --which=news --save_seen=/var/lib/apt/listchanges.db /var/cache/apt/archives/*.deb
它似乎希望列出实际的包,而不是默认检查所有包,所以我将所有内容都放在了缓存中,我不确定这是否是最好的方法。
但是,更大的问题是,默认情况下它只显示当前安装版本之间的更改,因此不显示任何更改。因此,我添加了 -a 选项来显示所有更改,然后添加了 save_seen 选项,该选项声称它将停止显示之前显示的更改。但是,每次我运行该命令时,它都会显示所有更改。
有没有办法调整命令以使其按预期工作?或者,也许还有其他解决方案,例如使用 apt hook 将每个升级包的新闻附加到文件中,然后我的脚本可以简单地读取该文件并在每次运行时删除内容。
答案1
我可以想到两种不需要apt-listchanges
太多调整的方法。两者都依赖于;apt-listchanges
中的默认钩子。apt
检查/etc/apt/apt.conf.d/20listchanges
您的系统上是否存在。这很好用,因为它与即将升级apt-listchanges
的软件包列表一起运行,因此可以将当前安装的版本与这些版本进行比较。 apt
(apt-listchanges
“设计使得事后运行变得困难;您可以使用该--since
选项,但需要跟踪适当的值。)
第一种方法是配置apt-listchanges
为发送包含任何更改的电子邮件。这需要在系统上进行有效的邮件设置,这对您来说可能不方便;但我发现它非常方便。在、 设置、 和[apt]
部分(视情况而定); then将在每次运行时运行,并发送包含新闻项目(和/或更改日志,具体取决于设置)的电子邮件。/etc/apt/listchanges.conf
frontend=mail
email_address
apt-listchanges
apt
which
第二个,我实际上没有尝试过,是配置apt-listchanges
为简单地将新闻条目和/或更改日志转储到其标准输出,并将其重定向到日志文件,然后您可以在方便时阅读该日志文件。在[apt]
部分/etc/apt/listchanges.conf
,设置frontend=text
;在 中/etc/apt/apt.conf.d/20listchanges
,向目标文件添加附加重定向。