我们有一个定制的 Ubuntu 发行版,一个包含一些定制包的存储库,我们在许多系统上运行无人值守升级。我们想要做的是提供我们其中一个包的更新,它可能有一个尚未安装的新依赖项。
我理解 apt 通常会阻止这种情况自动发生,并且使用 dist-upgrade 会允许它。
我怎样才能获得这种行为,以便我们的无人值守升级以相同的方式工作?
理想情况下,如果我们的某个包导致需要它(作为直接依赖项或子项等),我们只希望安装新包
我是否应该意识到任何潜在的问题或增加的破损风险。这些系统通常不容易通过控制台访问,因此任何导致需要手动干预的问题都会非常糟糕!
如前所述,
unattended-upgrades
显然不支持它,但您可以使用cron-apt
.cron-apt
运行 shell 代码,因此您可以更改其配置以调用 dist-upgrade 就像在命令行上一样。为什么不设置一个运行某些变体的 cron 作业
apt-get update && apt-get dist-upgrade
?也许你的意思是你只想要你的一个包的行为dist-upgrade
,但我认为特别解决这个问题是不值得的。在 Ubuntu 的稳定版本中,应该很少引入新软件包,如果这样做,可能有一个很好的理由,例如安全更新。dist-upgrade
切换到“dist-upgrade”后,如果您使用 Ubuntu 存储库,那么我相信您将开始获得以前没有的内核更新。
不幸的是,在您描述的情况下,内核更新是一个风险因素。
在您的情况下,a) 将您的 repo 配置为优先和 b) 将测试过的内核从 ubuntu repo 复制到其中可能是有意义的。
您也可以尝试固定/保留内核包。我发现这个问题是不同的工具尊重不同的针/保持系统,或者没有。即 apt-get vs aptitude vs synaptic。希望您不需要使用突触,并且您可以在 apt-get 和 aptitude 中设置 pin / hold 以确保安全。