yum程序包管理器淺談

基於rpm安裝程序包時,程序包之間的依賴性太過於複雜和麻煩,開發了yum程序包管理器,可以自行的解決程序包之間的依賴關係,並且一次性安裝所有的有依賴關係的程序包,無須繁瑣的下載依賴性的程序包,相對於rpm來說,rpm爲基礎包管理,yum是前端工具。而yum需要一個文件服務的服務器,總共有四種文件服務器:ftp服務,http服務,本地文件目錄,NFS服務。yum命令工具可以通過配置文件,指向倉庫的位置以及相關的各種配置信息;每個yum命令行可以同時指向多個倉庫,倉庫間可以優先級等相關的配置。

當yum第一次訪問yum倉庫時,會將yum倉庫的元數據緩存在本地配置文件中,當安裝過程中會自動尋找yum倉庫中的相關依賴性的程序包,然後一併下載。當然,有時yum倉庫會發生更改,緩存也需要更改管理。/etc/yum.conf爲主配置文件,各倉庫文件定義在:/etc/yum.repos.d下,文件必須以.repo結尾,每個repo配置文件中可以匹配一致多個倉科。在/etc/yum.repos.d的[main]提供的是公共配置信息。對於當前系統的yum來說,每個倉庫的repositoryid用於指向repository,因此都是唯一的。

  倉庫配置(在/etc/yum.repos.d下創建文件)

        [repositoryid]

       #對於當前系統的yum來講;此repositoryid用於唯一標識此repository指向,因此,其必須唯一

         name=

   #當前倉庫描述信息

           baseurl=  baseurl=url://path/to/repository/

   #指明repository的訪問路徑;通常爲一個文件服務器上輸出的某repository; 

            url:(或使用mirrolist指明一個url,此url指向的文件中包含多個指向庫的url)          

                 ftp服務:

                     ftp://SERVER/PATH/TO/REPOSITORY

                  http服務:

                     http://SERVER/PATH/TO/REPOSITORY

                本地目錄:

                     file://SERVER/PATH/TO/REPOSITORY

                  enabled={1|0}

         此倉庫是否可被使用

                   gpgcheck={1|0}

                    是否對程序包做校驗

                 gpgkey=url://path/to/keyfile

         指明gpgkey文件路徑;

                 cost=#

         指明當前repository的訪問開銷,默認爲1000


  例:

   [yumtest]

    enabled=1

    gpgcheck=0

    baseurl=http://172.16.0.1/fedora-epel/6/x86_64/

    name=epe


    讀取倉庫的元數據後,會保存在/var/cache/yum/x86_64/6下,方面下次使用yum命令時進行檢索讀取,通過yum clean all 可以清楚此目錄下的所有緩存信息,yum repolist可以重新建立緩存信息。

下面是yum命令的常用的選項:


 command is one of:

        * install package1 [package2] [...]

        * update [package1] [package2] [...]

        * update-to [package1] [package2] [...]

        * check-update

        * upgrade [package1] [package2] [...]

        * upgrade-to [package1] [package2] [...]

        * distribution-synchronization [package1] [package2] [...]

        * remove | erase package1 [package2] [...]

        * list [...]

        * info [...]

        * provides | whatprovides feature1 [feature2] [...]

        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

        * makecache

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]

        * search string1 [string2] [...]

        * shell [filename]

        * resolvedep dep1 [dep2] [...]

        * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

        * reinstall package1 [package2] [...]

        * downgrade package1 [package2] [...]

        * deplist package1 [package2] [...]

        * repolist [all|enabled|disabled]

        * version [ all | installed | available | group-*  |  nogroups*  |  grouplist  |

       groupinfo ]

       *       history      [info|list|packages-list|packages-info|summary|addon-

       info|redo|undo|rollback|new|sync|stats]

        * load-transaction [txfile]

        * check

        * help [command]

