当前位置: 首页>>技术教程>>正文


使Linux ubuntu服务器保持最新状态的最佳实践是什么(构建软件包,dist-upgrade,替代存储库…)

, ,

问题描述

我们正在运行基于Ubuntu 9.10 Karmic Koala的生产服务器,内核几乎是up-to-date(2.6.38.2-grsec-xxxx-grs-ipv6-64),但是karmic package repository现在已经过时了,例如。 Nginx是0.7.62-确实是越野车-而最新的稳定版是1.0.x!

此外,Karmic刚刚达到使用寿命。

这个问题:Best practices for keeping UNIX packages up to date?看起来很相似,但实际上只包含一些有关程序包管理器的建议;根本没有我需要的!

所以我看到的选项是:

  1. 购买新机器,从头开始安装,迁移

  2. distribution upgrade

  3. 使用其他存储库(launchpad/ppa /backport /pinning)

  4. 建立你自己的

1.的缺点非常明显。

不过,我不敢执行dist-upgrade路径,因为对于生产服务器而言,停机和可能的灾难性后果是无法预测的,目前大多数情况是我自己需要的re-building。但是我确定我可能会错过一些。

对我来说,目前尚不清楚使用ubuntu反向端口会带来哪些风险(稳定性/兼容性),此外,对于9.10而言,官方也不再提供任何支持。 Launchpad是individual-builds,类似的问题-这比编译您自己的有多好。

构建软件包看起来不错,但是:1.有时为了重新生成我现有的配置文件re-use,我无法重现正确的./configure选项。1.我确信现在有很多软件包和依赖项已经过时,并且可能是错误的来源

最后…最近发行的’old’软件包如何?我想除了我自己re-building之外别无其他方法吗? 2.和4.的组合最终是最佳途径吗?

是否有什么最佳方法的客观共识,还是为什么我的一些选择可以/不可以的原因?

如果确实没有,我将接受这个问题在创建无尽线程之前已解决!

最佳方案

维护自己的发行版是很多工作。即使维护反向端口,您很快也会被安全问题解决,并且不得不拉低级库来继续更新软件,这可能会破坏其他情况(我维护运行6-year-old发行版的服务器,这很不好玩)。

升级通常是一个很好的解决方案。 do-release-upgrade做得很好,您应该可以升级而不会出现问题(特别是如果您仅使用官方软件包)。

我最喜欢的解决方案可能是重新安装路径。更具体地说,应该使用配置管理系统(例如Puppet,Cfengine或Chef)来管理服务器。如果使用此工具指定了所有配置/软件包需求,并且您的数据在单独的分区上是安全的,则重新安装起来要容易得多。您只需安装新的发行版而不擦除数据分区,然后运行配置管理工具来重置您的程序包/配置。我相信这是最干净的方法,尤其是在要管理多个服务器的情况下。

如果您使用的是非官方软件包,则可能需要在升级/重新安装之前识别它们。 maintenance-check可以帮助您识别Ubuntu尚未正式维护的软件包:

$ bzr branch lp:ubuntu-maintenance-check
$ cd ubuntu-maintenance-check
$ ./maintenance-check -f n

如果要重新安装,还可以导出已安装软件包的列表:

$ dpkg --get-selections > myinstall.txt

和您的debconf数据库:

$ debconf-get-selections > debconf.txt # from the debconf-utils package

需要注意的是,由于您当前使用的是Karmic,因此升级到Lucid(LTS版本)可能不会太猛烈,该版本直到2015年仍支持主服务器软件包。这将为您留出足够的时间来为将来设置可行的自动化安装。

当您问起Launchpad软件包时,我想您的意思是PPA。有很多不同的PPA。有些是实验性的,有些是稳定的。有些是由官方的Ubuntu开发人员维护的,有些是由几乎不知道如何正确打包的人维护的。一般来说,很难说您在PPA上找到的软件包是否好,没有一般规则。在这种情况下,最好的提示可能是过分看PPA的所有者,以了解其包装的可能质量。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11208.html,未经允许,请勿转载。