RPM安裝軟件有一個很繁瑣的問題,那就是包與包之間的依賴關系,如果想正常安裝和使用軟件程序,就必須根據要求一步一步的解決軟件之間的依賴關系。那麼如果程序使用的包很多,將會很消耗使用人的時間和精力。那麼有沒有辦法解決這一問題呢?
在RPM中我們介紹了RPM軟件會記錄軟件之間的安裝信息,其中也包括了軟件之間的依賴屬性。那麼如果我們在安裝前就分析這個列表,那麼在安裝時就能根據軟件之間的關系將所需的軟件一次性安裝起來,這樣就能解決這一問題,這就是 YUM 的機制。
yum(Yellow dog Updater Modified)是CentOS中屬於RPM前段軟件包管理器,能從指定的服務器中下載RPM包,並自動分析和處理RPM包之間的依賴關系,最後將依次所依賴的軟件包都安裝了,而無需繁瑣的一個一個安裝。
yum倉庫的組成部分
3.1、數據
包含所有的軟件包文件
3.2、元數據
指的是數據文件:包括每個包的包名、版本信息、各包所包含的文件列表、包與包之間的依賴關系、包的分組信息
小擴展:元數據是怎麼來的呢?
使用createrepo工具,能夠簡潔的快速的將我們所指定的存放大量RPM包的目錄,裡面所有的RPM包信息都讀出來,分析他的依賴關系並生成元數據。所以createrepo可以理解為它是制作yum元數據的工具。 在光盤裡其實也有這個元數據,路徑在光盤中的 [root@www mnt]# cd repodata/ 裡,然後是以 sqlite文件後綴 備注:centos5 是以 xml 後綴,centos6、7是以sqlite數據庫的方式存儲的
yum的配置文件有2個: 主配置文件 + 倉庫配置文件
4.1、主配置文件路徑 /etc/yum.conf
[main] cachedir=/var/cache/yum/$basearch/$releasever #下載RPM包的緩存目錄 keepcache=0 #RPM緩存的程序包安裝完成後是否保存,0表示不保存,1表示保存 buglevel=2 #調試級別 取值范圍 0 - 10,默認值為2 logfile=/var/log/yum.log #yum相關日志存放路徑 exactarch=1 #是否要平台完全匹配才能安裝 obsoletes=1 #需不需要檢查已過期的倉庫 gpgcheck=1 #是否檢查包的完整性和合法性 plugins=1 #是否允許支持yum的插件功能,0 表示不允許 ,1表示允許,建議允許,一般會用yum-fastestmirror這個插件 installonly_limit=5 #允許保留多少個內核包 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release #指定一個軟件包,yum 會根據這個包判斷你的發行版本,默認是RedHat-release,也可以是安裝的任何針對自己發行版的rpm包
4.2、倉庫配置文件路徑 /etc/yum.repos.d/*.repo
倉庫文件可以有多個,而且一個或幾個相關的倉庫的配置信息也可保存為一個文件,並且所以的倉庫文件名都以 .repo結尾。
[REPOID] #容器名字,必須是唯一的 name= #some name for this repository倉庫的名字,僅作一個標識 baseurl= #指定真正倉庫所在的路徑,可以指多個倉庫 #例如:baseurl=file:///media/cdrom # ftp://172.168.1.1/path #備注第二行不能頂格寫,否則會出錯 mirrorlist= #列出容器可以使用站點,如果不想使用,可以再前面加 # 注釋 enabled= {0 | 1} #指是否啟用這個倉庫,0表示不啟用,1表示啟用 gpgcheck= {0 | 1} #是否要檢測軟件包的合法性,0表示不檢測,1表示不檢查 gpgkey= #軟件包的公鑰文件所在路徑,例如:gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6 cost= #倉庫優先級,比如一個軟件包在多個倉庫都有,那應該選擇哪個安裝呢?就是根據這個優先級,默認是100, 數字越小表示越優先使用
備注:默認各倉庫的用法:
base庫:通常為系統發行版所提供的程序包(就是光盤) updates庫:存放更新包 extra庫:存放額外包 epel庫:epel庫文件 庫本身有優先級的,但是僅是在客戶端有,服務器端是沒有優先級的
小貼士:yum可支持多個協議,包括 ftp、http、nfs和本地文件共享服務
所以倉庫配置文件中的 baseurl 一項可以有多個寫法,下面是各寫法的格式
1)ftp
格式:ftp://server/path/to/repository
2)http
格式:http://server/path/to/repository
3)nfs
格式:nfs://server/nfs_path
4)本地文件共享服務
格式:file:///path/to/repository