CentOS / RHEL 配置yum源

青春壹個敷衍的年華 提交于 2019-11-26 18:28:27
CentOS / RHEL 配置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的全局性设置。默认一般不必改动。根据以上示例及其他内容整理如下

    #+name : tbl: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不会用1686的包来升级。
    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 1: table 2-5-1 : 软件源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目录下,所需时间可能较长.

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/

    通过这一步,基本了解了下载地址的规律。针对不同的版本可以自行调整.

  • 确定下载文件 在上一步中的页面查找以下文件

    • 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 01:46

Validate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!