漫漫運維路——基於CentOS6平臺軟件包管理2

    上文(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相關使用技巧可查閱如下文章

    http://7703592.blog.51cto.com/blog/7693592/1631539

相關文章
相關標籤/搜索