我们正在运行一个基于Ubuntu 9.10 Karmic Koala的生产服务器,内核几乎是最新的(2.6.38.2-grsec-xxxx-grs-ipv6-64),但是业力软件包仓库现在已经过时了,例如。 Nginx是0.7.62 – 真的越野车,而最新的稳定是1.0.x!
此外,Karmic刚刚走到了尽头。
这个问题: 使UNIX包保持最新的最佳实践? 看起来相似,但实际上只包含一些关于包pipe理者的build议 根本不是我所需要的!
所以我看到的选项是:
1的缺点非常明显。
尽pipe如此,我不敢做一个远程升级的途径,因为宕机时间和可能的灾难性后果对于生产服务器来说是无法预测的,而且目前大部分都是重新构build我自己需要的软件包。 但我相信我可能会错过一些。
我真的不清楚使用ubuntu后端的风险(稳定性/兼容性),此外,9.10已经没有任何官方提供了。 启动板是个人build设,类似的问题 – 这比编译自己的更好。
构build包似乎很好,但是:1.有时我有麻烦重现正确的./configure选项,以重新使用我现有的configuration文件1.我相信有大量的包和依赖关系,现在是相当过时和可能的来源的错误
最后…在最近的distrib中,“旧”包怎么样? 我想没有别的方法可以自己重build它们了吗? 是2.和4.的组合,最后是最佳path吗?
对于做这件事的最好方法有什么客观的一致意见,或者为什么我的一些select是好的/不好的原因?
如果真的没有,我会接受在创build一个无尽的线程之前closures的问题!
维护你自己的分配是很多工作。 即使你维护了backports,你也很快就会被安全问题所困扰,并且不得不拉低级别的库去更新你的软件,这可能会破坏其他的东西(我维护运行着6年的发行版的服务器,不好玩)。
升级通常是一个很好的解决scheme。 do-release-upgrade是很好的,你应该可以升级而没有问题(特别是如果你只使用官方软件包)。
我最喜欢的解决scheme虽然可能是重新安装path。 更具体地说,您的服务器应该使用Puppet,Cfengine或Chef等configurationpipe理系统进行pipe理。 如果使用这样的工具指定了所有的configuration/软件包需求,并且您的数据在单独的分区上是安全的,则快速重新安装要容易得多。 您只需安装一个新的发行版而不擦除数据分区,然后运行configurationpipe理工具来重置您的软件包/configuration。 我相信这是最干净的方法,特别是如果你有几台服务器来pipe理。
如果您使用的是非官方软件包,则可能需要在升级/重新安装之前识别它们。 维护检查可以帮助您识别Ubuntu正式维护的软件包:
$ bzr branch lp:ubuntu-maintenance-check $ cd ubuntu-maintenance-check $ ./maintenance-check -fn
如果你想重新安装,你也可以导出已安装软件包的列表:
$ dpkg --get-selections > myinstall.txt
和你的debconf数据库:
$ debconf-get-selections > debconf.txt # from the debconf-utils package
需要注意的是,由于您目前正在使用Karmic,所以升级到LTS发布的Lucid可能不会太猛烈,直到2015年,主服务器软件包仍然支持。 这将给您留下足够的时间为未来build立一个可行的自动化安装。
当你问Launchpad软件包时,我想你的意思是PPA。 有许多不同的PPA。 有些是实验性的,有些是稳定的。 有些是由官方Ubuntu开发者维护的,有些是由人们维护的,几乎不知道如何正确做一个包。 一般来说,如果您在PPA上find的软件包是好的,那么通常很难说。 在这种情况下,最好的提示可能是看PPA的主人,以了解其包装可能的质量。
如果服务器没有暴露给世界,并且绝对信任你的用户(通常这不是一个好主意),那么如果它工作的话,你可以放弃它。
如果它以任何forms暴露在外,或者您认为合法用户以非法的方式玩这个游戏的想法,那么您绝对需要对您安装的软件进行修复和修补。
在这种情况下,你有两个select:
运行受支持的发行版,并获取您的软件或更新
将所有修补程序回溯到您的不受支持的发行版,坦率地说,这似乎不可行。
我不是Ubuntu用户,所以我不能评论你通过选项3获得的补丁的完整性,但是如果你有任何疑问,我会认为你不会有完整的报道。
最好的解决scheme是转到Ubuntu的LTS版本,这将在一段时间内为您提供给定的软件包版本的支持。 到时候,一些软件包已经过时了,但是你的环境将会有安全补丁,并且是稳定的(没有软件包版本颠簸)。 从我的经验来看,已知工作环境的稳定性通常比新特性更有价值。
看来,你现在的位置是不可维护的,你必须移动。 唯一安全的方法是获得第二台机器(或虚拟机)并testing迁移,直到获得可重复的成功过程,然后将其应用于生产机器。 如果您使用备份来进行testing迁移,那么您也有机会testing备份过程。
唯一真正的出路是分销升级。 我可以理解你对此感到紧张,因为现在你将会提前几跳(11.04刚刚发布)。
我build议在这台机器上制作一个驱动器的克隆,然后使用一台单独的计算机来运行这些克隆,并使用它来做一系列的testing升级。 记下遇到的所有问题,并重复,直到你有一个清楚的程序,所有的人。 然后将其应用于您的实时服务器。
如果你无法承受任何停机时间,那么迁移是你唯一的出路。 忘记固定和backports,这只会让你活着一段有限的时间。 而“滚动你自己”的select是不值得考虑的。 只是我的2便士的价值。