CentOS / RHEL 配置yum源

CentOS / RHEL 配置yum源

1 前言


本文內容過長。能夠經過頁面右上角的目錄選擇章節進行快速跳轉。 css


因爲 redhat的yum在線更新,沒有註冊的狀況下不能使用。可是好在有CentOS這一開源項 目,讓咱們能夠經過配置公開源來方便的安裝和更新軟件包。 html

對於安裝RHEL版本的Linux,想要使用yum源,須要先將本來的yum卸載掉,而後從新安裝. java

CentOS版的Linux因其自己是開源項目,其ISO中自帶的yum是可用的,不須要從新安裝。 node

本文包括配置本地源及第三方源。第三方源包括:阿里、網易, epel,repoforge, rpmfusion. python

其實整個配置過程,至關於把RHEL的源更換爲CentOS的源以及其餘開源項目的源。 linux

如下爲詳細過程. sql

2 關於yum

2.1 yum是什麼

yum = Yellow dog Updater, Modified 主要功能是更方便的添加/刪除/更新RPM包. 它能自動解決包的倚賴性問題. 它能便於管理大量系統的更新問題 shell

2.2 yum特色

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

2.3 安裝yum

參見 從新安裝yum. 數據庫

2.4 yum配置

yum的一切配置信息都儲存在一個叫yum.conf的配置文件中,一般位於/etc目 錄下,這是整 個yum系統的重中之重,因此有必要詳細介紹。下面是一個從網上找來的yum.con文件,讓我 們以此爲例,進行說明。 centos

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=1

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://download.atrpms.net/mirrors/fedoracore/$releasever/$basearch/os
http://rpmfind.net/linux/fedora/cor...er/$basearch/os
http://mirror.clarkson.edu/pub/dist...er/$basearch/os

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
http://redhat.linux.ee/pub/fedora/l...sever/$basearch
http://fr2.rpmfind.net/linux/fedora...sever/$basearch

[Fedora.us]
name=Fedora.us - $basearch - Extras
baseurl=http://fedora.linux.duke.edu/fedorax86_64/fedora.us/$releasever/$basearch/RPMS.stable

[Dag Wieers]
name=Dag RPM Repository for Fedora Core
baseurl=http://apt.sw.be/fedora/$releasever/en/$basearch/dag

[Livna]
Name=Livna RPM, Fedora Core $releasever - $basearch
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/RPMS.stable

