程序包管理之yum


一、yum的相關概念php


yum是rpm的前端管理工具,實如今前端自動解決程序包依賴關係前端

yum是一個C/S架構的工具,客戶端經過yum倉庫實現程序包的安裝,yum倉庫必須是一個文件服務器,其內存放了須要安裝的全部rpm包shell


yum的工做方式數據庫

     (1)當用戶使用yum命令安裝程序包時,會根據yum的本地配置文件所指向的yum倉庫的訪問地址(URL),經過配置文件中的設定去鏈接yum倉庫所在的主機;後端

     (2)yum倉庫中存放有每一個程序包的元數據信息以及程序包之間的依賴關係,當yum客戶端須要經過倉庫獲取程序包時,會首先將yum倉庫中存放程序包信息的文件下載至本地的緩存空間中,經過分析此文件獲取程序包之間的依賴關係以及查詢本地是否有已安裝的程序包,然後經過倉庫去下載未安裝的程序包;centos

     (3)程序包下載完以後一樣存放在緩存空間中,而後執行rpm包的安裝操做,首先先安裝依賴包,安裝完成後yum會自動刪除緩存中存放的程序包,但程序包的元數據文件不會刪除;緩存

     (4)下次要經過倉庫安裝新的程序包時,直接分析本地的元數據文件,但倉庫中的程序包有可能會改變,倉庫中還有一個記錄了每一個元數據文件的特徵碼的特殊文件,客戶端經過下載這個文件,分析文件的各程序包的特徵碼特徵碼和本地緩存的元數據文件中程序包的特徵碼是否一致,若是一致,則說明倉庫中的程序包未發生改變,不然,說明倉庫中程序包發生了改變,客戶端會從新下載元數據文件然後下載程序包。bash

    wKioL1aDXtGzDTlzAABeWt3nw2k162.png          


dnf服務器

     dnf相對於yum更換了依賴關係解析器後端,效率更高。實現對yum工具的升級架構

CentOS系列經常使用前端工具: yum, dnf


YUM: 早期由yellow dog研發, Yellowdog Update Modifier


yum repository: 簡稱爲yum repo 倉庫 repodate所在目錄即爲yum源

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

     倉庫文件服務器:

          ftp://

          http://

          nfs://

          file:///  本地倉庫,例如光盤


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


二、yum的配置文件及yum倉庫


yum客戶端:

     配置文件

          /etc/yum.conf:爲全部倉庫提供公共配置

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

     倉庫的指向的定義

          [repositoryID] 倉庫ID

          name=Some name for this repository 倉庫簡要功能描述

          baseurl=url://path/to/repository/ 倉庫的訪問路徑

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

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

          gpgkey=URL 指明gpg密鑰文件的URL

          enablegroups={1|0} 是否支持程序包組管理,默認支持

          failovermethod={roundrobin|priority} 故障轉移方式(多個baseurl){輪循|優先級}  默認爲:roundrobin,意爲隨機挑選;

          cost=# 開銷值,默認爲1000,若是多個倉庫中都有同一個程序包,優先選擇哪一個


例如

一、先用確保系統安裝了yum工具程序包,安裝後方可以使用yum命令

wKioL1aDXyGTzj5-AAAKqlAWwZU365.png


二、/etc/yum.repos.d/目錄下存放有CentOS自行提供的指向互聯網的倉庫指向

wKiom1aDXxTh0uRpAAAX67Marzc002.png


三、自行制定新的yum倉庫指向,注意.repo倉庫不能同名

wKiom1aDX17RTaMgAAAIVTckU34407.pngwKiom1aDX2eS4XPlAAAuTIQ5glc960.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


三、yum命令的用法:


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


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]

     * check

     * help [command] 



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


四、顯示倉庫列表:


     repolist [all|enabled|disabled] 顯示全部/啓用/禁用的yum倉庫,默認顯示啓用的


例如

一、列出系統上已啓用的yum倉庫,首次查詢會加載元數據等文件

wKioL1aDYCTQnTXAAABY2EsU_ME165.png

wKiom1aDYAjAigpmAAAsyibWCG4553.png

二、列出系統上全部的yum倉庫,包括已啓用的和被禁用的

wKiom1aDX6WwzlmOAACHnB_LAE8484.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


五、顯示程序包:

     list

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

               顯示全部或匹配條件的程序包

          # yum list {available|installed|updates} [glob_exp1] [...]

               顯示倉庫中有但還沒有安裝的/已安裝的/可升級的程序包


例如

一、顯示全部yum倉庫中的程序包,@表示已安裝過的包,@anaconda表示安裝系統時安裝的包

wKioL1aDYEXxY_CfAAAGkIFibnw950.png

wKiom1aDYCmzIlFyAABYN4DdmWg888.png


二、顯示全部以httpd開頭的名稱的程序包

wKioL1aDYGLDgC4OAAA9KGHP1q0066.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


六、安裝程序包:

          install package1 [package2] [...]

     從新安裝程序包

          reinstall package1 [package2] [...]  


例如

