提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

    安装完成 CentOS之后,后续安装软件的话,就需要使用 yum 进行 repo 源的管理,所有的 repo 都位于 /etc/yum.repos.d/目录下,该目录下存在多个。我安装的是 CentOS-7-x86_64-DVD-1804,其 repo 文件包括

  • CentOS-Base.repo
  • CentOS-CR.repo
  • CentOS-fasttrack.repo
  • CentOS-Sources.repo
  • CentOS-Debuginfo.repo
  • CentOS-Media.repo
  • CentOS-Vault.repo
    其实,这些 repo 并没有全都启用,可以使用 yum repolist all 查看你拥有的所有repo及其状态(当前会否启用,启用的会将其标识为 enable) ,后面会做详细说明。

提示:以下是本篇文章正文内容,下面案例可供参考

一、默认 repo 情况

    安装完成之后,默认 repo 位于 mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock。当使用 yum makecache(Generate the metadata cache 生成repo 缓存)或者 yum repolist all(首次使用,或者前面已经使用 yum clean all)时,大概率会看到下面的情况:(大概的意思就是连不上,被墙了)

Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock: (28, ‘Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds’)
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile

    这种情况下,如果你使用yum install ***安装程序,是装不了的,因为你的 repo 里面找不到。使用 yum repolist all可以查看当前启用的 repo ( /etc/yum.repos.d/目录下),以及每个启用的 repo 下拥有的可安装软件数目(如果网络能连到该 repo 的话)。
在这里插入图片描述
    可以看到,C7.*开始的行都是以前版本(我装的是1804版本)相关的 repo,所以状态都是 disabled。实际启用的只有 Base、Extras、Updates(这几个其实都是在 CentOS-Base.repo 中定义的),它们的 状态 都是 enabled。但是后面还有个0是什么意思呢,这其实表示虽然启用了,但连不上网,最后一行的 repolist: 0也说明了这一点。
    CentOS-Base.repo 的部分脚本,可以看到这里定义了 Base、Updates、Extras、Plus四个repo的源。

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/

二、更换国内源

    有两种更换国内源的方式:

  1. 直接修改 CentOS-Base.repo,改为国内源地址即可
  2. 删掉/转移到别的位置 CentOS-Base.repo,或者改一下后缀,改成非.repo,然后将从国内备份站点下载新 repo 放入 /etc/yum.repos.d/目录即可,这里只说使用 wget下载工具直接下载的情况。

1.备份 CentOS-Base.repo

假设当前已经在 /etc/yum.repos.d/目录

mkdir bak
mv CentOS-Base.repo  ./bak

2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/

网上有些教程里面,非要把新下载的 repo 文件 命名为 CentOS-Base.repo,这是没有多大必要的,yum解析的时候是靠

[updates]
name=CentOS-$releasever - Updates

来完成的,所以 repo 的文件名是否与原来的相同其实是没有多大关系的,只要有 Base、Updates、Extras、Plus这四者的定义就可以了。

# 当前为 `/etc/yum.repos.d/`目录
wget http://mirrors.aliyun.com/repo/Centos-7.repo
# 或者 网易 源 
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

3.清除系统yum缓存并生成新的yum缓存

yum clean all # 清除系统所有的yum缓存
yum makecache # 生成yum缓存

至此,源已经配置好了,可以再次使用 yum repolist all看一下结果。可以看到 Base、Extras、Updates 对应的软件数目已经不是 0,可以使用 yum install **安装软件了。

在这里插入图片描述

4.添加 EPEL 源

EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

有两种添加方式

  1. yum 安装,这种方式下载下来的 epel.repo,里面的repo源地址可能是官方的,比如我这边下载下来后,里面的内容是下面这样的,可以看到该 epel 里面程序的源定位到了 mirrors.fedoraproject.org(这里的metalink不知是什么意思)
yum list | grep epel-release			# epel 位于 @extras  中
yum install -y epel-release

epel.repo 的内容

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
  1. 直接从阿里云下载,
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

epel.repo 的内容为下面所示,epel 里面程序的源已经变为 mirrors.aliyun.com

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
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 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
 
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

Tips:

经实测,http://download.fedoraproject.org/pub/epel/7/会跳转到清华源或者中科大源

5.更新epel-release

上面4里面安装的 epel-release 版本为7-11,是可以更新到 7-13的

yum clean all			# 清除系统yum缓存
yum makecache			# 重新生成新的yum缓存, epel 源生效
yum list | grep epel-release
yum install -y epel-release

前3行指令执行之后,会提示 epelrepo中存在一个更新版本的 epel-release,使用第4行安装即可。

Tips

更新之后,repo源又会变为mirrors.fedoraproject.org,不过实测下载速度跟使用阿里云几无差别。

6.几个软件的安装

yum install -y htop atop iftop iotop redhat-lsb

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