上文(http://7703592.blog.51cto.com/7693592/1631539)已經介紹過使用rpm對CentOS6上的軟件包進行管理,之因此強調是在CentOS6之上,是由於在新出的CentOS7上部分操做還能夠更簡化,而對於Linux運維工程師來講,掌握CentOS6上的使用方式,在CentOS7上就不成問題了,而接下來要談的是另一個軟件包管理工具,或者說是rpm的前端工具——yum。前端
爲何要用yumnode
來聊一個話題,那就是Linux的特性之一:組合小程序完成複雜任務,在Linux中,大多數的軟件都遵循這個特性,儘量把軟件的功能作的單一。如果要完成比較複雜的任務,寧願再添加一個軟件,也不會在原來的軟件之上添加新功能。所以,一個大的軟件就會去調用其餘軟件的功能,組合成一個大軟件來完成複雜任務。因此想要安裝的軟件如有依賴的其餘軟件還沒有安裝則會報錯,以下所示: 數據庫
[root@dsl-189-172-5-105-dyn Packages]# rpm -ivh telnet-server-0.17-48.el6.x86_64.rpm error: Failed dependencies: xinetd is needed by telnet-server-1:0.17-48.el6.x86_64 #:該錯誤提示,在安裝telnet-server時,其依賴於xinetd。也就是說xinetd是telnet-server的一個重要組成部分,沒有xinetd則telnet-server不能正常工做。
根據以上提示,你若繼續使用rpm來進行軟件安裝,那麼你能夠有兩種選擇,其一,使用--nodeps選項,強制忽略其依賴關係並安裝;可是如此一來,telnet-server就不能使用。其二,你還能夠先找到xinetd包,而後安裝,接着再安裝telnet-server包;使用此法可正常安裝使用,可是當其依賴的包過多,達到十個,二十個,甚至更多時怎麼辦呢?依然使用此法顯然不是明智的選擇。因此此時就迫切須要一個工具來自動幫助咱們解決軟件管理過程當中所遇到的種種問題,yum就應運而生了。
小程序
什麼是yum
centos
yum是yellowdog update modifier取首字母得來的,是一個基於RPM的前端包管理軟件,其能夠根據用戶設置的yum倉庫自動尋找軟件安裝,並自動解決依賴關係。
緩存
yum的工做機制
bash
在rpm中,可使用--test選項進行測試安裝,測試出即將安裝的包所依賴的其餘軟件包,rpm只能測試出須要的包,可是不能自動解決,而yum則能夠根據測試出的包,而後再從用戶指定的yum倉庫中尋找並下載下來安裝,因此對於yum來講首先得有另外的服務爲其提供軟件倉庫,因此從工做模式上來講,yum是一個C/S的架構。他依賴於FTP或者NFS和http服務,固然還可使用一批本地的軟件包做爲其倉庫。
服務器
yum相關配置
架構
首先是其主配置文件,其主配置文件/etc/yum.conf,對於其主配置文件,有以下經常使用選項:運維
cachedir:緩存目錄
keepcache=0:是否把下載的軟件包緩存下來,0表示不緩存
debuglevel=2:調試信息級別
logfile:指定日誌文件存放位置
obsoletes:檢查包是否廢棄
gpgcheck=1|0:檢查包的來源合法性和完整性
plugins:yum是否支持插件
bugtracker_url:作bug追蹤的路徑
根據以上選項,使用時可根據需求設置便可。除此以外,上面談到的倉庫則在/etc/yum.repo.d/目錄下以.repo的全部文件都是,其配置項以下:
[repository]
#對於當前系統的yum來說,此repository用於惟一標識此repository指向,所以,其必須惟一
name=
#當前倉庫的描述信息
baseurl=
#指明repository的訪問路徑,一般爲一個文件服務器上輸出的repository
url:
ftp服務:
ftp://SERVER/PATH/TO/REPOSITORY
http服務
http://SERVER/PATH/TO/REPOSITORY
本地目錄:
file:///PATH/TO/REPOSITORY
nfs服務:
nfs://SERVER/PATH/TO/REPOSITORY
enabled=1|0:
#表示此倉庫是否被啓用,0表示不啓用,1則相反,默認值爲1
gpgcheck=1|0:
#是否進行完整性檢查,默認值爲1
gpgkey=url://PATH/TO/keyfile:
#指明驗證密鑰存放位置
cost=#
#指明當前repository訪問開銷,默認爲1000,越低越優先使用
yum命令使用詳解
1.倉庫管理:
repolist:列出已配置的全部可用倉庫
all|enabled|disabled
例1:查看當前系統可用倉庫
[root@dsl-189-172-5-105-dyn Packages]# cd /etc/yum yum/ yum.conf yum.repos.d/ [root@dsl-189-172-5-105-dyn Packages]# yum repolist all Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile repo id repo name status oldpackagepath centos6.6 enabled: 3,348 repolist: 3,348#:可以使用軟件包數量
2.緩存管理
clean:清理緩存
#:緩存存放位置:/var/cache/yum/
[ packages(包) | metadata(源數據) | expire-cache(過時緩存) | rpmdb(數據庫) | plugins(插件) | all(全部) ]
makecache:緩存建立{自動鏈接至每個可用倉庫,下載其全部數據,將其建立爲緩存}
例2:清理當前yum緩存並從新建立緩存
[root@dsl-189-172-5-105-dyn yum]# yum clean all Loaded plugins: fastestmirror, refresh-packagekit, security Cleaning repos: oldpackagepath Cleaning up Everything Cleaning up list of fastest mirrors [root@dsl-189-172-5-105-dyn x86_64]# yum makecache Loaded plugins: fastestmirror, refresh-packagekit, security Determining fastest mirrors oldpackagepath | 2.1 kB 00:00 oldpackagepath/group | 920 kB 00:02 oldpackagepath/filelists_db | 3.9 MB 00:07 oldpackagepath/primary_db | 2.0 MB 00:05 oldpackagepath/other_db | 10 MB 00:19
3.程序包查看
list
yum list [all(全部) | glob_exp1] [glob_exp2] [available(可安裝的包)] [exreas(已安裝,可是沒有倉庫提供的包)]
程序包組查看
grouplist
[hidden] [groupwildcard] [...]
4.程序包安裝
install
package1 [package2] [...]:可跟上VERSION
從新(覆蓋)安裝
reinstall
package1 [package2] [...]:可跟上VERSION
例3:使用yum安裝tree軟件包
[root@dsl-189-172-5-105-dyn base]# yum install tree -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package tree.x86_64 0:1.5.0-4 will be installed --> Finished Dependency Resolution Dependencies Resolved...#後續已省略 Installing : tree-1.5.0-4.x86_64 1/1 Verifying : tree-1.5.0-4.x86_64 1/1 Installed: tree.x86_64 0:1.5.0-4 Complete!
6.升級
update、upgrade
update [package1] [package2] [...]
upgrade [package1] [package2] [...]
降級
downgrade
檢查可升級狀況
check-update
例4:先升級tree到新版tree.x86_64 0:1.5.0-4 而後再降級,可以使用先前說過的rpm -q查看當前版本驗證
[root@dsl-189-172-5-105-dyn base]# rpm -q tree tree-1.5.0-4.x86_64 [root@dsl-189-172-5-105-dyn base]# yum update tree -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Update Process Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package tree.x86_64 0:1.5.0-4 will be updated ---> Package tree.x86_64 0:1.5.3-2.el6 will be an update --> Finished Dependency Resolution ...#後續已省略 Updated: tree.x86_64 0:1.5.3-2.el6 [root@dsl-189-172-5-105-dyn base]# rpm -q tree tree.x86_64 0:1.5.3-2.el6 [root@dsl-189-172-5-105-dyn base]# yum downgrade tree -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Downgrade Process Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package tree.x86_64 0:1.5.0-4 will be a downgrade ---> Package tree.x86_64 0:1.5.3-2.el6 will be erased --> Finished Dependency Resolution ...#後續已省略 Complete! [root@dsl-189-172-5-105-dyn base]# rpm -q tree tree-1.5.0-4.x86_64
7.卸載
remove | erase:全部依賴於正卸載曾虛報的程序都會被一併卸載
package1 [package2] [...]
例5:使用yum卸載zsh
[root@dsl-189-172-5-105-dyn base]# yum remove zsh Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package zsh.x86_64 0:4.2.6-3.el5 will be erased --> Finished Dependency Resolution ...#:中間部分已被省略 Erasing : zsh-4.2.6-3.el5.x86_64 1/1 Verifying : zsh-4.2.6-3.el5.x86_64 1/1 Removed: zsh.x86_64 0:4.2.6-3.el5 Complete! [root@dsl-189-172-5-105-dyn base]#
8.查詢
info:查詢程序包的相關簡要信息
package1 [package2][...]
serach:在包名和sumary信息中搜索指定的關鍵字:
KEYWORD...
provides|whatprovides:查詢指定文件是由哪一個程序包安裝生產
packages...
例6:查詢/etc/httpd/是由哪一個程序包生成的
[root@dsl-189-172-5-105-dyn base]# yum whatprovides /etc/httpd/conf/httpd.conf Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile httpd-2.2.3-31.el5.centos.x86_64 : Apache HTTP Server Repo : oldpackagepath Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.4.6-31.el7.centos.x86_64 : Apache HTTP Server Repo : installed Matched from: Other : Provides-match: /etc/httpd/conf/httpd.conf
9.安裝本地的程序包文件
localinstall
[rpmfile1] [rpmfile2]...
使用本地的程序包升級或安裝
localupdate
10.包組管理
列出全部包組:
grouplist
安裝包租
groupinstall
卸載包組
groupremove
更新包租
groupupdate
11.yum命令可用選項:
-y:自動回答爲yes
--disablerepo=:臨時禁用在配置文件中配置並啓用的某repository
--enabledrepo:臨時啓用
--nogpgcheck:禁止作包校驗
例7:使用還沒有啓用的old倉庫安裝tree命令,而且指定安裝時不作包校驗
[root@dsl-189-172-5-105-dyn yum.repos.d]# yum repolist Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile repolist: 0 [root@dsl-189-172-5-105-dyn yum.repos.d]# yum install tree --enablerepo=old --nogpgcheck Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package tree.x86_64 0:1.5.0-4 will be installed --> Finished Dependency Resolution ...#中間已省略 Installed: tree.x86_64 0:1.5.0-4 Complete! [root@dsl-189-172-5-105-dyn yum.repos.d]#
至此,軟件包管理介紹已完成,以上介紹足以應付日常軟件包管理需求,若要查看rpm相關使用技巧可查閱如下文章