Linux基礎知識之YUM包管理工具

一、YUM簡介

    1. YUM: Yellowdog Update Modifier

完成RHEL系列前端自動解決依賴關係安裝工具,依賴rpm存在

    2.工作模式:C/S 架構

      Server(yum倉庫):依賴關係庫、原文件、校驗碼文件

      Client端:yum客戶端程序、配置文件(連接Server路徑信息)

    3.設計缺陷:

某一次安裝過程中半途終止,再次重啓後將無法解決程序間的依賴關係

yum升級版dnf就是爲了解決此類問題

    2.yum repository: yum repoyum倉庫

存儲rpm包,以及包的相關的元數據文件(放置於特定目錄下:repodata)

二、YUM客戶端配置

    1.yum配置文件路徑

/etc/yum.conf:爲所有yum倉庫提供公共配置

/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

    2./etc/yum.conf主配置定義

        [root@localhost ~]# man 5 yum.conf           #可獲得yum.conf的詳解

       [root@localhost ~]# cat /etc/yum.conf

[main]            #通用主配置段

cachedir=/var/cache/yum/$basearch/$releasever          # 緩存文件路徑

keepcache=0                     緩存到本地的文件是否保存

debuglevel=2                   調試級別

logfile=/var/log/yum.log                 # 安裝的日誌文件

exactarch=1                                              精確嚴格的平臺release匹配

obsoletes=1

gpgcheck=1                      #檢測來源合法性和完整性

plugins=1                         #支持插件機制

installonly_limit=5                    #同時安裝多少程序包

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bu        追蹤bug路徑

distroverpkg=centos-release               當前發行版版本號從哪兒獲取

#  This is the default, if you make this bigger yum won't see if the metadata

# is newer on the remote and so you'll "gain" the bandwidth of not having to

# download the new metadata and "pay" for it by yum not having correct

# information.

#  It is esp. important, to have correct metadata, for distributions like

# Fedora which don't keep old packages around. If you don't like this checking

# interupting your command line usage, it's much better to have something

# manually check the metadata once an hour (yum-updatesd will do this).

# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

    3.倉庫(*.repo)配置文件定義:

[repositoryID]        #倉庫ID,唯一標識別,不能重複

name=Some name for this repository       #  完整的倉庫名稱

baseurl=url://path/to/repository/          # yum倉庫指明的訪問路徑

enabled={1|0}           #是否啓用此yum倉庫,默認啓用

gpgcheck={1|0}              #是否檢查完整性和來源合法性

gpgkey=URL                     #祕鑰文件位置,可能是對方倉庫提供

enablegroups={1|0}              #是否基於組來批量管理程序包

failovermethod={roundrobin|priority}    #故障轉移方法:輪詢、根據優先級選擇; 默認roundrobin隨機

cost=#                    #設置開銷,默認爲1000

… ...

     說明:

            1)*.repo可以將多個[repositoryID]的配置信息放在一個而文件內,也可以切成多個方便管理

     2)baseurl可以使用:ftp:// http:// nfs:// file:///  URL路徑

     3)baseurl等號兩邊不能有空格,其後可以填寫多個鏡像訪問路徑,每行一個,不能頂行寫

           多個訪問路徑間聯繫是鏡像相同,目的是爲了做備用訪問

     4)更多選項使用man  5  yum.conf查看,基本配置只需前三行就可以        

     5)發行版光盤鏡像安裝可能會自動配置網絡鏡像URL地址

三、yum命令的用法

 yum   [options]   [command]   [package ...] 

    1.OPTIONS

    --nogpgcheck:禁止進行gpg check;

            -y:    自動回答爲“yes”;

            -q: 靜默模式,不輸出顯示信息

            --disablerepo=repoidglob:臨時禁用此處指定的repo;

            --enablerepo=repoidglob:臨時啓用此處指定的repo;

            --noplugins:禁用所有插件;

 

    2.常用COMMAND

        (1)顯示倉庫列表repolist

       # yum repolist [all|enabled|disabled]    [所有|可用的|不可用]

         (2)顯示程序包:list

              # yum list [all | glob_exp1] [glob_exp2] [...]     [所有的|符合glob通配條件的]

              # yum list {available|installed|updates} [glob_exp1] [...]   可用尚未安裝的,已經安裝的,可升級的

         (3)安裝程序包:install

                 # yum  install package1 [package2] [...]

                 # yum reinstall package1 [package2] [...]  (重新安裝)

        (4)卸載程序包:此時依賴於此安裝包也會被卸載

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

        (5)、降安裝程序包:updatedowngrade

             # yum update [package1] [package2] [...]         升級操作

             # yum downgrade package1 [package2] [...]       降級操作

        (6)檢查可用升級:check-uodate

               # yum check-update

        (7)查看程序包簡要信息info

            # yum info [package1]  [package2]  [...]

         (8)查看指定的特性(可以是某文件)是由哪個程序包所提供:provides

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

         (9)清理本地緩存:clean

            # yum  clean  <packages | metadata | expire-cache | rpmdb | plugins | all >

