天天看點

Linux軟體包管理神器-->YUM

##########################################

AUTHOR:          Honway_Liu

DATE:                 2012-02-24

<b>一、什麼是YUM</b>

<b>二、為什麼要使用YUM</b>

<b>三、怎樣使用YUM</b>

<b>四、YUM的組成及工作原理</b>

<b>五、YUM的配置</b>

<b>六、YUM的簡單使用</b>

         YUM是“Yellow dog Updater, Modified”的縮寫,可執行程式名為yum。YUM是一個在Fedora和RedHat以及SUSE、CentOS中的Shell前端軟體包管理器。在紅帽企業版Linux 5中引入YUM的重要原因之一,便是YUM能夠從指定的伺服器自動下載下傳RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載下傳、安裝,便于管理大量系統的更新問題。

         使用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的配置檔案(/etc/yum.repos.d/*.repo)來查找yum源,然後下載下傳yum源上的資料檔案緩存到本地,以便再次查詢的時候,提高查詢速度。隻有第一次才會下載下傳緩存檔案。完成之後,如果要安裝的軟體包在軟體倉庫裡,那麼就開始根據伺服器上依賴關系檔案裡面的定義,看是不是有依賴其它軟體包,如果有,會提示使用者有依賴關系,是不是要安裝,使用者回答y的時候,開始自動解決依賴關系直到完成軟體包的安裝。如果沒依賴關系,也會提示使用者,找到了要安裝的軟體包,是不是現在安裝,如果使用者輸入y,則開始安裝,如果直接回車,預設是不安裝的。一個yum指令,會開啟一個yum事務,是以,如果你正在執行yum指令,然後别人登入到了你在的伺服器,這時候他是不能執行yum指令的,這時候的yum程序是被鎖定的,隻有當你的yum指令執行完成後,事務結束,别人才可以使用yum指令。

         用戶端的配置為兩步,一是安裝軟體包,二是改配置檔案

我的機器上安裝了以上軟體包,直接使用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]都可以認為是一個獨立的段

         要配置YUM源,我們要使用一個指令,叫做createrepo,這個軟體包需要安裝,在系統CD光牒Server目錄中(RHEL5)直接使用rpm -ivh指令安裝即可。

    安裝完成後,就可以開始建立yum源了。為了示範效果,我這裡拷貝一下CD光牒VT目錄,對VT進行建立YUM源。

直接使用指令createrepo 後面跟要對哪些軟體包進行建立(這裡指的是軟體包所在的目錄名),建立完成後,就會在該目錄出現一個目錄,叫repodate

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 [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

[Cluster]

name=Cluster

baseurl=http://192.168.0.254/pub/Cluster

gpgeheck=0

[ClusterStorage]

name=ClusterStorage

baseurl=ftp://192.168.0.254/pub/ClusterStorage

本文轉自 gm100861 51CTO部落格,原文連結:http://blog.51cto.com/gm100861/788535

繼續閱讀