移植指南

此页探讨如何将旧本的 CentOS 移植至新版本,又或者将其它基于同一套上游代源组件的企业级 Linux 移植至 CentOS。

<!> 不小心地执行本文章所描述的行动,甚至完全遵照去做,都可能会损坏现有的文件系统及操作系统。如果你看重你的数据,请先在一台测试的机器上进行实验,然后在创建了最新及测试好的备份后才继续。除非你已清楚指令的作用,否则切勿盲目地剪贴指令,尤其是作为 root 时。有一位用户汇报,以 upgradeany 把 CentOS-5 升级至 CentOS-6 后得出一个不能运作的系统。





把现有的系统由 RHEL5 移植至 CentOS5

<!> 注:利用 mirror.centos.org 这台主机只可以取得每个组件的最新版本。旧版本的组件都被转到 vault.centos.org,因此上述的例子应该采用下列指令:

# cp /etc/redhat-release /etc/redhat-release-saved
# rpm -e --nodeps redhat-release-notes redhat-release yum-rhn-plugin redhat-logos
# rpm -ivh \
http://vault.centos.org/5.0/os/i386/CentOS/centos-release-5-0.0.el5.centos.2.i386.rpm  \
http://vault.centos.org/5.0/os/i386/CentOS/centos-release-notes-5.0.0-2.i386.rpm


把现有的系统由 RHEL6 或 SL6 移植至 CentOS 6

要从 RHEL6 移植至 CentOS 6,请为你的结构取得下列组件的最新版本并将它们放置在一个临时的目录内。除了如以下所示范,通过 wget 取得组件之余,你也可挂载 CentOS-6 的安装媒体并从它安装组件。如果是 CentOS 6.2 x86_64

mkdir TMP
yum remove rhnlib abrt-plugin-bugzilla redhat-release-notes*
rpm -e --nodeps redhat-release redhat-indexhtml
cd TMP
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/centos-release-6-2.el6.centos.7.x86_64.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/centos-indexhtml-6-1.el6.centos.noarch.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-3.2.29-22.el6.centos.noarch.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-10.el6.noarch.rpm
rpm -Uvh *.rpm
cd ..
rm -rf TMP
yum clean all
yum upgrade

如果是 CentOS 6.2 i386,只有 wget 的行不相同:

wget http://mirror.centos.org/centos/6/os/i386/Packages/centos-release-6-2.el6.centos.7.i686.rpm
wget http://mirror.centos.org/centos/6/os/i386/Packages/centos-indexhtml-6-1.el6.centos.noarch.rpm
wget http://mirror.centos.org/centos/6/os/i386/Packages/yum-3.2.29-22.el6.centos.noarch.rpm
wget http://mirror.centos.org/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-10.el6.noarch.rpm

要从 Scientific Linux 6 移植过来,唯一的改动就是 rpm -e 那一行变为

rpm -e --nodeps sl-release sl-indexhtml

针对 SL 的额外改动 —— 以下步骤会找出某些 SL 专用的组件:

rpm -qa | grep ^sl-
rpm -qa | grep SL_

你可以这样删除它们(举个例):

rpm -e --nodeps sl-bookmarks sl-release-notes yum-conf-sl6x SL_desktop_tweaks

你也许会想下载及加入一些与外观有关的项目,或从 CentOS DVD 装入它们:

rpm -Uvh redhat-bookmarks-6-1.el6.centos.noarch.rpm redhat-logos-60.0.14-10.el6.centos.noarch.rpm \
  redhat-menus-14.0.0-3.el6.noarch.rpm redhat-rpm-config-9.0.3-34.el6.noarch.rpm

完成以上步骤及更新后,你也许会想看看你还有哪些 SL 组件:

rpm -qa --qf "%{VENDOR} \n" | sort | uniq

这样会显示已安装组件的所有发行者标记。然后

rpm -qa --qf "%{NAME} %{VENDOR} \n" | grep "Scientific Linux" | cut -d ' ' -f 1 | sort

会显示余下的 SL 组件。这样做并非必然,但你可如此「净化」系统

yum reinstall $(rpm -qa --qf "%{NAME} %{VENDOR} \n" | grep "Scientific Linux" | cut -d ' ' -f 1 | sort)

你也许会发现某些组件没有 CentOS 的代用品,因为 SL 供应一些不包含在 CentOS 内的组件。请重复以上的组件查询并检查还余下什么。

移植其它相关发行版本的程序应该亦类同。


Translation of revision 27

zh/HowTos/MigrationGuide (last edited 2012-09-15 14:12:10 by TimothyLee)