rhel 6.5 yum源的配置
yum 是 yellowdog updater modified 簡稱,說白了就是升級版的rpm, yum的出現主要是由於rpm的那煩人的依賴關係所致, yum能夠自動解決軟體包之間的各種依賴關係(線性依賴, 環形依賴)
yum大致的原理: 當用戶使用yum對軟體包進行管理時,yum會依據它的配置檔案到指定的yum源去下載所有在yum源中與軟體包相關的元資料資訊並將這些資訊快取到本地,然後依據這些資訊對軟體包的依賴性進行分析並嘗試將其解決,接著就是到yum源中下載相關的軟體包到本地並開始安裝
注:
- yum的配置檔案/etc/yum.conf和/etc/yum.repos.d/*.repo
- yum的本地快取位置是在/etc/yum.conf當中定義的,預設位置為/var/cache/yum目錄
- 元資料資訊的儲存位置是在yum源中的repodata目錄當中
- 儲存yum源位置一般是檔案共享伺服器(nfs, ftp, http),當然你的安裝光碟映象也能作為yum源
在這裡主要介紹本地的光碟yum源與網路http的yum源搭建
由於這裡使用的是rhel 6.5 (Redhat Enterprise Linux 6.5),而紅帽認為yum源是收費性的服務,所以我們必須刪除原來安裝系統時一併安裝的yum才行,否則將出現如下資訊
檢視安裝了哪些yum軟體包
# rpm -qa | grep "yum"
刪除這一個yum包即可
# rpm -e yum
由於yum被其它的軟體包依賴,所以在刪除時要使用rpm命令的 --nodeps 選項, 這裡順便刪除subscription-manager這個包,因為我們不購買紅帽的服務
接下來我們在主機能夠聯網並且已經安裝了wget工具的情況下,下載CentOS版的yum軟體包
而需要下載的軟體包如下:
- python-urlgrabber-3.9.1-11.el6.noarch.rpm
- yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
- yum-3.2.29-73.el6.centos.noarch.rpm
通過wget獲取以下包
- # wget http://centos.ustc.edu.cn/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm
- # wget http://centos.ustc.edu.cn/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
- # wget http://centos.ustc.edu.cn/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
安裝下載的軟體包
# rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
安裝時會報錯,原因是因為系統在安裝時已經安裝過python-urlgrabber 2.6的版,所以我們得刪除這個包才行
然後繼續安裝
接著安裝yum的主包
# rpm -ivh yum-3.2.29-73.el6.centos.noarch.rpm
安裝時又報錯,因為yum的主包依賴於yum-plugin-fastestmirror這個包
那麼我就先安裝yum-plugin-fastestmirror這個包吧
安裝時又報錯,此時你應該知道為什麼會出現yum這種工具了吧
因為這是環形依賴(A 依賴 B, B 依賴 A),所以解決的辦法就是同時安裝這兩個包
此時我們的yum已經安裝完成,剩下的就是怎樣去配置yum源了
####################################################################################################################################
其實此處有個更簡單的辦法就是直接把subscription-manager刪除即可, 這個方法簡單粗暴, 我也是經過多次嘗試才知道的,
前面寫的都白費了 # rpm -e subscription-manager
################################################################################
配置本地光碟yum源
由於我們是在虛擬機器中作測試,所以得用虛擬機器模擬將光碟插入虛擬機器的光碟機中
虛擬機器(virtual machine) --> 設定(settings) --> CD/DVD(IDE)
然後再把光碟掛載到/media目錄當中
# mount -r /dev/sr0 /media
接著就是要編輯yum的配置檔案
進入vi後,進行如下編輯
[Media] | 這是yum源的容器的名稱,中括號內可以隨便寫任意字串 |
name=Media - /media | 這是對容器的說明,也是可以隨便寫 |
baseurl=file:///media | 容器地址,本地光碟採用file://這種協議 |
enabled=1 | 是否啟用這個yum源 |
gpgcheck=1 | 是否進行驗證來源合法性 |
gpgkey=file:///media/RPM-GPG-KEY-redhat-release | 驗證公鑰的位置 |
做好了這些準備工作後,我們來嘗試使用yum安裝tree這個軟體包
這樣我們本地光碟yum源就配置完成了
網路http的yum源
配置網路http的yum源比較簡單,我們先到CentOS官方的yum源映象網址選擇合適的yum源映象站點
CentOS官方的yum源映象網址https://www.centos.org/download/mirrors/
這裡我們選擇中國科技大學的yum源映象站點,需要做的事情就是使用wget下載下面這個檔案
# cd /etc/yum.repos.d/
# wget -O CentOS-Base.repo https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=2
貌似遇到DNS不能夠解析"lug.ustc.edu.cn"的問題,對於現在的我還沒有能力解決這個問題,我也搜尋過很多資訊,它們一般會告訴你將/etc/resolv.conf檔案當中的DNS修改這nameserver
8.8.8.8, 我試了還是不行,所以現在只能在windows的瀏覽器位址列中輸入https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=2
,然後用文字編輯器開啟下載好的檔案
然後再將其內容貼上到虛擬機器中的CentOS-Base.repo當中去
儲存並退出後,測試一下這個yum源是否能用, 先清空yum的快取
# yum clean all
然後測試yum
# yum -y install vim
再次報錯
原因在於剛才的CentOS-Base.repo這個檔案當中的 $releasever 這個變數貌似展開得到不對所致,具體原因我現在還沒找到,解決的辦法就是開啟剛才的CentOS-Base.repo這檔案將所有的$releasever替換為你的linux的版本,如果是
rehel 6.x 就替換為 6 即可
# vi CentOS-Base.repo
儲存並退出, 然後將yum源中的元資料資訊快取到本地的/var/cache/yum目錄當中去
# yum makecache
快取完元資料資訊後以後,測試yum源是否可以使用
# yum -y install vim
到此為此,我們的http網路yum源已經配置完成