列出以前更新包中的所有新闻

列出以前更新包中的所有新闻

我希望能够列出自上次运行脚本/命令以来已升级的软件包中的所有新闻。然后,这可能会在 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的软件包列表一起运行,因此可以将当前安装的版本与这些版本进行比较。 aptapt-listchanges“设计使得事后运行变得困难;您可以使用该--since选项,但需要跟踪适当的值。)

第一种方法是配置apt-listchanges为发送包含任何更改的电子邮件。这需要在系统上进行有效的邮件设置,这对您来说可能不方便;但我发现它非常方便。在、 设置、 和[apt]部分(视情况而定); then将在每次运行时运行,并发送包含新闻项目(和/或更改日志,具体取决于设置)的电子邮件。/etc/apt/listchanges.conffrontend=mailemail_addressapt-listchangesaptwhich

第二个,我实际上没有尝试过,是配置apt-listchanges为简单地将新闻条目和/或更改日志转储到其标准输出,并将其重定向到日志文件,然后您可以在方便时阅读该日志文件。在[apt]部分/etc/apt/listchanges.conf,设置frontend=text;在 中/etc/apt/apt.conf.d/20listchanges,向目标文件添加附加重定向。

相关内容