CentOS 何时才不算是 CentOS

1. 你说我的 CentOS 不是正版 CentOS 是什么意思?

我被转介到这页,因为其它人说我的 CentOS 版本不是 正版CentOS。你可以解释一下吗?

我们发现有很多人在提供他们所谓 CentOS 的东西。然而这东西事实上只是基于 CentOS,却是被供应者修改过的。这个情况在多数提供 Linux VPS(虚拟个人服务器)的情况下都属实。这个改动多数是通过 CPanel 或 Plesk 等网站寄存软件,或是通过 Virtuozzo 或 OpenVZ 等虚拟化软件。

这些软件计划都以 CentOS 作为它们的基础,但添加或修改某些核心组件。就以 OpenVZ 为例,它须要一个不是由 CentOS 提供的内核,而 CPanel 就提供自己版本的 Apache 及 PHP。

我们并不懂读心术,所以不能知道下游供应商会如何修改一个基本的 CentOS 安装。不过我们知道,一位初入门的管理员,例如:一位不熟识或不愿应用命令行、不愿阅读文档(maninfo 页面)、或不肯应用 CentOS 所提供的管理工具的人,可以很轻易地毁坏一个正常运作的安装。

/!\ 烦请:先参详你的供应商的支持渠道。

2. 我如何判断我所拥有的 CentOS 是正版抑或改版?

你可以从点方面检查你是否拥有正版 CentOS。请核对下列各点来确定你的 CentOS 是正版的:

2.1. 内核

CentOS 的内核永远使用一致的方法来命名。请使用 uname -r 这个指令来检查你在使用哪个内核。

CentOS 5 机器应该输出 2.6.18-419.el5,CentOS 6 应该输出 2.6.32-642.15.1.el6,而 CentOS 7 应输出 3.10.0-514.10.2.el7(这些是截至 2017-03-19 的版本)。内核的版本会经常采用 kernelversion-kernelrelease.centosrelease 这个结构。以 CentOS 5 为例,kernelversion 必定是 2.6.18,CentOS 6 是 2.6.32,CentOS 7 是 3.10.0,并且在每个发行版本的生命周期中维持不变。kernelrelease 普遍是单一个数目或是三个以点号分隔的数目。centosrelease 在 CentOS 5 上必定是 el5,CentOS 6 是 el6,CentOS 7 是 el7

如果你的内核版本内含有 stab 这个符串及看似 2.6.18-92.1.13.el5.028stab059.6,那么你拥有一个由你的供应商所提供,而非 CentOS 计划创建的内核。stab 意味著该内核源自以 OpenVZ 为基础的虚拟化计划。它不是 CentOS 所提供的内核,因此你所使用的并非正版 CentOS。

2.2. 每间断地访问 CentOS 计划发行的更新

一个正版的 CentOS 系统可以在任何时候利用 CentOS 的镜像发布系统免费进行更新。这个步骤一般是通过以 root 的身份执行 yum update 指令来完成。我们特别提及这个要求是因为安全性修正是不会同期发行的,因此 CentOS 计划亦会随着这个组件被创建起来及通过测试而将这些更新发行在镜像上。详情请参阅这里的讨论

2.3. Yum 配置文件

CentOS 的另一个核心部份就是 yum 指令的设置。在一台正版的 CentOS 系统上,yum 设置会指向 CentOS 镜像。要检查这点,执行 rpm -qV yumrpm -qV centos-release 这两个指令。rpm -qV 这个指令会检查一个 RPM 组件的内容,并显示任何涉及该组件内的文件的改动。

在一个标准的 CentOS 发行版本上,rpm -qV 这个指令应该不会返回任何输出。如果这些指令返回输出,那应有些文件曾被修改,而你很大机会不是在使用正版的 CentOS。惯常出现的改动包括排除某些组件(多数做在 /etc/yum.conf 里),或者取代标准的 CentOS 软件库(这些是在 /etc/yum.repos.d/CentOS-Base.repo 内定义的)。

2.4. 被更换的核心组件

很多以 CentOS 为基础的 VPS 更换某些核心组件。Perl、Apache、PHP 及 MySQL 是常见的例子。下游供应商有时会在 yum 配置文件为某些组件加入 exclude=,执行以下指令可显示它们出来:

grep -ri exclude /etc/yum.*

假如你是由于不能安装(举个例说)某个 Perl 或 PHP 模块而被转介到这页,你很大机会拥有该组件的非标准版本。

要引证这个问题,你应该先检查问题组件的版本,然后比较 CentOS 的 baseupdates 软件库内所提供的组件版本。譬如说,CentOS 5 的各个组件版本分别为 Apache 2.2.3、PHP 5.1.6 及 Perl 5.8.8;CentOS 6 的是 Apache 2.2.15、php 5.3.3 及 perl 5.10.1;最后,CentOS 7 的是 Apache 2.4.6、php 5.4.16 及 perl 5.16.3。此外,你亦可以用 rpm -qV 来检查所安装的组件是否有文件被修改了。

3. 这又如何?既然它建基于 CentOS,为何你不会支持我?

如上所说,这些改版 CentOS 将发行版本的主要部份改掉。我们没有参予在这些改动中,因此并不知道更改的内容或幅度。我们所提供的推荐都建基于使用 CentOS 小组提供的正版 CentOS 而累积的知识及经验。这些推荐有可能违反你的主机代管供应商的服务协议,甚至乎损坏你的系统。正因如此,我们不能为你提供支持。

4. 好,我没有正版 CentOS。现在怎样办?

基本上你有三个选择。

假若你的主机代管供应商声称提供正版 CentOS,第一个选择就是要求他们如此做。要不然,你可以找另一间提供正版 CentOS 的供应商。

第二个选择就是沿用现有的非标准 CentOS 安装。但由于上述所解释的原因,这意味着你不能以 CentOS 社区作为支持。你必需与你的改版 CentOS 供应商协商获取支持。

第三个选择就是亲自修改你的非标准 CentOS 安装,令它看似一台正版的 CentOS 安装。zh/TipsAndTricks/BrokenVserver 页里提供了更多有关如何这样做的信息。假如你因损坏系统或违反服务协议而导致数据或金钱上的损失,我们不会负责任。

Translation of revision 19

zh/AdditionalResources/OtherSpins (last edited 2017-04-09 10:07:53 by TimothyLee)