自學Linux Shell9.3-基於Red Hat系統工具包:RPM屬性依賴的解決方式-YUM在線升級

點擊返回 自學Linux命令行與Shell腳本之路php

9.3-基於Red Hat系統工具包:RPM屬性依賴的解決方式-YUM在線升級

本節主要介紹基於Red Had的系統(測試系統centos)html

yum特色

  • 自動解決包的倚賴性問題能更方便的添加/刪除/更新RPM包
  • 便於管理大量系統的更新問題
  • 能夠同時配置多個資源庫(Repository)
  • 簡潔的配置文件(/etc/yum.conf)
  • 保持與RPM數據庫的一致性
  • 有一個比較詳細的log,能夠查看什麼時候升級安裝了什麼軟件包等
  • 使用方便

yum是CentOS/Fedora系統自帶的,所以它能使用CentOS官方的軟件源,完成各類官方發佈的各類升級。對於第三方軟件源的支持,yum也不差,大多數支持apt的repository,也能支持yum 。linux

一、yum的安裝查看

yum主要功能是更方便的添加/刪除/更新RPM包,自動解決包的倚賴性問題,便於管理大量系統的更新問題。正則表達式

yum能夠同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增長或刪除rpm包時遇到的依賴性問題,保持與RPM數據庫的一致性。數據庫

1.1 查看系統默認安裝的yumvim

yum的基礎安裝包包括:centos

  • yum  //RPMinstaller/updater
  • yum-fastestmirror  //Yumplugin which chooses fastest repository from a mirrorlist
  • yum-metadata-parser  //Afast metadata parser for yum

1.2 yum倉庫瀏覽器

yum 是linux環境安裝軟件包的一種方式。不少時候安裝一個軟件安裝一個軟件須要安裝1個或者多個其餘軟件。緩存

yum倉庫用來存放全部的現有的.rpm包,當使用yum安裝一個rpm包時,須要依賴關係,會自動在倉庫中查找依賴軟件並安裝。倉庫能夠是本地的,也能夠是HTTP、FTP、nfs形式使用的集中地、統一的網絡倉庫 。服務器

若是你的linux環境不能訪問外網,那你裝yum沒有意義,由於他須要訪問http的倉庫裏面的。固然若是你有本地倉庫,就把/etc/yum.repos.d改一下地址就能夠。

1.3 安裝yum

能夠經過wget從網上下載相關包安裝,也能夠掛載系統安裝光盤進行安裝。

二、yum命令

命令 功能
yum check-update 檢查可更新的全部軟件包
yum update 下載更新系統已安裝的全部軟件包
yum upgrade 大規模的版本升級,與yum update不一樣的是,連舊的淘汰的包也升級
yum install <packages> 安裝新軟件包
yum update <packages> 更新指定的軟件包
yum remove <packages> 卸載指定的軟件包
yum groupinstall <groupnames> 安裝指定軟件組中的軟件包
yum groupupdate <groupnames> 更新指定軟件組中的軟件包
yum groupremove <groupnames> 卸載指定軟件組中的軟件包
yum grouplist 查看系統中已經安裝的和可用的軟件組
yum list 列出資源庫中全部能夠安裝或更新以及已經安裝的rpm包
yum list <regex> 列出資源庫中與正則表達式匹配的能夠安裝或更新以及已經安裝的rpm包
yum list available 列出資源庫中全部能夠安裝的rpm包
yum list available <regex> 列出資源庫中與正則表達式匹配的全部能夠安裝的rpm包
yum list updates 列出資源庫中全部能夠更新的rpm包
yum list updates <regex> 列出資源庫中與正則表達式匹配的全部能夠更新的rpm包
yum list installed 列出資源庫中全部已經安裝的rpm包
yum list installed <regex> 列出資源庫中與正則表達式匹配的全部已經安裝的rpm包
yum list extras 列出已經安裝的可是不包含在資源庫中的rpm包
yum list extras <regex> 列出與正則表達式匹配的已經安裝的可是不包含在資源庫中的rpm包
yum list recent 列出最近被添加到資源庫中的軟件包
yum search <regex> 檢測全部可用的軟件的名稱、描述、概述和已列出的維護者,查找與正則表達式匹配的值
yum provides <regex> 檢測軟件包中包含的文件以及軟件提供的功能,查找與正則表達式匹配的值
yum clean headers 清除緩存中的rpm頭文件
yum clean packages 清除緩存中rpm包文件
yum clean all 清除緩存中的rpm頭文件和包文件
yum deplist <packages> 顯示軟件包的依賴信息

三、yum配置 