[freshrpms]
name=FreshRPMs
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
http://ftp.us2.freshrpms.net/linux/...arch/freshrpms/
  • MAIN 部分

    這是yum的全局性設置。默認通常沒必要改動。根據以上示例及其餘內容整理以下

    Table 1: yum 配置 [main] 部分選項詳解
    參數 說明
    cachedir yum緩存的目錄,yum在此存儲下載的rpm包和數據庫,通常是/var/cache
    debuglevel 除錯級別,0-10,默認是2。
    logfile yum的日誌文件,默認是/var/log/yum.log。
    pkgpolicy 包的策略。一共有兩個選項,newest和last,這個做用是若是你設置了多
      repository,而同一軟件在不一樣的repository中同時存在,yum應該安裝
      一個,若是是newest,則yum會安裝最新的那個版本。若是是last,則YU
      會將服務器id以字母表排序,並選擇最後的那個服務器上的軟件安裝。一
      是選newest。
    distroverpkg 指定一個軟件包,yum會根據這個包判斷你的發行版本,默認是
      redhat-release,也能夠是安裝的任何針對本身發行版的rpm包。
    exactarch 有兩個選項1和0,表明是否只升級和你安裝軟件包cpu體系一致的包,若是
      爲1,則如你安裝了一個i386的rpm,則yum不會用686的包來升級。
    retries 網絡鏈接發生錯誤後的重試次數,若是設爲0,則會無限重試。
    tolerent 也有1和0兩個選項,表示yum是否容忍命令行發生與軟件包有關的錯誤,
      要安裝1,2,3三個包,而其中3此前已經安裝了,若是你設爲1,則yum不會
      錯誤信息。默認是0。
    exclude 排除某些軟件在升級名單以外,能夠用通配符,列表中各個項目要用空格隔
      開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用。
    gpgchkeck 有1和0兩個選擇,分別表明是不是否進行gpg校驗,若是沒有這一項,默認
      是檢查的。 0 表明不檢查,1表明檢查。
  • 服務器信息
    配置repository服務器了,這是最使人激動的,有了好的repository,就如家門口開了大賣場,要什麼東西稍微跑跑腿就行,對了這仍是個免費的大賣場。 全部服務器設置都應該遵循以下格式:

    [serverid]
    name=Some name for this server
    baseurl=url://path/to/repository/
    

    其中serverid是用於區別各個不一樣的repository,必須有一個獨一無二的名稱。 name,是對repository的描述,支持像$releasever $basearch這樣的變量; baseurl是服務器設置中最重要的部分,只有設置正確,才能從上面獲取軟件。它的格式是:

    1. baseurl=url://server1/path/to/repository/
    2. url://server2/path/to/repository/
    3. url://server3/path/to/repository/

    其中url支持的協議有 http:// ftp:// file://三種。baseurl後能夠跟多個url,你能夠本身改成速度比較快的鏡像站,但baseurl只能有一個,也就是說不能像以下格式:

    1. baseurl=url://server1/path/to/repository/
    2. baseurl=url://server2/path/to/repository/
    3. baseurl=url://server3/path/to/repository/

    其中url指向的目錄必須是這個repository header目錄的上一級,它也支持$releasever $basearch這樣的變量。 url以後能夠加上多個選項,如gpgcheck、exclude、failovermethod等,好比:

    1. [updates-released]
    2. name=Fedora Core $releasever - $basearch - Released Updates
    3. baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
    4. http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
    5. http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
    6. gpgcheck=1
    7. exclude=gaim
    8. failovermethod=priority

    其中gpgcheck,exclude的含義和[main]部分相同,但只對此服務器起做用,failovermethode 有兩個選項roundrobin和priority,意思分別是有多個url可供選擇時,yum選擇的次序,roundrobin是隨機選擇,若是鏈接失 敗則使用下一個,依次循環,priority則根據url的次序從第一個開始。若是不指明,默認是roundrobin。

    幾個變量

    $releasever,發行版的版本,從[main]部分的distroverpkg獲取,若是沒有,則根據redhat-release包進行判斷。 $arch,cpu體系,如i686,athlon等 $basearch,cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha。

    對yum.conf設定完成,咱們就能夠好好體驗yum帶來的方便了。

2.5 軟件源

yum能夠在線安裝軟件,依賴的就是軟件源。軟件源能夠爲網絡源也能夠爲本地源。

yum在操做以前會讀取配置文件,查找源指向的信息,根據信息查找rpm包、解決包之間的依賴關係以及rpm包的版本兼容性問題。

軟件源默認存儲在/etc/yum.repos.d/路徑中。這裏對源配置的基本格式加以說明。以網易源爲例:

