debian包更新是原子的吗?

时间:2015-02-23 18:15:20

标签: ubuntu debian dpkg

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

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

示例场景:

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

跟进: 如果dpkg无法实现这一目标,我的选择是什么?像docker这样的东西似乎无法解决这个问题,因为主机操作系统仍然需要更新。谢谢!

添加了: 什么是无人监督的方式:我有成千上万的这些箱子在不同的地方运行。有人可能在任何时候无意中拔掉电源插头。对于升级,我的服务器发送它们"升级到XXX版本"命令。他们自主执行命令。

2 个答案:

答案 0 :(得分:1)

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

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

如果能力被杀,那么你需要手动运行

dpkg --configure -a

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

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

答案 1 :(得分:1)

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

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

更新:海报澄清了术语"无人监督"。这可能对我的回答没有任何影响,除了你想要确保你在所有机器上保存日志,这样如果出现问题,你就会知道出了什么问题。 Debian自动保存dpkgapt的日志。这些是/var/log/dpkg.log/var/log/apt/history.log/var/log/apt/term.log。在检查升级是否成功完成方面,term.log可能是最相关的。

相关问题