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