一、安裝php-common程序包,會自動安裝所要依賴的包,使用-y直接確認安裝

wKioL1aDYJmSWxX1AACLidVN_HE949.png...

wKioL1aDYKqyiPeNAAA5gc7e-T4579.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


七、升級程序包:

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

     降級程序包:

          downgrade package1 [package2] [...]  


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


八、檢查可用升級:

     check-update


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


九、卸載程序包:

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

     注意卸載程序包時,依賴於此包的程序包也會被卸載


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


十、查看程序包的信息:

     info [...]


例如:查看gcc程序包的信息。相似於rpm -qi

wKioL1aDYPWwkxEKAABclPvUATc221.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

十一、查看指定的特性(能夠是某文件)是由哪一個程序包所提供:

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


例如:查看gcc程序包所提供了哪些CAPABILITY

wKioL1aDYQqAtytjAAA0_W7nAlU590.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


十二、清理本地緩存:

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

          清理本地緩存中的 程序包/元數據/過時緩存/rpm數據庫/插件/全部


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1三、構建緩存:

     makecache 建立緩存時須要遍歷各yum倉庫


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1四、搜索程序包及其信息:

     search string1 [string2] [...]

     以指定的關鍵字搜索程序包名及summary信息;


例如:搜索bash程序包及其相關信息

wKiom1aDYQXTWeZBAAB5cMHegBg540.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1五、查看指定包所依賴的capabilities:

     deplist package1 [package2] [...]


例如:顯示gcc所依賴的capability

wKiom1aDYRrh5-9zAABUcs1TetM216.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1六、查看yum事務歷史:

     history [info|list|packages-list|packages-info|summary|addon-   info|redo|undo|rollback|new|sync|stats]


注意:安裝/升級/卸載等yum命令的執行都會啓動yum事務,使用yum history能夠顯示事務歷史

例如:查看yum事務歷史,能夠顯示相關用戶的操做等信息

wKioL1aDYVTQZP2nAAA4GmlcPkk712.png

卸載cpp程序包,再次查看yum事務歷史,就會看到剛纔的操做歷史了

wKiom1aDYVejG8njAAAGOUdAjcA730.png

wKiom1aDYVjABjP5AAAWdX7jd4k520.png

wKioL1aDYXbDU_8LAAA-Mr9rxPM953.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1七、安裝及升級本地程序包:

能夠自動解決依賴關係,實際上使用install就能夠解決依賴了

     * localinstall rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use install)

     * localupdate rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use update)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1八、包組管理的相關命令:

     * groupinstall group1 [group2] [...]  安裝指定包組

     * groupupdate group1 [group2] [...]

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

     * groupremove group1 [group2] [...]

     * groupinfo group1 [...]


例如

一、顯示全部包組

wKioL1aDYajzsupFAABLBd6yRkM338.png


二、安裝Development tools包組,會自動安裝包組內的程序包

wKiom1aDYbDADf1AAAA956mXBF0384.png


三、查看Development tools包組的信息

wKioL1aDYeGxkNk8AAAwM4KMXPg968.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1九、如何使用光盤看成本地yum倉庫:

     (1) 掛載光盤至某目錄,例如/media/cdrom

          # mount -r -t iso9660 /dev/cdrom /media/cdrom

     (2) 建立配置文件

          [CentOS7]

          name=

          baseurl= file:///media/cdrom

          gpgcheck=

          enabled=


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


20、yum的命令行選項:

     --nogpgcheck:禁止檢查gpg密鑰;

     -y: 自動回答爲「yes」;

     -q:靜默模式;

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

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

     --noplugins:禁用全部插件;


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

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

     $arch: 平臺;

     $basearch:基礎平臺;

     $YUM0-$YUM9 :用戶自定義

     例如

     http://mirrors.magedu.com/centos/$releasever/$basearch/os


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2二、建立yum倉庫:

     createrepo [options] <directory>


例如

一、先安裝createrepo程序(CentOS 7自帶)

wKiom1aDYeniZIX4AAAo-CoDNF4007.png


二、下載多個rpm包當作yum倉庫

wKioL1aDYp7zup74AAB7PhT1KMU400.png


三、使用createrepo命令建立yum倉庫在/yum/repo目錄中,建立倉庫時會讀取當前目錄下全部的rpm包的元數據然後生成repodata目錄

wKioL1aDYrnh3go5AABXNBYrpqo725.png


四、repodata中文件使用UUID方式命名,存放了全部rpm包的元數據信息,repomd.xml就是存放其餘幾個文件的特徵碼的特殊文件

wKiom1aDYqqxgAAbAABt-rgwKAU156.png


五、以後就能夠修改配置文件指定生成的yum倉庫指向

wKioL1aDYu6TXf4gAAAHRIpe8gc740.png

wKiom1aDYtKAj0fqAAA-myzVLr4195.png


六、使用yum repolist能夠查看到新生成的yum源,以後就可使用生成的yum倉庫來下載並安裝rpm包了

wKioL1aDYwTjCZxPAABA14ca4ys677.png

相關文章
相關標籤/搜索