[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
Table 2: 軟件源repo文件配置格式說明
參數 說明
[base] 這個是軟件源的名字,且 [ ] 裏面不能爲空。
name 這個只是軟件源的一個描述,也能夠隨意些,但要有意義。
baseurl 指定路徑,能夠用 file,ftp,http 若是用後面的兩個必須開啓相應的服務,
  file 能夠用來作本地軟件源(如:將本地 DVD 設置爲軟件源),必定要保證路
enabled 有 1 和 0 兩個選項,1 表明開啓,0 表明關閉,開啓是指激活這個軟件源,
  關閉則不激活這個軟件源。
gpgcheck 指下載軟件包的時候是否檢查數字簽名,用來檢查軟件包的完整性。開啓 gpgcheck
  後,經過 gpgkey 來指定,相應的 rpm-gpg 文件,若是不指定 gpgkey 文件,那麼就必須
  手動的導入相應的 rpm-gpg 文件.

2.6 yum使用

注:當第一次使用yum或yum資源庫有更新時,yum會自動下載全部所需的headers放置於/var/cache/yum目錄下,所需時間可能較長. 這裏只列出經常使用的幾個命令。幾乎每一個命令都有一堆的額外參數能夠用。經過 "命令 –help" 可查看更多參數說明。

好比我在緩存源時,想指定緩存某個源,經過命令 yum makecache –help 能夠查看緩存源的諸多參數。其中 –enablerepo 能夠指定一個或者多個源.

更多用法 ,請各位客官自行摸索。

  • 安裝

    命令 說明
    yum install 所有安裝
    yum install package 安裝指定的安裝包 package。
    yum install package -y 直接安裝不用詢問是否安裝。
    yum groupinsall group 安裝程序組 group
  • 查找和顯示

    命令 說明
    yum info package 顯示安裝包信息 package。
    yum info updates 列出更新信息。
    yum info installed 列出安裝包信息。
    yum info extras 列出已安裝,但不在 repo 中的包的信息。
    yum list 顯示全部已經安裝和能夠安裝的程序包。
    yum list updates 列出全部可更新的包。
    yum list installed 列出全部已經安裝的包。
    yum list extras 列出全部已安裝,可是沒有在 repo 裏的包。
    yum list package 顯示指定程序包安裝狀況 package。
    yum groupinfo group 顯示程序組 group 信息。
    yum search string 根據關鍵字 string 查找安裝包。
    yum repolist 查看(開啓的)資源庫。
    yum repolist all 查看全部資源庫。
    yum search 使用 yum 查找軟件包。
    yum provides 列出包中文件。
  • 刪除

    命令 說明
    yum remove package 刪除程序包 package
    yum groupremove group 刪除程序組 group
    yum deplist package 查看程序 package 依賴狀況
  • 緩存

    命令 說明
    yum makecache 將源信息緩存
    yum clean packages 清除緩存目錄下的軟件包
    yum clean headers 清除緩存目錄下的 headers
    yum clean oldheaders 清除緩存目錄下舊的 headers
    yum clean [all] 清除緩存目錄下的軟件包及舊的 headers

2.7 yum經常使用問題解決

2.7.1 超時退出

若是網速慢的話能夠經過增長yum的超時時間,這樣就不會老是由於超時而退出。

在 /etc/yum.conf中 #加上這麼一句

timeout=120

2.7.2 yum Existing lock

若是系統啓動的時候, yum出現Existing lock /var/run/yum.pid: another copy is running as pid 6908. Aborting.能夠用下面的辦法解決:

  • 方法一

    /etc/init.d/yum-updatesd stop
    
  • 方法二

    rm -f /var/run/yum.pid
    

主要緣由就是yum在自動更新,只要關掉它就能夠了。

3 從新安裝yum

這一部分適用於RHEL版本的Linux,CentOS的Linux可忽略。

3.1 卸載yum

rpm -aq|grep yum|xargs rpm -e --nodeps

3.2 肯定下載文件

在下載以前,首先咱們要知道,咱們在哪裏下載,須要下載什麼。

  • 肯定下載地址

    首先要肯定下載地址。我通常使用阿里源,由於速度比較快。阿里的下載地址格式是這樣的:

    https://mirrors.aliyun.com/centos/$release/os/$basearch/Packages/
    

    其中$release,是操做系統版本。 $basearch 是操做系統位數(32或者64位對應的 i386 和 x86_64).

    • 查看操做系統的版本

      cat /etc/redhat-release
      

      示例:

      Red Hat Enterprise Linux Server release 7.6 (Maipo)
      

      從示例中,能夠看出版本號是7.6。 在yum 源中通常不配置小版本號,只配置大版本號,也就是7.

    • 查看操做系統位數

      getconf LONG_BIT
      

      示例:

      [root@test1 data]# getconf LONG_BIT
      64
      [root@test1 data]#
      

      結果爲64,代表是64位操做系統,對應的$basearch 爲 x86_64,若是是32位操做系統則結果爲32,對應$basearch爲i386. 通常來講,服務器如今沒有人再安裝32位操做系統了。阿里也再也不提供i386的yum源。

    通過以上的查看,咱們yum相關安裝包的下載頁面就是: https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/

    經過這一步,基本瞭解了下載地址的規律。針對不一樣的版本能夠自行調整.

  • 肯定下載文件

    須要安裝4個rpm包。在上一步中的頁面查找如下文件

    • yum-<version>-<fixed-version>.el7.centos.noarch.rpm
    • yum-metadata-parser.<version>-<fixed-version>.el7.x86_64.rpm
    • yum-plugin-fastestmirror-<version>-<fixed-version>.el7.noarch.rpm
    • python-iniparse-<version>-<fixed-version>.el7.noarch.prm

    能夠直接經過關鍵詞 yum yum-metadata-parser yum-plugin-fastestmirro python-iniparse 直接在頁面進行搜索,而後點擊下載,也可使用下面命令直接在Linux操做系統中進行下載。

    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
    

3.3 安裝

note
基本上操做都須要root用戶權限,若是不能直接以root用戶登陸,能夠su 進行切換。
rpm -ivh python-iniparse-0.4-9.el7.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
rpm -ivh yum-3.4.3-161.el7.centos.noarch.rpm  yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
NOTE
最後一條命令中的兩個安裝包必定要一塊兒安裝,不然會出現依賴問題。

4 配置網絡yum源

通常來說, base 源就已經足夠用,有找不到的包,能夠考慮配置epel源,再找不到的話,再配置rpmfusion源。

4.1 配置阿里雲源

  • 備份原repo文件 備份文件,是爲了防止修改repo文件時出現問題時,咱們還有備份文件能夠還原。

    cd /etc/yum.repos.d
    mkdir backup
    mv *.repo backup/
    
  • 配置阿里雲源 CentOS yum源的配置文件,包含幾個部分: base updates extras centosplus 四個部分。 咱們分別須要對其進行配置,固然只配置一個base也沒有問題。

    配置過程的最關鍵的就是確認mirrorlist的地址。先下載阿里雲的repo文件:

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    

    能夠直接打開 http://mirrors.aliyun.com/repo 查找本身須要的版本的repo文件。

    下載完成後,打開文件CentOS-Base.repo,將"$release"和"$basearch"替換成實際值。 對於使用RHEL安裝包安裝的操做系統,release 保留大版本號,本文章示例爲 7, 而對於CentOS版的操做系統,能夠直接替換成全版本號好比: 7.6.1810; 將$basearch 爲 x86_64, 再將enabled=0 改成 enabled=1. 至於用什麼方法替換,你開心就好。

    爲了方便朋友,如今將我已經將針對CentOS 7.6.1810版操做系統的repo內容整理成腳本,能夠直接複製粘貼執行, 不用先下載文件再修改了。

      cat >> /etc/yum.repos.d/CentOS-Base.repo <<EOF
    [base]
    name=CentOS-7.6.1810 - Base - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/
            http://mirrors.aliyuncs.com/centos/7.6.1810/os/x86_64/
            http://mirrors.cloud.aliyuncs.com/centos/7.6.1810/os/x86_64/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-7.6.1810 - Updates - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/7.6.1810/updates/x86_64/
            http://mirrors.aliyuncs.com/centos/7.6.1810/updates/x86_64/
            http://mirrors.cloud.aliyuncs.com/centos/7.6.1810/updates/x86_64/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-7.6.1810 - Extras - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/7.6.1810/extras/x86_64/
            http://mirrors.aliyuncs.com/centos/7.6.1810/extras/x86_64/
            http://mirrors.cloud.aliyuncs.com/centos/7.6.1810/extras/x86_64/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-7.6.1810 - Plus - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/7.6.1810/centosplus/x86_64/
            http://mirrors.aliyuncs.com/centos/7.6.1810/centosplus/x86_64/
            http://mirrors.cloud.aliyuncs.com/centos/7.6.1810/centosplus/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-7.6.1810 - Contrib - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/7.6.1810/contrib/x86_64/
            http://mirrors.aliyuncs.com/centos/7.6.1810/contrib/x86_64/
            http://mirrors.cloud.aliyuncs.com/centos/7.6.1810/contrib/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
      EOF
    

4.2 配置epel源

  • 阿里雲epel

    阿里雲同時提供了epel源。與上一步中的操做過程徹底同樣。以下:

    #下載repo文件
    wget -O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    # 修改文件CentOS-epel.repo , 將$basearch替換成x86_64 ; enabled=0 改成enabled=1
    

    腳本也準備好,朋友們能夠直接複製粘貼,不用再從網上下載文件:

      cat >> /etc/yum.repos.d/CentOS-epel.repo <<EOF
    [epel]
    name=Extra Packages for Enterprise Linux 7 - x86_64
    baseurl=http://mirrors.aliyun.com/epel/7/x86_64
    failovermethod=priority
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
    [epel-debuginfo]
    name=Extra Packages for Enterprise Linux 7 - x86_64 - Debug
    baseurl=http://mirrors.aliyun.com/epel/7/x86_64/debug
    failovermethod=priority
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=0
    
    [epel-source]
    name=Extra Packages for Enterprise Linux 7 - x86_64 - Source
    baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
    failovermethod=priority
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=0
    EOF
    
  • fedora epel

    Fedora EPEL 下載:http://mirrors.fedoraproject.org/publiclist/EPEL/

    EPEL 下載地址:http://download.fedora.redhat.com/pub/epel/

    以上網直可能不 可用,此時,登陸到下面的地址:

    https://fedoraproject.org/wiki/EPEL

    查找:「How can I use these extra packages?」

    在該條目內能夠找到: The newest version of 'epel-release' for (版本)

    下載epel包。再執行安裝。

    請針對不一樣的版本下載相應的包。

4.3 配置repoforge源

rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
yum makecache

4.4 配置rpmfusion源

RPMFusion官網:http://rpmfusion.org/

  • RHEL 6/CentOS 6

    yum -Uvh http://download1.rpmfusion.org/free/el/rpmfusion-free-release-6.noarch.rpm
    
  • RHEL 7/CentOS 7

    yum -Uvh http://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
    
  • RHEL 8 / CentOS8

    yum -Uvh http://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
    

5 配置本地yum源

對於一些環境,咱們並不能聯網。所以須要配置一個本地源。

配置本地源的前提是下載一個完整的ISO鏡像文件,推薦下載everything版本的ISO。好比:

http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1810.iso

這個版本比基礎安裝版多了一個GB 的rpm包,經常使用的包在這裏面都能找到。

關於iso文件的自動掛載,參考: 開機自動掛載ISO文件.

對於虛擬機來說, ISO文件能夠配置成開機自動鏈接,此時 /dev/cdrom 表明了ISO文件。 掛載本地源的過程以下:

1) 建立掛載路徑
mkdir /mnt/iso
2) 掛載ISO鏡像
  • 虛擬機 : mount /dev/cdrom /mnt/iso
  • ISO鏡像 : mount /CentOS-7-x86_64-Everything-1810.iso /mnt/iso
3) 編輯repo文件

vi /etc/yum.repos.d/CentOS-Media.repo 內容以下:

[local_iso]
name=local iso
baseurl=file:///mnt/iso
gpgcheck=1
enabled=1
gpgkey=file:///mnt/iso/RPM-GPG-KEY-CentOS-7

Author: halberd.lee

Created: 2019-08-10 Sat 22:14

Validate

相關文章
相關標籤/搜索