CentOS 6 CentOS 7 配置yum源


CentOS / RHEL 配置yum源

1 前言


本文內容過長。可以通過頁面右上角的目錄選擇章節進行快速跳轉。


由於 redhat的yum在線更新,沒有注冊的情況下不能使用。但是好在有CentOS這一開源項 目,讓我們可以通過配置公開源來方便的安裝和更新軟件包。

對於安裝RHEL版本的Linux,想要使用yum源,需要先將原本的yum卸載掉,然后重新安裝.

CentOS版的Linux因其本身是開源項目,其ISO中自帶的yum是可用的,不需要重新安裝。

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

其實整個配置過程,相當於把RHEL的源更換為CentOS的源以及其他開源項目的源。

以下為詳細過程.

2 關於yum

2.1 yum是什么

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

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文件,讓我 們以此為例,進行說明。

[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM