yum安裝過程簡介
yum安裝程序時需要連接遠程服務器提供的程序包倉庫,yum會請求遠程服務器發送RPM文件,放置在本地的cache中,然後yum分析有沒有要安裝的程序包,並嘗試的依賴關係分析 ,分析完依賴關係後,yum會分析本地已經安裝的依賴文件,把剩餘沒有安裝的依賴文件列出來,並把自己當做客戶端訪問遠程服務器,在遠程服務器上下載依賴文件,下載完成後yum會先安裝被依賴的文件,最後安裝程序包,安裝完成以後刪除本地緩存中的程序包,但元數據文件(放置在特定目錄:repodate中)會被保留,以便下次安裝程序查詢,如果服務器上面的程序包沒有發生改變,那麼yum cache中的元數據還將有效,如果服務器上的程序包生改變,那麼服務器上面的一塊專門記錄校驗的程序包的文件將發生改變,yum上的元數據與服務器上的校驗文件對比發現不一致,則重新下載服務器上的程序包。但有時候可能yum不能夠連接到遠程服務器,這樣的話就要手動配置yum的安裝的策略了。
yum倉庫創建
yum其實rpm的前端管理工具。yum安裝支持的服務器有FTP、HTTP和NFS,要想yum安裝程序必須保證主機已經安裝了yum這個程序所有倉庫的公共配置或與倉庫無關的配置存放在/etc/yum.config中,倉庫指向信息存放在/etc/yum.repos.d/*.repo這個文件裏面可能指向多個倉庫,yum會選擇最優路徑。
下面就來介紹一下這些配置文件裏面的數據都代表着什麼
關於倉庫配置參數有以下這些常用參數
[repositoryID]:有以下兩個參數需要填寫
name:倉庫的名字,儘可能取與文件相關的名字
baseurl:指向倉庫的訪問路徑,可指明多個url
mirrorlist:以鏡像指明url,yum需支持此插件
enabled={1|0}:是否啓用此倉庫,默認啓用,1爲啓用,0爲禁用
gpgcheck={1|0}:對此倉庫內的文件安裝前是否檢測完整信息和來源合法性
gpgkey=URL:指明祕鑰文件訪問路徑
enablegroups={1|0}:是否允許基於組在此倉庫批量管理程序包
failovermethod={roundrobin|priority}:故障轉移方法默認roundrobin意味隨機挑選
cost=開銷大小默認爲1000
yum包的名字和存放都按照者某個規範,將路徑相應的位置換成變量可以根據不同的操作系統,不同的硬件平臺,自行隨之改變下載文件的路徑,實現一個路徑可在多種不同的用戶使用。
yum的repo配置文件中可用的變量:
$releasever:當前OS的發行版的主版本號;
$arch:平臺
$basearch:基礎平臺
$YUM0-$YUM9 :可自定義變量
參照以上參數就可以新建倉庫了,但是新建倉庫不能與已有倉庫同名,簡單的yum倉庫建立如下
[root@localhost yum.repos.d]#vim /etc/yum.repos.d/CentOS-Base.repo
編輯如上即可這個一個簡單的yum倉庫就建好了,這裏的baseurl也可以指向本地的倉庫,用file:///就可以了,這裏的$relaserver表示OS發行版本$basearch表示基礎平臺。
可以用下面的命令查看
使用光盤只做yum源
[root@localhost~]# mount /dev/cdrom /media/ 首先將光盤掛載到本地
[root@localhost~]# cd /etc/yum.repos.d/local.repo 新建一個本地倉庫源指向,做以下編輯即可。
製作本地yum倉庫
首先得安裝createrepo這個程序,這個命令一般情況下默認選項也夠用,就不多做介紹,直接yum install createrrepo.這裏我就將光盤上的RPM文件拷貝到本地做yum源倉庫了,這些rpm包你也可以通過其他更多方式獲得。
[root@localhost Packages]# mkdir -p /yum/repo
[root@localhost Packages]# cp/media/Packages/*.rpm /yum/repo/
這樣一個yum倉庫就算做好了。生成的repdata文件裏面的文件分別的記載了主makedata數據,rpm包名,依賴關係,安裝生成數據等。repomd.xml存放了上面幾個文件的指紋信息。
yum命yum [options] [command] [package ...]
command is one of:
* install package1 [package2] [...]安裝程序包,一次可安裝多個,並指明版本
* update [package1] [package2] [...]升級程序包,一次可升級多個
* check-update檢查可用升級程序
* distribution-synchronization [package1][package2] [...]
* remove | erase package1 [package2][...]卸載程序包,依賴程序包也將被卸載
* list [...]顯示倉庫中程序包支持glob風格通配符
# yum list [all| glob_exp1] [glob_exp2] [...]
顯示倉庫中所有的程序包或以glob搜索方式查看
# yum list {available|installed|updates}[glob_exp1] [...]
顯示在倉庫中未安裝的已安裝的可升級的,可用glob搜索查看
* info [...]查看程序包的詳細信息
* provides | whatprovides feature1[feature2] [...]查看某文件是有哪個包提供的
* clean [ packages | metadata |expire-cache | rpmdb | plugins | all ]清理本地緩存,可選擇清理。
* makecache構建緩存。
* search string1 [string2] [...]根據關鍵字搜索程序包
* reinstall package1 [package2] [...]重新安裝,即覆蓋安裝
* downgrade package1 [package2] [...]程序包降級
* deplist package1 [package2] [...]查看指定包的依賴關係
* repolist [all|enabled|disabled]顯示倉庫列表
* version [ all | installed | available |group-* | nogroups* | grouplist | groupinfo ]可打印RPMDB的詳細信息
* groupinstall group1 [group2] [...]安裝包組
* groupupdate group1 [group2] [...]升級包組
* grouplist [hidden] [groupwildcard][...]查看包組
* groupremove group1 [group2] [...]移除包組
* groupinfo group1 [...]查看包組詳細信息
* history[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]可以查看yum每次啓用的相關事物歷史,但不包括查看
yum命令行選項
--nogpgcheck:禁止進行gpg check檢查
-y:自動回答爲“yes”
-q:靜默模式,
--disablerepo=repoidglob:臨時禁止此處指定repo
--disablerepo=repoidglob:臨時啓動此處指定repo
--noplugins:禁用所有插件
yum雖然能解決依賴關係,但是當一次安裝被意味終止時,下次再想安裝,yum將不能判斷依賴關係,所以以後終將是要被DNF所代替的,但者並不意味着yum就不用學習瞭解,畢竟現在yum還是主流。