ubuntu - debian 软件包更新是原子的吗?

标签 ubuntu debian dpkg

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

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

示例场景:

  • 是否使用 update-grubatomic 更新内核?
  • 包 A1 和 B1 依赖于 C1。新版本A2和B2依赖于C2,但不依赖于C1。更新了A2和C2然后就断电了。会发生什么?我想这取决于 dpkg 下载后如何应用更新。

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

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

最佳答案

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

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

更新:发帖者澄清了“无监督”一词。这可能对我的答案没有任何影响,除了您需要确保在所有计算机上保留日志,以便在出现问题时,您会知道出了什么问题。 Debian 自动保存 dpkgapt 日志。它们是 /var/log/dpkg.log/var/log/apt/history.log/var/log/apt/term.log term.log 可能是检查升级是否成功完成的最相关的。

关于ubuntu - debian 软件包更新是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28680501/

相关文章:

linux - 如何删除 Perl 语言环境警告

php - 拒绝访问 - PHP move_uploaded_file - Ubuntu LAMP/var/www

phpmyadmin - apache2.4 + php-fpm + debian 中的 phpmyadmin

linux - sshfs 没有密码无法访问符号链接(symbolic link)

PHP Plesk - php 错误日志文件丢失

c++ - eclipse变量悬停中的Debian XFCE黑色背景

triggers - dpkg:如何使用触发器?

linux - 将文件中的文本字符串附加到命令

mysql - 如何在 Debian 上删除 phpmyadmin 而不删除数据库、用户、权限、

node.js - TLS 错误 : socket hang up in nodejs