3.1 說明:yum的配置文件分爲兩部分:main和repository

  • main部分定義了全局配置選項,整個yum配置文件應該只有一個main。常位於/etc/yum.conf中。
  • repository部分定義了每一個源/服務器的具體配置,能夠有一到多個。常位於/etc/yum.repos.d目錄下的各文件中。
    repos文件是Linux中yum源(軟件倉庫)的配置文件,一般一個repo文件定義了一個或者多個軟件倉庫的細節內容,例如咱們將從哪裏下載須要安裝或者升級的軟件包,repo文件中的設置內容將被yum讀取和應用!

YUM的工做原理並不複雜,每個RPM軟件的頭(header)裏面都會紀錄該軟件的依賴關係,那麼若是能夠將該頭的內容紀錄下來而且進行分析,能夠知道每一個軟件在安裝以前須要額外安裝哪些基礎軟件。也就是說,在服務器上面先以分析工具將全部的RPM檔案進行分析,而後將該分析紀錄下來,只要在進行安裝或升級時先查詢該紀錄的文件,就能夠知道全部相關聯的軟件。因此

YUM的基本工做流程以下:

  • 服務器端:在服務器上面存放了全部的RPM軟件包,而後以相關的功能去分析每一個RPM文件的依賴性關係,將這些數據記錄成文件存放在服務器的某特定目錄內。
  • 客戶端:若是須要安裝某個軟件時,先下載服務器上面記錄的依賴性關係文件(可經過WWW或FTP方式),經過對服務器端下載的紀錄數據進行分析,而後取得全部相關的軟件,一次所有下載下來進行安裝。

3.2 yum.conf文件詳解

 

  • cachedir=/var/cache/yum/$basearch/$releasever
    #cachedir:yum緩存的目錄,yum在此存儲下載的rpm包和數據庫,通常是/var/cache/yum/$basearch/$releasever。
  • keepcache=0
    #設置keepcache=1,yum在成功安裝軟件包以後保留緩存的頭文件(headers)和軟件包。默認值爲keepcache=0不保存
  • debuglevel=2
    #debuglevel:除錯級別,0──10,缺省爲2
  • logfile=/var/log/yum.log
    #yum日誌文件位置。用戶能夠到/var/log/yum.log文件去查詢過去所作的更新。
  • exactarch=1
    #exactarch,有兩個選項1和0,表明是否只升級和你安裝軟件包cpu體系一致的包,若是設置爲1,則yum只會安裝和系統架構匹配的軟件包,例如,yum不會將i686的軟件包安裝在適合i386的系統中。默認爲1
  • obsoletes=1
    #至關於upgrade,容許更新陳舊的RPM包
  • gpgcheck=1
    #gpgchkeck=有1和0兩個選擇,分別表明是不是否進行gpg校驗,若是沒有這一項,默認是檢查的
  • plugins=1
    #是否啓用插件,默認1爲容許,0表示不容許。咱們通常會用yum-fastestmirror這個插件。
  • installonly_limit=5
  • bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
  • pkgpolicy=newest
    #pkgpolicy:包的策略。一共有兩個選項,newest和last,這個做用是若是你設置了多個repository,而同一軟件在不一樣的repository中同時存在,yum應該安裝哪個,若是是newest,則yum會安裝最新的那個版本。若是是last,則yum會將服務器id以字母表排序,並選擇最後的那個服務器上的軟件安裝。通常都是選newest。
  • tolerant=1
    #tolerent,也有1和0兩個選項,表示yum是否容忍命令行發生與軟件包有關的錯誤,好比你要安裝1,2,3三個包,而其中3此前已經安裝了,若是你設爲1,則yum不會出現錯誤信息。默認是0。
  • retries=20
    #retries,網絡鏈接發生錯誤後的重試次數,若是設爲0,則會無限重試
  • reposdir=/etc/yy.rm
    #默認是/etc/yum.repos.d/低下的xx.repo後綴文件     #reposdir=[包含.repo文件的目錄的絕對路徑]該選項用戶指定.repo文件的絕對路徑。
    .repo文件包含軟件倉庫的信息(做用與/etc/yum.conf文件中的[repository]片斷相同)。|
    默認都會被include進來 也就是說/etc/yum.repos.d/xx.repo不管配置文件有多少個每一個裏面有多少個[name]最後其實都被整合到一個裏面看就是了 重複的[name]後面的覆蓋前面的
  • exclude=xxx
    #exclude排除某些軟件在升級名單以外,能夠用通配符,列表中各個項目要用空格隔開,這個對於安裝了諸如美化包,中文補丁時特別有用。
  • distroverpkg=centos-release
    #指定一個軟件包,yum會根據這個包判斷你的發行版本,默認是redhat-release,也能夠是安裝的任何針對本身發行版的rpm包。

