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

相关文章
相关标签/搜索