从失败的 UNIX 包升级中恢复的最佳实践?

从失败的 UNIX 包升级中恢复的最佳实践?
  • 当通过 Aptitude 等包管理器升级或安装包时,您会做什么来确保一切正常?

  • 如果包管理器运行后出现问题,您是否有检查清单或计划来恢复?

  • 有没有什么方法可以最大限度地降低更新包管理器时出现问题的风险?如果有,该怎么做?

答案1

确保升级后一切正常

  • 升级前仔细检查软件包列表的更改。我在这个部门看到的许多问题都是人们盲目地信任这些工具,然后没有注意到 Apache 因其他一些失误而消失。

  • 升级时检查 apt 的输出。如果重新启动失败,这可以立即提供反馈。

  • 配置适当且深入的监控解决方案。纳吉奥斯将是一个开始。

应急计划

  • 准备好当前备份。

  • 知道自己在做什么。不要因为按钮闪烁就去按。

  • 切换到热备服务器。

最小化风险

  • 仅使用来自你的发行版的软件包。

  • 仅使用来自同一版本的软件包。

  • 不要安装非打包的软件。

  • 不要安装外部包。

  • 首先在您的 QA 服务器上尝试升级。

答案2

监控和测试。监控可确保它仍在运行(无论包管理器是否出问题),如果您要进行重大升级,请事先进行测试。虚拟化可以帮助您轻松复制生产环境,自动化可以帮助您构建生产副本,而拥有永久的暂存环境可为您提供尝试的地方。

当您进行升级或任何非平凡的维护时,您应该完全编写整个过程的脚本,包括回滚和升级后测试。

《系统和网络管理实践》对于系统管理员来说是一本很棒的书,描述了这些类型的流程以及如何整理清单等。

答案3

我与rpmyum/的经验yumex,但它可以翻译。

对于正在升级的关键软件包,我只是正常使用该软件包以确保其正常工作。如果我升级bind,那么我会执行一些我希望成功的 DNS 请求。如果我升级 Apache,httpd那么我会打开一些网页。如果我升级,open-office那么我会打开一两个文档。

在那些稀有的当软件包升级导致问题时,我的恢复程序是:

  1. 卸载失败的包(有时我必须“强制”卸载)
  2. 手动删除卸载后留下的所有临时文件或配置文件
  3. 重新安装失败的升级包
  4. 测试

如果上述第 4 步之后再次失败,那么我会重复此操作但会恢复到以前的版本。

在任何重大升级之前,我都会确保备份是最新的。这曾救过我一次,当时我升级后才发现新版本还与我的显卡不兼容,而且有文档记录显示如此。(我没有完整阅读发行说明。真丢脸。)在升级过程中我的硬盘出现故障时,这也救过我一次。

因此,回答你关于最小化风险的第三个问题:

  • 后退!
  • 请务必阅读发行说明
  • 如果你不是第一个升级的人,而且你对此感到紧张,可以上网查看其他人是否抱怨这个问题
  • 准备好恢复盘——对于大多数现代 Linux 发行版来说,安装盘也是恢复盘。了解您的发行版提供的恢复机制。如果可能,通过 CDRom 启动进入恢复模式,这样您就能了解它的工作原理,从而了解如何chroot从恢复模式进入安装。

相关内容