前幾天(FC4發布那天)一不小心趁著熱乎用BT把FC4的ISO下載回來了,到安裝的時候突然覺得還是升級FC3到FC4比較適合我這個懶人,畢竟計算機里面已經配置好了無窮多的程序了。升級安裝有兩種方案:光盤啟動升級和通過apt/yum升級,這兩種方案以前都用過,基本都沒什么大問題,考慮到我的服務器沒有顯示器,制作了安裝光盤也要臨時挪一個顯示器過去,安裝過程需要半小時,這半小時(網關)服務器就無法工作了,所以還是yum升級比較方便。用yum 升級的關鍵是如何節省下載時間,用過debian的人估計都知道,一個unstable的debian過一兩個月做一次 apt-get (dist-)upgrade一般就要下載幾百兆的王文件,這可不是個好主意,我現在已經下載了ISO文件,是不是就可以不用下載升級文件了?
下面就是遠程登陸服務器通過yum升級FC3到FC4的方法
0 root ssh登陸到服務器
1 準備活動,首先參考 http://fedoraproject.org/wiki/YumUpgradeFaq
首先保證FC3的yum是******版本:
$yum update yum
下載FC4的fedora-release:
$wget http://yourmirrorhere/pub/fedora/linux/core/4/$yourarch/os/Fedora/RPMS/fedora-release-4-2.noarch.rpm
$rpm -Uvh /path/to/fedora-release-4-2.noarch.rpm
2 準備安裝文件
copy ISO文件到服務器的一個目錄,$ISO
cd $ISO
$mkdir cd1
$mkdir cd2
$mkdir cd3
$mkdir cd4
$mount -t iso9660 -o loop,ro FC4-i386-disc1.iso cd1
$mount -t iso9660 -o loop,ro FC4-i386-disc2.iso cd2
$mount -t iso9660 -o loop,ro FC4-i386-disc3.iso cd3
$mount -t iso9660 -o loop,ro FC4-i386-disc4.iso cd4
#下面過程是讓yum直接利用ISO文件的關鍵
$cd /var/cache/yum/base/packages
ln -s $ISO/cd1/Fedora/RPMS/*.rpm .
ln -s $ISO/cd2/Fedora/RPMS/*.rpm .
ln -s $ISO/cd3/Fedora/RPMS/*.rpm .
ln -s $ISO/cd4/Fedora/RPMS/*.rpm .
3 運行yum update測試系統軟件包以及要下載的程序大小
由于yum需要計算系統軟件包的相互依賴關系,這一步可能需要比較長的時間(和用光盤升級走到這一步等待的時間差不多,可以忍受)
如果yum運行到***后提示 xxxxx is needed by yyyyy, 直接運行rpm -e yyyy。這一步操作是沒有問題的,即使yyyy軟件包是以后需要的,再次運行yum的過程中yyyy一般都會被自動安裝好。我升級過程中只有 kernel-utils和幾個KDE相關的包出現了依賴錯誤,其它的都很順利。
這一步******的問題是yum會檢測到kernel-utils is needed by kernel(FC4里面已經沒有kernel-utils這個包了),而顯然kernel是不能直接刪除的(按道理如果不重新啟動計算機也可以直接刪除kernel rpm,不過沒有試過,喜歡冒險的可以試一次)。解決辦法:
首先找到FC4安裝盤上面的kernel rpm(在/var/cache/yum/base/packages下面),
$rpm -ihv kernel-2.6.11-1.1369_FC4.i686.rpm
用新kernel重新啟動計算機,重復上面第二步和第三步,然后rpm -e 刪除FC3的kernel和kernel-utils
這時如果不再存在依賴問題了,yum就會提示你輸入一個y,進行下一步升級。升級過程需要時間,不過在此過程中服務器還是一直在工作的,上面運行的服務也都一直保持有效。全部升級完成之后再重新啟動一次,重啟也許都不需要了,因為這時已經在運行FC4的kernel了,其它程序和庫的升級不需要重啟。