CentOS用安裝光碟片建立本地 yum 源補裝 RPM 軟體包
CentOS或者RHEL 系統內容下,RPM 的依賴性是個很讓人頭疼的問題。每次系統安裝完成過後,想再裝一個軟體包,敲下斷行符號之前,都會心驚膽戰,生怕跳出個依賴性錯誤。而在一個依賴性錯誤的背後,可能還牽連著更多的依賴性。這個問題讓很多 Linux 使用者望而生畏。
RPM 包的依賴關係說起來是簡單的因為它所謂的依賴關係僅僅是一個個簡單的如“要安裝 A,需要提前準備好 a1, a2, a3”這樣的條件。
例如,當我們安裝gcc時。找到安裝光碟片,小心翼翼地掛載上,並找到了gcc-4.1.2-50.el5.i386.rpm 嘗試著用
rpm -ivh gcc-4.1.2-50.el5.i386.rpm
進行安裝。系統告之缺少 glibc-devel 和 libgomp,當你試著安裝 glibc-devel,系統又提示缺少 glibc-headers。繼續下去,又發現缺少 kernel-headers。很苦惱,心想如果當初選擇了完整安裝該有多好!同時也抱怨怎麼Linux就這麼難用的啊,要是像Windows下面一直next多好啊!最終,按照依賴提示,遞迴似的完成了 gcc 的安裝。很慶幸的完成了這個任務。其實只是因為這個安裝任務的依賴關係還不夠複雜到把我們嚇退罷了。
那我強烈推薦使用yum!
yum 對 RPM 包的處理是一個典型的“空間換時間”過程。通過對源中所有 RPM 包的預先處理,產生所有安裝包關於包含檔案,依賴,衝突等資訊的索引,並且以 sqlite 格式存放在 /var/cache/yum 對應目錄下面。
用DVD建立本地yum源
既然 yum 已經很好的解決了 RPM 包的依賴問題,要解決的就是速度問題。本地光碟機的訪問速度甚至快過 100M 區域網路,而且在最近一些發行版安裝盤中,已經預置好 repo 資訊,並存放在名為 repodata 的目錄中。可以說安裝盤本身就是一個現成的 yum 源。在 CentOS5 中,預置了多個 repo,放在了/etc/yum.repos.d目錄中;
首先,把光碟片放入光碟機,掛載光碟片。
# mount /dev/hdc /media/cdrom
 mount: block device /dev/hdc is write-protected, mounting read-only
CentOS 5.6中可以自動掛載,所以可以不需要建cdrom檔案夾來掛載DVD,可以直接使用CentOS_5.6_Final
如果在本地有安裝盤鏡像,也通過 loop 方式掛載到相應目錄。
# mount -o loop CentOS-5.6-i386-bin-DVD.iso /media/cdrom
然後,編輯 yum 源設定檔,添加一個本地 yum 源。這裡是一張 CentOS 5.6的 DVD 安裝盤,它的 repo 對應是dvd.repo
如果是RHEL Server,則對應的baseurl是
baseurl=file:///media/cdrom/Server
或者直接在/etc/yum.repos.d目錄中建立 dvd.repo
然後使用vi開啟,寫入如下類容:
[dvd]
name=install CentOS DVD
baseurl=file:///media/cdrom
enable=1
gpgcheck=0
完成本地源配置過後,接下來就可以用 yum 進行 RPM 包的補裝了。首先,查看剛剛配置好的 yum 源。
yum list
然後,通過熟知的 yum install 來補裝軟體包。從輸出資訊可以看到,yum 會幫我們處理好 RPM 包的依賴關係。同時由於包都在本地,下載的時間幾乎可以忽略。