一、什麼是YUM
YUM是“Yellow dogUpdater, Modified”的縮寫,可執行程序名為yum。YUM是一個在Fedora和RedHat以及SUSE、CentOS中的Shell前端軟件包管理器。在紅帽企業版Linux 5中引入YUM的重要原因之一,便是YUM能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝,便於管理大量系統的更新問題。
二、為什麼要使用YUM
使用yum來安裝軟件包,要比使用rpm命令安裝軟件包方便的太多太多了。最主要的一點,我想還是因為yum可以自動的解決依賴關系吧。使用過linux安裝二進制軟件包的人應該都遇到過rpm包之間的依賴關系,特別是循環依賴,真的是很讓人頭疼,有時候為了安裝一個軟件包,不得不浪費一整天的時間。yum自動解決依賴關系,為我們縮短了安裝軟件包所使用的時間,提高了工作效率,像這樣一個堪稱尤物的家伙,怎麼能讓人不愛呢。yum也可以使用一條命令來直接升級系統上所有要升級的軟件包,你說,不愛她你愛誰呢。
三、怎樣使用YUM
yum的使用其實很簡單,我們只需要把yum軟件包安裝好,然後改下yum源配置文件就可以了,就可以從別人的yum源上自動下載軟件包,然後自動安裝。不過本文章的意義不是在於教你改配置文件,然後安裝yum包,然後再利用yum命令來安裝軟件包,而是要自己動手,自己做YUM源,自己使用自己的YUM源,充分的理解YUM的工作原理。
四、YUM的組成及工作原理
yum由兩部分組成,一部分是yum源(或稱之為yum倉庫|其實就是軟件包倉庫),另一部分就是yum的客戶端,說白了就是安裝好yum軟件,可以使用yum命令的客戶機。
當我們使用yum命令來安裝一個軟件包的時候,yum會根據yum的配置文件(/etc/yum.repos.d/*.repo)來查找yum源,然後下載yum源上的數據文件緩存到本地,以便再次查詢的時候,提高查詢速度。只有第一次才會下載緩存文件。完成之後,如果要安裝的軟件包在軟件倉庫裡,那麼就開始根據服務器上依賴關系文件裡面的定義,看是不是有依賴其它軟件包,如果有,會提示用戶有依賴關系,是不是要安裝,用戶回答y的時候,開始自動解決依賴關系直到完成軟件包的安裝。如果沒依賴關系,也會提示用戶,找到了要安裝的軟件包,是不是現在安裝,如果用戶輸入y,則開始安裝,如果直接回車,默認是不安裝的。一個yum命令,會開啟一個yum事務,所以,如果你正在執行yum命令,然後別人登錄到了你在的服務器,這時候他是不能執行yum命令的,這時候的yum進程是被鎖定的,只有當你的yum命令執行完成後,事務結束,別人才可以使用yum命令。
五、YUM的配置
5.1 配置客戶端
客戶端的配置為兩步,一是安裝軟件包,二是改配置文件
我的機器上安裝了以上軟件包,直接使用rpm -ivh就可以安裝了,安裝完成後,這一步就算是完成了
5.1.2更改配置文件
yum的配置文件有兩部分:主配置文件和yum源配置文件
主配置文件
[root@Honway ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum 緩存目錄
keepcache=0 是否保存緩存
debuglevel=2 調試級別
logfile=/var/log/yum.log 日志文件
distroverpkg=redhat-release
tolerant=1 允許出錯(如果有多個軟件包,當有某個包已經安裝的時候,是否繼續,1表示允許)
exactarch=1
obsoletes=1
gpgcheck=1 安裝的時候,是不是檢測檢測軟件包的簽名信息
plugins=1 啟用插件功能
再來看一下yum怎麼指定yum源的,文件位於/etc/yum.repos.d/目錄下,在這個目錄中所有以.repo結尾的文件,都會被yum認為是yum的yum源配置文件。其寫法如下
[id]
name=custmed yum repository
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0[0禁用|1啟用]
enabled=0[0禁用|1啟用] (默認開啟,該項可不寫)
其中id就是一個名字,可以隨便寫。
name是對id的一個描述信息。
baseurl這裡有三種寫法,也代表了yum支持的三種協議,遠程協議有ftp://和http://,本地yum源的file:/// 是三條斜線
gpgcheck是不是檢測簽名的
enabled是不是啟用這一項,一個yum.repo配置文件中,可以寫多項,每一項的都是以[id]開始的,每一個[id]都可以認為是一個獨立的段
5.2 配置YUM源(YUM倉庫|YUM服務器端)
要配置YUM源,我們要使用一個命令,叫做createrepo,這個軟件包需要安裝,在系統光盤Server目錄中(RHEL5)直接使用rpm -ivh命令安裝即可。
安裝完成後,就可以開始創建yum源了。為了演示效果,我這裡拷貝一下光盤VT目錄,對VT進行創建YUM源。
repodate目錄: yum源的元數據文件目錄
primary.xml.gz 此yum源中定義所有rpm文件及其彼此間的依賴關系,還包含了每一個rpm包中的文件名
filelists.xml.gz: 此yum源中每一個包中文件的文件相關信息;
other.xml.gz: 額外信息,比如changelog等
repomd.xml 校驗碼和時間戳
comps-rhel5-server-core.xml軟件包的分組信息;(除非有分組,否則不會出現,有時候分組需要自己手動創建)
這樣,一個YUM源就算是創建完成了,是不是很EASY啊,創建完成後,我們還可以接著對其它的軟件包進行創建,可以對Server目錄或者其它目錄進行創建,也可以對我們自己制作的RPM包進行創建,把要創建YUM源的所有軟件包放到一個目錄裡面,然後使用createrepo後面跟軟件包所在的目錄就可以了。
到這裡,我們就算是創建完YUM源了我們改一下yum客戶端配置文件,就可以直接使用了,因為客戶端和服務端是在同一台機器上,所以我們可以不用FTP或HTTP服務,直接使用file:///。
六、YUM的簡單使用
yum [options] [command] [package ...]
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
all| installed | available | updates
* info [...]
* provides | whatprovides feature1 [feature2] [...] 查詢指定的文件是由哪個軟件包提供的
* clean [ packages | headers | metadata | dbcache | all ] 清除緩存
* makecache
* groupinstall group1 [group2] [...] 安裝指定的軟件包組
 
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...] 顯示軟件包組
* groupremove group1 [group2] [...] 刪除指定的包組
* groupinfo group1 [...] 查詢指定包組的信息
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...] 安裝下載好的rpm文件
* localupdate rpmfile1 [rpmfile2] [...] 升級下載到本地的rpm包
* reinstall package1 [package2] [...] 重裝軟件包,不刪除原來的.
* downgrade package1 [package2] [...] 降級軟件包
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled] 顯示yum源
* help [command] 顯示指定軟件包的help信息
以上是從man yum裡面弄出來的,只對一些常見的進行了解釋,其它的,自己翻譯自己理解吧,呵呵。
下面貼下自己的yum源配置文件。
[Server]
name=Server
baseurl=http://192.168.0.254/pub/Server
gpgcheck=0
enabled=1
[VT]
name=VT
baseurl=http://192.168.0.254/pub/VT
gpgcheck=0
enabled=1
[Cluster]
name=Cluster
baseurl=http://192.168.0.254/pub/Cluster
gpgeheck=0
[ClusterStorage]
name=ClusterStorage
baseurl=ftp://192.168.0.254/pub/ClusterStorage
gpgcheck=0
enabled=1
本文出自 “吖吖個呸” 博客,請務必保留此出處http://gm100861.blog.51cto.com/1930562/788535