包、源數據、過期緩存、rpmdb、插件、所有

包安裝完了會自動清除、而元數據(依賴關係等)不會自動,但下次yum安裝會自動重新校驗

     3.COMMAND安裝及升級本地程序包

指定安裝本地的*.rpm,但是會根據yum源現有依賴關係,解決此安裝可能出現的依賴關係

             # yum  localinstall rpmfile1 [rpmfile2] [...]

             # yum  localupdate rpmfile1 [rpmfile2] [...]

 

    4.COMMAND包組管理的相關命令:

包組:一堆程序的一個集合,用於一起安裝,因爲某些程序安裝需要依賴包組內容

                  # yum  groupinstall group1 [group2] [...]     安裝包組

                  # yum  groupupdate group1 [group2] [...]    升級包組

                  # yum  grouplist [hidden] [groupwildcard] [...]   顯示包組列表

                 # yum  groupremove group1 [group2] [...]     移除包組

                 # yum  groupinfo group1 [...]   顯示包組信息

四、創建yum倉庫

    1.使用光盤當作本地yum倉庫:

光盤的鏡像本身就是一個yum源,自己安裝系統時候選擇安裝工具時就是藉助yum自動安裝

       (1)掛載光盤至某目錄,例如/media/cdrom   # mount -r [-t iso9660 /dev/cdrom /media/cdrom

       (2)創建配置文件

            [ID]

            name=

            baseurl=file:///… …

            gpgcheck=

    2.yum的repo配置文件中可用的變量:

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

            $arch: 平臺;

            $basearch:基礎平臺,同一系列最基本的架構,如3264

            $YUM0-$YUM9 可做自定義

    3.手動創建yum倉庫:

        (1)安裝工具:createrepo,已安裝

[root@localhost yum.repos.d]# yum info createrepo
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.cn99.com
已安裝的軟件包
名稱    :createrepo
架構    :noarch
版本    :0.9.9
發佈    :28.el7
大小    :302 k
源    :installed
來自源:anaconda
簡介    : Creates a common metadata repository
網址    :http://createrepo.baseurl.org/
協議    : GPLv2
描述    : This utility will generate a common metadata repository from a
         : directory of rpm packages.

         (2)下載所需要的所有文件到本地某個路徑:

[root@localhost yum.repos.d]# mkdir -p /yumtest/Packages
[root@localhost yum.repos.d]# cp /media/cdrom/Packages/* /yumtest/Packages/

      (3)創建關聯關係: createrepo - Create repomd (xml-rpm-metadata) repository

命令:createrepo   [options]   <directory>

當完成後生成repodata即可

[root@localhost yum.repos.d]# createrepo /yumtest/
Spawning worker 0 with 2478 pkgs
Spawning worker 1 with 2478 pkgs
Spawning worker 2 with 2478 pkgs
Spawning worker 3 with 2477 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost yum.repos.d]#

        (4)配置yum源文件,創建*.rope寫入信息即可

root@localhost yum.repos.d]# cat Local.repo
[Local]
name=Local Yum
baseurl=file:///yumtest/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

[root@localhost yum.repos.d]# yum repolist
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                     | 7.5 kB     00:00
 * base: mirrors.huaweicloud.com
 * epel: ftp.cuhk.edu.hk
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.163.com
Local                                                    | 2.9 kB     00:00
base                                                     | 3.6 kB     00:00
extras                                                   | 3.4 kB     00:00
updates                                                  | 3.4 kB     00:00
Local/primary_db                                           | 5.9 MB   00:00
源標識                源名稱                                              狀態
Local                 Local Yum                                            9,911
base/7/x86_64         CentOS-7 - Base                                     10,019
epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64      12,744
extras/7/x86_64       CentOS-7 - Extras                                      321
updates/7/x86_64      CentOS-7 - Updates                                     599
repolist: 33,594






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