自动更新和升级软件有什么缺点吗?

自动更新和升级软件有什么缺点吗?

在 Lubuntu 18.04 上,软件更新程序会不时通知我有可用更新。如果我碰巧有时间,我会手动运行sudo apt update; sudo apt upgrade

我正在考虑是否让更新和升级自动发生。自动更新和升级软件有什么缺点吗?便利是否大于缺点?

当软件自动更新和升级时,哪种方式更好:

  • 更改软件更新程序的设置,或
  • 创建 anacron 日常工作apt update; apt upgrade

谢谢。

答案1

在生产系统中,根据您的服务/系统的重要性以及您如何进行高可用性设置,您可以可能不希望进行计划/无人值守的自动升级

多年来,我看到过由于人们进行自动升级而导致多项服务中断的情况:

  • 由于新升级的次要版本的语法略有不同,squid 即将退出;
  • 由于动态路由守护进程在次要版本中停止支持 sysV,DNS 服务停止运行;
  • Apache 服务由于已测试的软件包中缺乏磁盘空间而关闭;
  • 由于更新重新创建默认文件,Apache 未重新启动...
  • Apache 重新启动,但更新将站点主页替换为 Apache 默认页面;
  • 由于次要版本中的错误导致 DHCP 服务出现故障;
  • 由于有人将编译的二进制文件放在包的官方二进制文件的位置,netflow 服务停止了几天;
  • 由于 rsyslog 更改了一些语法,并且有人在不了解正在做什么的情况下设置了向后移植存储库,所以 rsyslog 会关闭;
  • 在将未经测试的版本推送到本地存储库并且不知道有人设置具有自动升级功能的 Radius 后,FreeRadius 服务会关闭。

此外,当盲目进行主要版本升级时,您可能会遇到软件和版本之间的软件/应用程序不兼容问题。

正如 @panki 也正确指出的那样,通常您不能盲目升级软件,并在升级时引入更短或更长时间的中断,或更糟糕的是,长时间的中断,直到有人纠正升级期间发生的一些小(或大)问题。

虽然自动升级对于桌面/家庭服务器设置可能很有趣,但它给生产系统带来的不稳定权衡并不值得使用它们。我认为这是其中之一,虽然它有效,但它似乎可以为您节省很多麻烦,但是当它失败时,它确实会以不可预测的方式让您失望。

至于缓解/管理升级生命周期的方法,您可以采用多种策略,也取决于您的正常运行时间要求/基础设施规模:

  • 只需手动执行即可:
  • 半自动地进行,并有人监督该过程;
  • 监控所有服务和监督流程的人员,修改所有升级日志后,密切关注监控服务;
  • 对哪些升级是关键的、哪些不是关键的进行一些规划,而不是盲目地进行;
  • 在冗余系统中使用不同版本的 Linux(更多的工作和更多可能出现的不同问题......);
  • 使用服务冗余/测试床并进行分阶段升级;
  • 例如,使用 yum 支持的时间点“书签”版本;
  • 使用本地存储库/代理来分发受控/测试/批准的版本,类似于基于 RH/CentOS 系统的 Satellite/Katello/Spacewalk 或恰当地对于 Debian;
  • 将这些策略与 Ansible 等 DevOps 工具集成。

此外,在生产系统中,当管理不属于您自己的系统时,您可能还必须处理在更新之前征求所有者许可的官僚问题他们的系统,因此您无法保持自动更新服务处于活动状态。

TDLR 在生产环境中,操作系统升级生命周期的管理绝非简单。操作系统升级生命周期有很多角度,可操作、系统、版本控制、安全、人力、应用等。

回到问题的具体部分,在需要高正常运行时间/高可靠性时采用自动程序可能不是最好的方案。

PS.相关,对于 Debian

恰当地是 Debian 存储库管理的一把瑞士军刀:它允许您镜像远程存储库、管理本地软件包存储库、拍摄快照、提取新版本的软件包以及依赖项、发布为 Debian 存储库。

答案2

软件更新可能会破坏您的系统。当你正在做一些重要的事情时,你希望这种情况发生吗?

有人可能会破解您的系统,因为您尚未安装安全更新。

相关内容