作者 主題: 使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)  (閱讀 29858 次)

0 會員 與 1 訪客 正在閱讀本文。

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5363
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
由於 RedHat 9 已經沒有更新了, Fedora 雖然有個遺產計畫在更新, 但是好像沒什麼動靜, 上頭的異動速度又不快. 所以機房內的幾台安裝 RedHat 9 的主機, 也很久沒有更新了.

所以想利用今天開始的過年假期, 把這幾台機器升級到別的版本上頭.

我們選擇的是使用 CentOS 3, 因為這是一套與 RHEL 3 相容的版本, 而 RHEL 3 是基於 RedHat 9 發展的. 這樣子我們升級的異動會比較少一點.

升級主要參考 http://www.owlriver.com/tips/centos-31-ex-rhl-9/  這一篇文章.

1. 到 http://linux.duke.edu/projects/yum/download.ptml 抓 yum 2.0.7 回來安裝.

2. 把 CentOS 3.3 的光碟中的 RPMS 目錄複製到主機中. 如 /centos/os/RPMS 下頭. 共有三片光碟.

3. 如果可能, 也把 CentOS 網站上頭的 updates 下頭的 rpm 也抓一份回來, 放到 /centos/updates/RPMS 下頭.

4. 建立兩個目錄 /centos/os/headers 與 /centos/updates/headers, 然後在 /centos/os 與 /centos/updates 下頭執行這個指令:
代碼: [選擇]
cd /centos/os
yum-arch .
cd /centos/updates
yum-arch .

以便於建立 yum 的資料庫.

5. 匯入 CentOS 的 PGP Key.
代碼: [選擇]
rpm --import http://mirror.caosity.org/centos-3/RPM-GPG-KEY-CentOS-3

上頭那個檔案在光碟內也有, 也可以直接匯入光碟內的 key.

6. 使用 rpm -e 指令, 移除非必要的 -devel 套件. (非必要)

7. 建立 /etc/yum-upgrade.conf 如下:
代碼: [選擇]
#
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp kernel-hugemem kernel-enterprise kernel-debug kernel-unsupported kernel-smp-unsupported kernel-hugemem-unsupported
tolerant=1
exactarch=1

[upgrade]
name=Centos upgrade
baseurl=file://localhost/centos/os/

[update]
name=CentOS-$releasever - Updates
baseurl=file://localhost/centos/updates/

如果沒有事先抓下這些 rpm, 也可以設成
代碼: [選擇]
#
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp kernel-hugemem kernel-enterprise kernel-debug kernel-unsupported kernel-smp-unsupported kernel-hugemem-unsupported
tolerant=1
exactarch=1

[upgrade]
name=Centos upgrade
baseurl=http://mirror.centos.org/centos/3.3/os/$basearch/

