移植指南

此頁探討如何將舊本的 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-tw/HowTos/MigrationGuide (last edited 2012-09-15 14:12:07 by TimothyLee)