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 包的依賴關系。同時由於包都在本地,下載的時間幾乎可以忽略。
補充說明:常用命令
rpm -q xxx 查詢xxx 軟件是否已安裝成功
rpm -ivh xxx.rpm 從本地 xxx軟件的rpm包安裝xxx軟件,軟件依賴關系需要手動解決。
rpm -Uvh http://yy/xxx.rpm 在線更新xxx軟件
yum install xxx 從軟件源(可以是本文設立的DVD源)來自動安裝軟件。軟件依賴關系系統自動解決。
yum list 查看當前系統使用的軟件源
yum search xxx 查找軟件源中是否存在 包含xxx名的軟件
yum list xxx 查找軟件源中是否存在 包含xxx名的軟件