[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/3.3/updates/$basearch/

這樣子 yum 會在更新時上網抓檔案. 因為我們要更新好幾台, 所以先抓回來, 以免每次更新都再抓一次.
update 的部份也可以不設, 等升級到 CentOS 3.3 後, 再使用 yum update 去更新也可以.

8. 先更新 kernel 與 rpm.
代碼: [選擇]
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel

原本的文件說這兒要重開機, 不過似乎不用, 可以直接往下做.

9. 再更新整個系統
代碼: [選擇]
yum -y -t -c /etc/yum-upgrade.conf upgrade
等 yum 跑完後, 你的 RedHat 9 就變成 CentOS 3.3 了, 再重開機使用新的 kernel.

如果檔案都抓回來, 在 local 的主機或網路上頭時, 整個更新的動作應該可以在 30 分到 1 小時之內完成.

我們的主機上頭有 mysql, postgresql, httpd, php, openldap-server, 整個更新完成後, 系統運作都很正常.

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5363
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #1 於: 2004-12-31 11:14 »
更新後, 跑了一天, 目前看起來只有一個問題, 就是有些機器在 su 到 root 的時候, 會發生 segment fault 的錯誤 (裝的東西都類似, 但有些機器會, 有些不會).

如果你有發生類似的情形, 可以在使用 su 指令前, 先 export LD_ASSUME_KERNEL=2.4.4 再執行, 就不會有問題了.
如果 2.4.4 不行.... 自己換個版本再試試.

同樣的升級方式, 應該適用於同樣是使用 rpm 格式的 linux 版本.  也就是不管是 redhat 8 -> 9, 9 -> fc1 .... 都應該可以適用.

SaPow

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 509
    • 檢視個人資料
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #2 於: 2004-12-31 15:54 »
感謝 twu2 前輩率先自己當白老鼠,  :D  :D  :D


我都是備份9後直接重裝3.3 ,因為還不太敢這樣做, 哇係sula....

第4步驟其實可以不用先建資料夾, yum-arch 會在指定的的路徑下自動建立該資料夾

updates 其實可以 mirror 國內頻寬比較大的站台, mirror 一份回來做 yum server, 對於單位內主機數量多的環境可以節省蠻多頻寬的

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5363
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #3 於: 2004-12-31 18:38 »
其實.... 當然是找最不重要的 load balanced real server 先試了才敢做. 反正掛了還有其它台主機可以用.
成功了就再做開發專用的 server, 反正這兒最後這一個星期都幾乎在放假, 那台機器沒人會去用.

都成功了, 才去動線上正式環境的主機.

看來 yum 可以做到和 debian 中的 apt 差不多的效果了. 可以輕鬆的將 rpm 的環境升級到別的版本... 這以往只有用 apt 的 debian 才能做.

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5363
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #4 於: 2005-04-11 18:16 »
這個星期週末, 順便把公司內的主機由 CentOS 3.4 換到 4.0 上頭了. 也是使用 yum 來處理.

之前在 CentOS 4 剛出來時, 找了一台機器試過, 會有些衝突 (kernel 與 udev), 前幾天在 CentOS 的討論區看到似乎有人成功轉換. 所以... 也跟著試看看.

結果... 發現... 那篇文章似乎有點問題, 連 yum 都先升級... 結果 yum 就不能用了...

我參考該說明, 修正一下, 步驟約如下 (x86-64 檔名有些不同):

1. rpm --import RPM-GPG-KEY-centos4
2. rpm -Uvh --force centos-release-4-0.1.i386.rpm
3. rpm -Uvh --force centos-yumconf-4-2.noarch.rpm
4. 安裝新的 kernel
rpm -ivh --force --nodeps kernel-2.6.9-5.0.3.EL.i686.rpm
5. 安裝 udev
rpm -ivh --force --nodeps udev-039-10.8.EL4.i386.rpm
6. rpm --rebuilddb
7. 設定好 yum-upgrade.conf, 然後執行
yum -c /etc/yum-upgrade.conf upgrade
8. 如果沒問題, 再安裝一次 kernel
rpm -ivh --force --nodeps kernel-2.6.9-5.0.3.EL.i686.rpm
9. rpm --rebuilddb
10. yum update 看看有沒有其他的要更新.
11. 更改 /boot/grub/menu.lst 指定用新的 kernel 開機
12. 重開機看看. (可能會移除一些舊的 driver, 加上一些新的 driver)

大致上是這樣處理.

其中可能有問題的是在 upgrade 那一個步驟, 可能會說有那些軟體是有衝突的. 就想辦法一個個先安裝或先移除, 等升級後再安裝.
我們碰到的有:

MySQL, 這個由 3.x 升到 4.1.x. 如果有裝 mysql-server, 會有問題.
我們的處理方式是先強迫安裝
rpm -Uvh --force --nodeps \
  mysql-4.1.7-4.RHEL4.1.i386.rpm \
  mysql-server-4.1.7-4.RHEL4.1.i386.rpm \
  mysqlclient10-3.23.58-4.RHEL4.1.i386.rpm
然後在 yum-upgrade.conf 的 [main] 中加上
exclude=mysql-server mysql
後就可以避開這個問題. 至於原本的 mysql 資料庫, 原則上檔案可以相容, 並不用 dump 出來再 restore. 不過.... 如果你怕有問題... 就自己 dump 吧.

PostgreSQL, 這個由 7.3.x 升到 7.4.x 似乎不能直接使用原本的檔案. 所以我們只好先用 pg_dumpall 把資料複製下來, 等升級後再放回去. 因為要做這個動作, 所以就順便到 postgresql 網站抓了 8.0.1 的版本回來, 直接升到 8.0.1 上頭去.
在 upgrade 先備份
pg_dumpall > dbxxx.out
備份後執行 upgrade, 等 upgrade 後
移除 postgresql
rpm -e postgresql-libs postgresql perl-DBD-Pg php-pgsql
安裝 8.0.1 版本
rpm -ivh postgresql-8.0.1-2PGDG.i686.rpm \
    postgresql-server-8.0.1-2PGDG.i686.rpm \
    postgresql-libs-8.0.1-2PGDG.i686.rpm \
    postgresql-contrib-8.0.1-2PGDG.i686.rpm \
    postgresql-pl-8.0.1-2PGDG.i686.rpm \
    postgresql-python-8.0.1-2PGDG.i686.rpm
把資料庫放回去
psql -f dbxxx.out template1

postfix, 在 upgrade 過程不會有問題, 但是 upgrade 後, aliases, aliases.db 會被改名, 要改回來才能啟動.

subversion, 先強迫升級
rpm -Uvh --force --nodeps \
 subversion-1.1.1-2.1.i386.rpm  \
 subversion-perl-1.1.1-2.1.i386.rpm \
 subversion-devel-1.1.1-2.1.i386.rpm

openldap, 升到 2.2.x 版, 由於新版的設定比較嚴格, 原本的 schema 可能要修改才會符合. 且 ACL 的語法不太一樣, 也要重設.


除此之外, 並沒有發現有其它的問題.

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #5 於: 2005-04-27 15:18 »
前幾天公司買了兩台1U的Server,
本來打算安裝Fedora或是CentOS.
沒想到主機板內建的Intel 6300ESB Raid晶片,
需要另外安裝Driver.
而且沒有Fedora跟CentOS的.
想說有RHEL版本跟RH9的Driver應該可以在Fedora中安裝,
沒想到不能裝,最後被迫要安裝RH9.

還好有twu2大大的這篇文件,
讓我可以成功的升級至Fedora.
感謝twu2大大及站上大大的無私奉獻....

different

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #6 於: 2005-08-24 15:51 »
引述: "湯姆貓"
前幾天公司買了兩台1U的Server,
本來打算安裝Fedora或是CentOS.
沒想到主機板內建的Intel 6300ESB Raid晶片,
需要另外安裝Driver.
而且沒有Fedora跟CentOS的.
想說有RHEL版本跟RH9的Driver應該可以在Fedora中安裝,
沒想到不能裝,最後被迫要安裝RH9.

還好有twu2大大的這篇文件,
讓我可以成功的升級至Fedora.
感謝twu2大大及站上大大的無私奉獻....


   想問你關於SATA RAID的問題..你說你升即到fedora沒有問題..那kernel有沒有更新呀?我是升級了沒錯..不過kernel還是無法升級..會出現
No module aarich found for kernel 2.4.21-32.0.1.ELsmp, aborting
請問你有這個問題嗎??
該怎麼解決呀??

學飛的小鳥

  • 活潑的大學生
  • ***
  • 文章數: 349
    • 檢視個人資料
使用 yum 升級你的系統 (redhat9 升級到 CentOS 3.3)
« 回覆 #7 於: 2005-11-13 23:57 »
今天遵照 twu2 大大的方式將 fedora 2 升級為 CentOS 4.2
過程發生一些問題
php needs libcurl.so.2, this is not available
cyrus-imapd-devel needs cyrus-imapd = 2.2.10-3.fc2, this is not available

先將這兩個套件解安裝便可順利進行升級,
升級後, 這兩個套件會自動被安裝

升級完成後重開機, 一切都正常啟動, 但是原來的網站卻連不上了...
找了好久, 終於發現, 原來的 named.conf 會被取代, 改回來就可以了.
另外, 如果原來的 php.conf 有做額外的設定, 可能也會被取代...