漫漫运维路——基于CentOS6平台软件包管理2
????上文(http://7703592.blog.51cto.com/7693592/1631539)已經介紹過使用rpm對CentOS6上的軟件包進行管理,之所以強調是在CentOS6之上,是因為在新出的CentOS7上部分操作還可以更簡化,而對于Linux運維工程師來說,掌握CentOS6上的使用方式,在CentOS7上就不成問題了,而接下來要談的是另外一個軟件包管理工具,或者說是rpm的前端工具——yum。
? ? 為什么要用yum
????來聊一個話題,那就是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
????yum是yellowdog update modifier取首字母得來的,是一個基于RPM的前端包管理軟件,其可以根據用戶設置的yum倉庫自動尋找軟件安裝,并自動解決依賴關系。
????yum的工作機制
????在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?ResolutionDependencies?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.confhttpd-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命令,并且指定安裝時不做包校驗
????至此,軟件包管理介紹已完成,以上介紹足以應付平常軟件包管理需求,若要查看rpm相關使用技巧可查閱以下文章
????http://7703592.blog.51cto.com/blog/7693592/1631539
?
轉載于:https://blog.51cto.com/7703592/1631597
總結
以上是生活随笔為你收集整理的漫漫运维路——基于CentOS6平台软件包管理2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】为什么要写技术博
- 下一篇: 【新产品发布】《EVC8021 RS-2