一、簡介
yum( 全稱為:Yellow dog Updater, Modified),是紅帽(RedHat)家族(RedHat、Fedora、CentOS)中的前端shell的軟件包管理器,主要基于對RPM包的管理,能夠根據配置文件(類似于svn資源庫配置文件)從指定的服務器自動下載RPM包進行安裝,其最大的優勢就是可以解決令人頭疼的軟件包依賴問題,它在安裝軟件包時會自動把相關依賴包也進行安裝(卸載)操作,從而解決了在手動安裝程序包的同時還要單獨安裝相關依賴包的問題。
yum依賴于基于C/S架構的文件服務器,這些文件服務器用來存放yum在安裝程序包時所依賴的各種程序包,它的運作流程是先通過配置文件(支持多倉庫指向,并自動尋找各個倉庫中最新版本的包或優先級最高版本的包)或者參數命令的方式通過文件傳輸協議找到該倉庫服務器進行查詢,倉庫服務器找到后會通過下載協議把相關文件包下載到本地的緩存(含元數據和程序包)目錄中,并且進行安裝操作,之后再刪除相關緩存。由于yum命令是開發運維過程中非常常用重要的一個命令,因此我們一定要熟練用好它。
yum支持的常見的服務如下:
ftp服務
http服務
本地文件目錄
NFS服務
yum緩存分為兩種:
(1)數據:程序包
(2)元數據:repodata(請求的安裝包及依賴包的名稱、大小、版本、依賴關系等屬性)
注意:倉庫指向的路徑就是repodata目錄所在的父目錄
執行流程為:第一次訪問倉庫時請求倉庫服務器的元數據并下載到本地緩存目錄中,然后檢索下載安裝包及其相關依賴包并進行安裝,安裝完成后最后再刪除緩存目錄中的這些安裝包,保留元數據。之后再次下載安裝包會先去倉庫服務器查詢元數據的校驗碼,并和本地元數據校驗碼進行比較,如果校驗碼相同,則直接忽略;如果不同就重新下載元數據并對本地緩存目錄中的元數據進行覆蓋,從而完成緩存有效性驗證。
二、用法詳解
(1)配置文件說明:包含倉庫位置路徑、緩存大小、緩存路徑及相關各種配置信息;每個yum命令行可以指向多個倉庫,倉庫間可以有優先級等相關配置;有如下兩部分組成:
a.主配置文件:/etc/yum.conf (為各倉庫指向提供公共配置信息,遵循windows上ini文件的語法格式)
yum.conf文件中的[main]段提供公共配置,詳情見下圖:
b.各倉庫的定義:/etc/yum.repos.d/*.repo (必須以repo結尾的文件才有效,每個repo文件中可以配置一至多個倉庫)
默認情況下只需配置name、baseurl及gpgcheck=0就可以(默認gpgcheck=1)
[repositoryid]對于當前系統的yum來講,此repositoryid用于惟一標識此repository指向,因此,其必須惟一,詳情見下圖:
補充說明:cost屬性指明當前repository的訪問開銷,默認為1000;
查看yum緩存路徑如下圖:
倉庫管理:
-
列出當前yum所有可用倉庫,命令格式:repolist [all|enabled|disabled]
輸入命令:yum repolist (等價于yum repolist enabled),效果如下圖:
緩存管理:
2.清理yum緩存,命令格式:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
清理yum緩存中包的數據,輸入命令:yum clean packages ,效果如下圖:
清理yum緩存中的元數據,輸入命令:yum clean metadata ,效果如下圖:
清理yum緩存中過期的數據,輸入命令:yum clean expire-cache ,效果如下圖:
清理yum緩存中rmp數據庫中的數據,輸入命令:yum clean rpmdb ,效果如下圖:
清理yum緩存中的插件數據,輸入命令:yum clean plugins ,效果如下圖:
清理yum緩存中所有的數據,輸入命令:yum clean all ,效果如下圖:
3.yum緩存創建,makecache自動連接至每一個可用倉庫,下載其元數據,將其創建為緩存
輸入命令:yum makecache,效果如下圖:
程序包查看:
4.yum程序包查看,輸出格式為:“包名+平臺+版本號-發行號+提供倉庫(從哪個倉庫中安裝在當前系統中的)”,命令格式:
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available(可安裝尚未安裝)|updates(可升級)|installed(已安裝)|extras(倉庫中沒有但系統中安裝的包)|obsoletes(已廢棄的)|recent(剛加進倉庫的新包)} [glob_exp1] […]
grouplist [hidden] [groupwildcard] […]
查看mysql開頭的程序包,輸入命令:yum list mysql*,效果如下圖:
查看yum中可安裝尚未安裝的程序包,輸入命令:yum list available,效果如下圖:
查看yum中可升級的程序包,輸入命令:yum list updates,效果如下圖:
查看yum中已安裝的程序包,輸入命令:yum list installed,效果如下圖:
查看yum中倉庫里沒有但系統中安裝的程序包,輸入命令:yum list extras,效果如下圖:
查看yum中已廢棄的程序包,輸入命令:yum list obsoletes,效果如下圖:
查看yum中剛加進倉庫的新程序包,輸入命令:yum list recent,效果如下圖:
查看yum中所有可用的程序包組,輸入命令:yum grouplist,效果如下圖:
程序包安裝:
5.yum程序包安裝,只需提供包名即可安裝,命令格式:install package1 [package2] […],支持多個包同時安裝。
如果某包有在不同倉庫中有多個不同版本,默認會安裝最新版本;
如果要安裝指定版本:install PACKAGE-VERSION …
安裝php程序包,輸入命令:yum install php,效果如下圖:
安裝php-mysql程序包并自動確認(加-y參數),輸入命令:yum -y install php-mysql,效果如下圖:
程序包重新(覆蓋)安裝:
命令格式:reinstall package1 [package2] […]
重新安裝php-mysql程序包,輸入命令:yum reinstall php-mysql,效果如下圖:
程序包升級
命令格式:update [package1] [package2] […]
yum升級java程序包,輸入命令:yum update java,效果如下圖:
程序包降級
命令格式:downgrade [package1] [package2] […]
yum降級java程序包,輸入命令:yum downgrade java,效果如下圖:
檢查程序包有哪些可用升級
命令格式:check update
yum檢查程序包有哪些可以用升級,輸入命令:yum check-update,效果如下圖:
卸載程序包
卸載安裝包的依賴包會把安裝包也卸載,但卸載安裝包不會卸載其關聯的依賴包,所有依賴于正卸載的程序包的程序包會被一并卸載,命令格式:remove | erase package1 [package2] […]
yum卸載php安裝包,輸入命令:yum remove php,效果如下圖:
yum卸載php-common安裝包,輸入命令:yum remove php-common,效果如下圖:
yum卸載php-mysql安裝包,輸入命令:yum erase php-mysql,效果如下圖:
程序包查詢
查詢程序的相關簡要信息:info PACKAGE …
在包名和sumary信息中搜索指定的關鍵字:search KEYWORD …
查詢指定文件由哪個程序包安裝生成:provides|whatprovides /PATH/TO/SOMEFILE
yum查詢php安裝包信息,輸入命令:yum info php,效果如下圖:
yum搜索mysql(搜索結果只要在程序包名稱和描述信息包含mysql關鍵字就會被顯示出來),輸入命令:yum search mysql,效果如下圖:
yum查詢/etc/fstab是由哪個安裝包生成的,輸入命令:yum provides /etc/fstab或者yum whatprovides /etc/fstab,效果如下圖:
安裝/升級本地的程序包文件
注意:紅帽7不支持localinstall和localupdate,紅帽6和7都直接使用install和update安裝即可
用于安裝倉庫中并不存在的程序包文件,這些程序包有可能又依賴于倉庫中的某些程序包。
安裝本地程序包命令格式:localinstall rpmfile1 [rpmfile2] […]
升級本地程序包命令格式:localupdate rpmfile1 [rpmfile2] […]
yum安裝本地php-common-5.3.3-40.el6_6.x86_64.rpm程序包,輸入命令:yum localinstall php-common-5.3.3-40.el6_6.x86_64.rpm ,效果如下圖:
程序包組管理
列出所有包組:grouplist
顯示指定包組詳情:groupinfo group1 […]
安裝:groupinstall group1 [group2] […]
卸載:groupremove group1 [group2] […]
升級:groupupdate group1 [group2] […]
注意:紅帽7不支持groupinstall、groupremove和groupupdate,紅帽6和7都可直接用install、remove或update來管理包組
方法為:install + @ + 包組名,如yum install @"Ruby 支持"
yum查看Eclipse包組信息,輸入命令:yum groupinfo Eclipse,效果如下圖:
yum安裝Ruby支持包組,輸入命令:yum groupinstall "Ruby 支持" 或 yum install @"Ruby 支持"(此處必須加雙引號,不然無效),效果如下圖:
yum卸載Ruby支持包組,輸入命令:yum groupremove "Ruby 支持"或 yum remove @"Ruby 支持"(此處必須加雙引號,不然無效),效果如下圖:
yum升級Ruby支持包組,輸入命令:yum groupupdate "Ruby 支持"或yum update @"Ruby 支持"(此處必須加雙引號,不然無效),效果如下圖:
yum命令的可用選項:
-y: 自動回答為“yes”
–disablerepo=: 臨時禁用在配置文件中配置并啟用的某repository;
–enablerepo=: 臨時啟用指定的某repo;
–nogpgcheck: 禁止做包校驗;
yum內置變量:
用于保存當前平臺的相信息;
(1) $raleasever: 當前OS發行版的主版本號;
例如,對CentOS 6.6 x86_64,主版本號為6;
(2) $arch:平臺 如:i386, i486,i586
(3) $basearch: 基礎平臺, 例如i686, i586, i486以及i386的基礎平臺同為i386;
(4) $YUM0-$YUM9
原創文章,作者:鏡花水月,如若轉載,請注明出處:http://www.www58058.com/8251
呵,第一眼就有欣喜的感覺,難得又看見幾篇不錯的文章
@stanley:多謝這位朋友支持,希望能幫助到大家。