RHEL5.0 的軟體包管理
來源:互聯網
上載者:User
RHEL(Red Hat Enterprise Linux)升級到5.0以後,開始用yum(Yellow dog Update Manager)來管理軟體包,包括軟體包的更新和補丁的下發。這個可不是一個小變化!這樣以來:
1,如果沒有購買 Redhat的訂閱,就不能得到安裝號碼(注意不是開始安裝時的序號),從而不能註冊系統,就不能得到紅帽的軟體更新和補丁服務;
2,“添加/刪除軟體”中(軟體包管理器,命令名字是 pirut),軟體“列表”就只能看到已經安裝的軟體包;而“瀏覽”標籤頁下將看不到任何可管理的軟體包分類(有人認為這是個Bug,其實是Redhat故意製造的“Bug”)。開啟菜單“應用程式/系統工具/軟體封裝更新工具”,就會要求使用者輸入訂閱或去註冊和購買訂閱。 這樣,就不能及時獲得紅帽的更新(沒付費,尚且可以理解吧),而且不能用GUI介面的包管理工具來添加/刪除系統中的rpm軟體包了。雖然可以手工用命令 rpm 來安裝和卸載包(命令分別形如 rpm -Uvh packge.rpm 和 rpm -e package),而且只要手工正確安裝後,使用上不會有任何問題,但就沒有了圖形介面的方便性。 事實上,所有的 rpm 包都儲存在 RHEL安裝光碟片(卷標RHEL_5.1 i386 DVD)的 Server 目錄下,手工安裝時也就是從這裡取得安裝源。RHEL5.0其實是把安裝源從這裡指向了它的某個http服務網址了,而且我們可以猜測,直接連接這個網址顯然應該需要認證的了。但我們可以設想,如果把安裝源指向本地的檔案系統,可能也是可以的?事實上確實是可以的。 做法: 1,載入DVD安裝盤:
cd /media
mkdir iso
mount /dev/hdc iso
在我用 Vmware6.0安裝的RHEL5.3裡,用 df 命令看到我的光碟機裝置是 /dev/hdc。我這裡加裝到了 /media/iso下。
注意系統本來是自動載入到了 /media/RHEL_5.1 i386 DVD/ 下的,但因為DVD的卷標中間有空格,使用時有問題。所以特別再載入一次,換一個路徑。 2,在/etc/yum.repos.d/路徑下建立文字檔 RHEL5media.repo,輸入以下常值內容:
[base]
name=Base RPM Repository for RHEL5
baseurl=file:///media/iso/Server/
enabled=1
gpgcheck=0 3,修改/usr/lib/python2.4/site-packages/yum/路徑下的yumRepo.py檔案(可以看到,RHEL5.0的系統代碼是用Python開發的!),將其中第 411 行由 remote = url + '/' + relative 修改為 remote = "file:///mnt/iso/Server/" + '/' + relative 就可以了。 這時點擊“應用程式/系統工具/軟體封裝更新工具”(命令名字是 pup),就會彈出“軟體封裝更新”視窗,提示沒有可用的更新:“當前還沒有對您的系統有效更新的軟體包。”文法無可挑剔,但感覺很拗口的一句話了,是個假洋鬼子翻譯的吧? 再點擊“應用程式/添加刪除軟體”(不能和上面的“軟體封裝更新工具”同時運行,會有出錯提示),開啟“軟體包管理器”,就會看到“瀏覽”下左邊是“案頭環境”“應用程式”“開發”“伺服器”“基本系統”“語言支援”六個軟體包分類,右邊會分別列出所有的軟體包,包括本系統已經安裝的和未安裝的包。 要注意的是,我是用 mount 命令臨時載入光碟機裝置到 /media/iso/ 下的,以後要如此管理軟體包的話必須首先做這一步。如果還想要“自動化”,那麼把這條命令加到啟動時的自動運行檔案裡就可以了。方法是:在 /etc/ 下的 rc.local 檔案末尾裡加:
mount /dev/hdc /media/iso 我順便想到,如果把Redhat以後的更新包通過手工下載,再添加到光碟片的Server目錄下(關盤是不可寫的,換個路徑吧),是不是可以照樣升級系統呢?理論上是可以的,但這時rpm包的依賴問題不知道能不能解決呢?我不知道。 (本文在 RHEL5.03下用 gedit編輯器寫成。) 2009-4-26