倉庫管理:

        repolist:列出已經配置的所有可用倉庫

                        repolist [all|enabled|disabled]

 緩存管理:

         clean:清理緩存

                       clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

          makecache:緩存創建

                        自動連接至每一個可用倉庫,下載其無數據,將其創建爲緩存;

 

 程序包查看:list                  

      yum list [all | glob_exp1] [glob_exp2] [...]

            yum list available [glob_exp1] [...]

            yum list updates [glob_exp1] [...]

            yum list installed [glob_exp1] [...]

            yum list extras [glob_exp1] [...]

             yum list obsoletes [glob_exp1] [...]

             yum list recent

 

              grouplist

 

程序包安裝:

       install package1 [package2] [...]

      Note:只需要提供包名:

      yum install package1

 

     如果某包有在不同倉庫中有多個不同版本,默認會安裝最新版本;

 如果要安裝指導版本:  install PACKAGE-VERSION...

 

   重新安裝(覆蓋安裝)

      reinstall package1 [package2] [...]

   程序包升級:

       update [package1] [package2] [...]

  程序包降級:

       downgrade package1 [package2] [...]

  檢查有哪些升級可用:

        check-update

   卸載:

       remove | erase package1 [package2] [...]

 

         所有依賴於正卸載的程序包的程序包會被一併卸載;

  查詢:

        查詢程序的相關簡要信息:info [...]

         在包名和sumary信息中搜索指定的關鍵字: search KEYWORD...

    查詢指定文件有哪個程序包安裝生成 provides | whatprovides feature1 [feature2] [...]

 

安裝本地的程序包文件:

         localinstall rpmfile1 [rpmfile2] [...]

         用於安裝倉庫中並不存在的程序包文件,這些程序包有可能依賴於倉庫中的某些程序包;

         localupdate rpmfile1 [rpmfile2] [...]

 

包組管理:

        列出所有包組:grouplist

    顯示指定包組詳情:groupinfo group1 [...]

         安裝:groupinstall group1 [...]

        卸載:groupmove group1 [...]

        升級:groupupdate group1 [...]

  可直接用install remove update來管理包組:

        @GROUP_NAME

 

        yum install @"Server Platform Development"

 

  yum命令的可用選項:

              -y ;自動回答爲yes

      --disablerepo= : 臨時禁用在配置文件中配置並啓用的某repository

      --enablerepo=:臨時啓用指定某repo

      --nogpgcheck:禁止做包檢驗

yum有內置變量,用於保存當前平臺的相關信息;

        1$releasever   :當前OS發行版的主版本號;

                                例如,對CentOS 6.6 x86_64 , 主版本號爲6

    2 $arch :平臺

         3 $basearch:基礎平臺,例如i686 , i586 , i486 i386的基礎平臺爲 i386

          4 $YUM0-$YUM9爲定義的變量,一般不常用。

例如:

         baseurl=http://repo.magedu.com/centos/$releasever/$basearch

  當前系統爲CentOS6.6 x86_64,會生成http://repo.magedu.com/centos/6/x86_64的路徑,6爲版本號,若有升級版6.0、6.1、6.2多個版本時可以在目錄下建立文檔,通過鏈接到升級版本的文件;還可以在$basearch想建立多個平臺的文檔。

 在實際運用中,我們還可以通過使用光盤鏡像來作爲yum repository;

(1)掛載光盤到指定掛載點,如/media/cdrom

(2)新建yum repo配置文件,類似如下所示:

[dvdbasel 
    name=CentOS 6.6 X86_64 on dvdl 
    baseurl=file: // /media/cdrom 
    gpgcheck=0 
    enabled=1 
  自己創建yum倉庫:
       (1)在基於發行版安裝樹安裝createrepo 
         (2)確定repository輸出方式:
                    本地輸出:提供一個方式rpm包的本地路徑
                    網絡輸出:提供一個文件服務器,配置好ftp服務或http服務                 
               ftp服務:
                     安裝程序包: vsftpd
                     文件存傳遞放路徑 /var/ftp/pub
                     啓動服務: service vsftpd start
               http服務
                                               安裝程序包:httpd       
                     文件存放路徑: /var/www/html
                     啓動服務: service httpd start
                  Note:確保防火牆服務關閉
           (3)在準備好的目錄中方式rpm程序包文件
           (4)對此目錄運行createrepo命令即可
           (5)在配置文件中加入配置


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章