2015-02-23 53 views
2

我想以无人监督的方式更新Ubuntu系统。如果更新失败,我将不得不飞到那里手动修复它:P所以我的问题是:debian软件包更新原子?

如果在内核或用户空间包更新过程中发生停电,系统是否保持一致?

示例场景:

  • 更新内核更新grub的原子或不?
  • 包A1和B1依赖于C1。新版本A2和B2依赖于C2而不是C1。更新得到A2和C2,然后停电。怎么了?我想这取决于下载后dpkg如何应用更新。

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

补充: 什么是无监督的方式:我有成千上万的在各个地方运行这些箱子。有人可能会在任何时候无意中拔下插头。为了升级,我的服务器将它们发送到“升级到XXX版本”命令。他们自主执行命令。

+0

不,甚至不保证更新后系统会启动。 – hek2mgl 2015-02-23 18:18:34

+1

@ hek2mgl ...我认为这也不是Debian特有的。在这种情况下可能会有一些发行版,但我认为绝大多数发行版都适用...... – twalberg 2015-02-23 18:34:18

+0

@twalberg如果能够提供这种稳定性水平,Debian会简单地实现它! ;) – hek2mgl 2015-02-23 18:38:32

回答

1

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

注意:做更新/小幅度升级,可以减少出现问题的概率。但你的里程可能会有所不同

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

+0

谢谢Faheem。我更新了有关无监督方式的问题。但是你的帖子似乎已经回答了我不管。 – Yey 2015-02-23 19:50:25

+0

@Yey查看更新。 – 2015-02-23 20:08:37

1

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

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

如果资质就会被杀死,那么你将需要手工运行

dpkg --configure -a 

我不是说这是真正安全的,但我会说这是足够安全的。

你可以有一个非常小的系统为一台主机许多LXC容器抱着大多数的软件,你会因此需要升级更新主机系统时,减少系统崩溃的风险,实现更安全的配置。

+0

感谢您的链接。但是该文档显示“请注意,即使在运行的系统上,dpkg也会安装升级文件。”所以我不确定这是否能够在停电之后幸免于难。 – Yey 2015-02-23 19:37:59

+0

我从来没有问题,我幸免于停电和系统崩溃。我在重大版本升级方面遇到了问题,特别是缺少固件和主要更改(如udev或测试/不稳定版本)。请阅读STABLE作为当前稳定版或旧版Debian版本。 – lnrdo 2015-02-23 19:48:49

+1

使用LXC容器来封装复杂性会使更新主机的任务更快更可靠。占用空间更小将使主机系统升级变得更简单,速度更快。如果你崩溃你的容器,你将不得不访问主机来修复它。 – lnrdo 2015-02-23 19:55:07