初始问题(请参阅下面的新问题)
编辑:显然,对紧急程度的过滤不会那么有效,因此,请在下面查看修正后的问题。
这个问题与这个20多年前就被问到丹·克里斯滕森在 Debian 邮件列表上。
所以,我只想引用:
有没有办法升级所有当前安装的软件包,这些软件包自上次升级以来已上传到存档的紧急度=高版本? (当然,还有任何必要的依赖项。)我正在为不稳定的发行版考虑这一点。我们的想法是经常进行此类升级以获得任何安全修复,而不频繁地进行整个发行版升级。
注意:该urgency=high
信息由包维护者添加到包更改日志 ( apt changelog <package>
) 中。
那么我如何“过滤”我的内容apt --with-new-pkgs upgrade
,以便只升级最重要/最紧急的内容?
知道(暂时)使用sources.list
仅具有“安全”行的代码可能在稳定版中工作得相对较好,但在测试/不稳定版中则不然。
新问题
需要:因为我要么使用testing,要么使用unstable,所以我想要选择何时升级,因为可能有许多软件升级需要重新启动或 X 重新启动(有时会出现破坏/新错误)。但是,我只想每天了解最新的安全或重要的非侵入性更新/补丁。
事实上,我真的在寻找一种不升级“太多”的方法,但仍然在 Debian 测试/不稳定的情况下每天升级低影响的东西(错误/安全修复)。您有这样做的建议吗?
答案1
那么我如何“过滤”我的内容
apt --with-new-pkgs upgrade
,以便只升级最重要/最紧急的内容?
你不能,不仅因为apt
没有提供任何相关的过滤器,更重要的是因为没有办法确定测试或不稳定的软件包升级是否真的重要和/或紧急。软件包版本在不稳定状态下的“紧急程度”是一个不可靠的指标。看看最后十个咨询意见,我看到有六个被确定为中等紧急程度(包括雷鸟和奥格),其中四个被确定为高度紧急。
注意到安全问题的情况也经常发生后相应的上传变得不稳定;稳定版本获得向后移植,但更新在不稳定版本中未标记为与安全相关(或仅在事后)。
即使过滤掉低紧急度的升级也无济于事:低紧急度的升级很少而且间隔很远。这是轶事,但在我安装了 6,037 个软件包的主 Debian 系统上,只有 232 个软件包的最新升级标记为urgency=low
。
您可以编写一个apt-listbugs
-style 过滤器来在变更日志中查找 CVE,但即使这样也会丢失一些,因为 CVE 并不总是在不稳定的变更日志条目中指示。
知道
sources.list
仅使用“安全”行在稳定状态下效果很好,但在测试/不稳定状态下效果不佳。
对于稳定来说这不是一个好主意。一些安全更新不浏览安全存储库,包括许多内核更新。
答案2
所以...虽然不可能在本地完成,并且可能根本不建议这样做,但您可以使用apt list --upgradeable
bash 的组合来实现它。
我有写了一个脚本这应该够了吧。
有一些注意事项:
如果您尝试在脚本中使用 apt ,则需要禁止显示 apt 发出的警告 - 因此这可能会在将来发生变化。
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
/etc/apt/apt.conf.d/
这可以通过在下面添加一个包含以下内容的文件来完成:Binary::apt::Apt::Cmd::Disable-Script-Warning "true";
找到了资料这里,但不清楚如何添加到文件中。
当您添加的存储库不添加更改日志时,这可能不起作用(F.ex gitlab。)
仅当脚本定期运行时这才有效。 F.ex 如果您当前的系统状态和软件包之间存在多次更新,并且最新升级未分类为
high
,则软件包不会升级。它将要也可以使用内核升级,因为它们随
apt list --upgradeable
.