2008年8月9日 星期六

升級成新版的 FEDORA

FEDORA 提供了一個簡單的 升級管理程式 yum
不只可以利用 yum 安裝, 管理, 升級各個程式
也可以用來升級 FEDORA 的安裝版本
像是
Fedora core 6 --> Fedora 7 啦!
Fedora 7 --> Fedora 8 啦!
Fedora 8 --> Fedora 9 (新增)
基本上的動作只有幾個
1 清掉 yum 的 cache
2 下載 新版的 資料
3 升級為新版本的程式

1 yum clean all

Fedora 8 --> Fedora 9 需要下的指令如下 (此處為舊的作法, 新的作法可用 preupgradey 進行 見後面附註2)
2 rpm -Uvh ftp://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/i386/os/Packages/fedora-release-9-2.noarch.rpm ftp://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/i386/os/Packages/fedora-release-notes-9.0.0-1.noarch.rpm
(需注意升級的目標的版本及相關位置)

Fedora 7 --> Fedora 8 需要下的指令如下
2 rpm -Uvh ftp://download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/
i386/os/Packages/fedora-release-8-3.noarch.rpm
ftp://download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/
i386/os/Packages/fedora-release-notes-8.0.0-3.noarch.rpm
(需注意升級的目標的版本及相關位置)

Fedora core 6 --> Fedora 7 執行如下
2 rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/
i386/os/Fedora/fedora-release-notes-7.0.0-1.noarch.rpm
http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/
i386/os/Fedora/fedora-release-7-3.noarch.rpm
)

3 yum upgrade
這裡要注意可能有些軟體在新舊版本中使用的套件並不相容, 可先移除後, 再在升級新版本完成後再安裝
同時要注意, 重要的檔案路徑其分割區需要的磁碟空間要夠大 (每個 版本間的 upgrade 大約要 1~1.2 G), 我在安裝過程中也曾經碰過 /usr 剩餘的空間不夠大, upgrade 不成功的情況

附註1
在Fedora 7 升級 Fedora 8完成1,2 後, 進行 3更新的時候, 出現了一個衝突的問題
avahi.i386 在list 中有兩個版本, 分別為 fc7 及 fc8
要繼續進行系統安全性升級等動作, 出現了下列錯誤訊息

Transaction Check Error:

file /etc/avahi/avahi-autoipd.action from install of avahi-autoipd-0.6.21-8.fc8.i386 conflicts with file from package
avahi-0.6.17-1.fc7.i386
file /usr/sbin/avahi-autoipd from install of avahi-autoipd-0.6.21-8.fc8.i386 conflicts with file from package
avahi-0.6.17-1.fc7.i386

若利用 yum 先移除 avahi.i386 再安裝也會出錯
發生原因是, avahi-daemon avahi-dnsconfid 在 fc7 及 fc8 中 安裝在不同的位置
升級過程 中執行移除 avahi.i386 的script 會依 fc7 的路徑刪除檔案後再依 fc8 的script 再作一次 (或是反過來), 就會出現找不到檔案或路徑的錯誤
若手動移除 avahi*.fc7.i386 及 avahi.fc8.i386 會影響很多package, 重裝費時

請執行下面的指令, 跳過rpm套件的script直接將 avahi*.fc7 移除掉

rpm -e --noscripts avahi-0.6.17-1.fc7

成功後即可繼續利用 yum 進行 update

附註2 改用 preupgrade 套件進行

1 更新 yum
yum update fedora-release
2 安裝 preupgrade 套件
yum install preupgrade
3 在 x window 中執行 preupgrade
preupgrade

2008年8月4日 星期一

/var/log/messages stopped to log 系統記錄檔停止寫入 log 資料

跑了一段時間的 Server 通常都需要升級許多的套件, 升級結果偶而會發生下列的情況
/var/log 下面與系統有關的 記錄檔都不再寫入任何資料
包括 /var/log/messages /var/log/security etc.
會發生這個情況的原因是 SELINUX 的檔案目錄權限控管阻擋了許多檔案的寫入動作
造成幾個結果
1. syslogd klogd 仍舊可執行
2. /var/log/messages 長度 0, 無寫入任何資料
3. 手動執行 klogd -x -c 4; syslogd -m 0 可正常啟動
4. 使用服務啟動的script 無法正常寫入任何 log 資料
5. dmesg | grep syslog 會顯示類似下面的訊息
audit(1151150355.645:2): avc: denied { read } for pid=2204 comm="syslogd" name="services" dev=dm-0 ino=14567535 scontext=system_u:system_r:syslogd_t tcontext=rootbject_r:tmp_t tclass=file

第5 項就是問題的解答了 ^_^

遇到這樣的問題, 很容易困擾一些新手管理人員, 但修正的方法很簡單
執行 SELINUX的檔案目錄權限修正程式 fixfiles

fixfiles relabel

等它修正完成, 重啟動 syslogd 就一切正常囉!

google 您真是神啊!