【问题标题】:Are debian package update atomic?debian 包更新是原子的吗?
【发布时间】:2015-02-23 18:15:19
【问题描述】:

我想以无人监督的方式更新一个 ubuntu 盒子。如果更新失败,我将不得不飞到那里手动修复它:P 所以我的问题是:

如果在内核或用户空间包更新过程中出现断电,系统会保持一致吗?

示例场景:

  • 是否使用 update-grub atomic 更新内核?
  • 包 A1 和 B1 依赖于 C1。新版本 A2 和 B2 依赖于 C2 而不是 C1。更新了 A2 和 C2 然后断电。怎么了?我想这取决于 dpkg 在下载后如何应用更新。

跟进: 如果 dpkg 不能做到这一点,我有什么选择?像 docker 这样的东西似乎并没有解决这个问题,因为主机操作系统仍然需要更新。谢谢!

添加: 什么是无人监督的方式:我有数千个这样的盒子在不同的地方运行。有人随时可能无意中拔掉插头。对于升级,我的服务器向他们发送“升级到 XXX 版本”命令。他们自主执行命令。

【问题讨论】:

  • 不,甚至不能保证系统会在更新后启动。
  • @hek2mgl ...我认为这也不是 Debian 独有的。可能有一些发行版不是这样的,但我认为它适用于绝大多数发行版......
  • @twalberg 如果可以提供这种级别的稳定性,Debian 会简单地实现它! ;)
  • 我认为这只是一种权衡?大多数用户不需要这个保证。但理论上,您始终可以拥有两个副本,然后自动创建一个新配置文件,指定每个升级包的新版本。正在运行的进程会在重新启动后获取更改。
  • 如果你在不同的地方有数千个,你就有冗余。而且,如果您希望有人拔插头,那就更糟了。您已经有了冗余,这就是您的安全网。

标签: ubuntu debian dpkg


【解决方案1】:

“无监督方式”是什么意思?通常通过 ssh 登录,并在命令行上远程运行 apt-getaptitude。通常apt-get/aptitude首先运行,下载必要的包。下载完成后,dpkg 运行,将这些包安装到系统中。如果apt-get/aptitude 运行时出现系统故障,则没有问题;您只剩下一些部分下载的软件包,并且可以从中断的地方继续。如果在dpkg 运行时出现故障,则可能(并且可能会)出现问题,但问题通常也可以通过dpkg 修复,使用dpkg --configure 之类的选项。 dpkg 相当健壮。当然,从来没有任何保证。请记住,系统在升级过程中通常会保持正常运行,因此除非出现一些灾难性问题,例如删除重要的系统文件,否则系统通常会保持正常运行和可修复。甚至 ssh 连接通常在升级期间仍然存在。

注意:以小增量进行更新/升级可能会降低出现问题的可能性。但您的里程可能会有所不同。

更新:海报澄清了“无监督”一词。这可能对我的回答没有任何影响,只是您希望确保在所有机器上都保留日志,以便在出现问题时,您会对出了什么问题有所了解。 Debian 自动保存dpkgapt 的日志。它们是/var/log/dpkg.log/var/log/apt/history.log/var/log/apt/term.log。在检查升级是否成功完成方面,term.log 可能是最相关的。

【讨论】:

  • 谢谢法希姆。我更新了关于无监督方式的问题。但无论如何,你的帖子似乎都回答了我。
【解决方案2】:

根据我的经验和 Debian 团队提供的文档,您应该能够依靠 Debian 自动更新稳定系统。

检查https://www.debian.org/doc/manuals/debian-faq/ch-uptodate.en.html 并进行评估。

如果一个 aptitude 被杀死,那么你将需要手动运行

dpkg --configure -a

我并不是说它真的很安全,但我会说它足够安全。

您可以通过将一个非常小的系统作为许多 LXC 容器的主机来实现更安全的配置,这些容器包含您需要升级的大多数软件,从而降低了在更新主机系统时系统崩溃的风险。

【讨论】:

  • 感谢您的链接。但是文档说“请注意,dpkg 将安装升级文件,即使在正在运行的系统上也是如此。”所以我不确定这是否能在停电后幸存下来。
  • 我从来没有遇到过问题,我在停电和系统崩溃中幸存下来。我在主要版本升级方面遇到了问题,特别是缺少固件和 udev 等重大更改或测试/不稳定版本。请阅读 STABLE 作为当前稳定或旧稳定的 Debian 版本。
  • 使用 LXC 容器来封装复杂性将使更新主机的任务更快、更可靠。占用空间更小将使您的主机系统升级更简单、更快。如果你的容器崩溃了,你只需要访问主机来修复它。
  • 有道理。将复杂性分为主机和 LXC 并分别升级。
猜你喜欢
  • 1970-01-01
  • 2013-04-08
  • 2011-05-05
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多