3.3 yum.repos.d文件詳解

 在.repo文件中,配置語法是分段的,每一段配置一個軟件倉庫,配置語法以下:

[repositoryid]
name=Some name for this repository
baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/
mirrorlist=url://path/to/mirrorlist/repository/
enabled=0/1
gpgcheck=0/1
gpgkey=A URL pointing to the ASCII-armoured GPG key file for the repository
  • repositoryid : 用於指定一個倉庫
  • name: 用於指定易讀的倉庫名稱,是對repository的描述,支持像$releasever $basearch這樣的變量。

    在name baseurl中常用以下的變量:

    • $releasever — 當前系統的版本號
    • $arch,cpu體系,如i686,athlon等
    • $basearch,cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha。
  • baseurl : 用於指定本倉庫的URL, #從服務器獲取軟件的路徑,只有設置正確,才能從上面獲取軟件。
    基本格式是:      
    baseurl=url://server1/path/to/repository/                                   
                  url://server2/path/to/repository/                                   
                  url://server3/path/to/repository/
    baseurl後能夠跟多個url,你能夠本身改成速度比較快的鏡像站,但baseurl只能有一個,其中url指向的目錄必須是這個repositoryheader目錄的上一級,它也支持$releasever$basearch這樣的變量。其中url支持的協議有http://ftp://file://三種:

    • http — 用於指定遠程 HTTP 協議的源
    • ftp — 用於指定遠程 FTP 協議的源
    • file — 用於本地鏡像或 NFS 掛裝文件系統
  • mirrorlist : 用於指定倉庫的鏡像站點,一般是開啓的,將$releasever和$basearch替換成本身對應的版本和架構,例如i386,在瀏覽器中打開,就能看到一長串鏡可用的鏡像服務器地址列表。
  • enabled : 用於指定是否使用本倉庫,默認值爲1,便可用
  • gpgcheck : 用於指定是否檢查軟件包的 GPG 簽名
  • gpgkey : 用於指定GPG簽名文件的URL
    #導入每一個reposity的GPGkey,yum可使用gpg對包進行校驗,確保下載包的完整性,因此咱們先要到各個repository站點找到gpgkey,通常都會放在首頁的醒目位置,一些名字諸如RPM-GPG-KEY.txt之類的純文本文件,把它們下載,而後用rpm--import xxx.txt命令將它們導入,最好把發行版自帶GPG-KEY也導入,rpm--import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方軟件升級用的上。

 3.3.1 設置網絡更新源

下面是一個CentOS-Base.repo文件的實例,在此文件中沒有設置mirrorlist ,使用baseurl只指定了一個URL。

[base]
name=CentOS-$releasever - Base
baseurl=http://centos.candishosting.com.cn/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[updates]
name=CentOS-$releasever - Updates
baseurl=http://centos.candishosting.com.cn/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[addons]
name=CentOS-$releasever - Addons
baseurl=http://centos.candishosting.com.cn/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[extras]
name=CentOS-$releasever - Extras
baseurl=http://centos.candishosting.com.cn/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://centos.candishosting.com.cn/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

3.3.2 設置本地更新源

爲了使用安裝光盤做爲更新源,能夠修改CentOS-Media.repo 文件,下面是一個配置實例。

[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
  • 爲了使用 c5-media倉庫,需將CentO S-Base .repo文件中的base倉庫使用enabled=0設置成不可用。
  • 若本地磁盤空間有足夠空間,您也能夠將安裝光盤複製到本地磁盤的一個目錄中

四、yum舉例

4.1 設置yum本地源:

[root@localhost /]# vim /etc/yum.repos.d/local.repo  # 配置yum本地源

 

[local   #]
name = local yum
baseurl =  file://mnt    #設置本地源文件
gpgcheck=0
enabled=1 

測試:

使用rpm安裝的時候,會提示依懶性關係,須要依序一步一步才能安裝。

 使用yum安裝的時候,直接安裝完成。

 

 爲何rpm在路徑/mnt/Packages下就不能自行處理依懶性關係,    而yum在路徑/mnt/ 就能夠的呢?

 緣由是由於yum先讀取配置文件裏的信息  baseurl = file://mnt  查找本地源,

                   重點還要查找一個依懶性文件(早已寫好依賴性關係)repodata, 找到須要的全部的安裝包文件

 

.....

相關文章
相關標籤/搜索