提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
安装完成 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/
二、更换国内源
有两种更换国内源的方式:
- 直接修改 CentOS-Base.repo,改为国内源地址即可
- 删掉/转移到别的位置 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 等提供高质量软件包的项目。
有两种添加方式
- 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
- 直接从阿里云下载,
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行指令执行之后,会提示 epel
的 repo
中存在一个更新版本的 epel-release
,使用第4行安装即可。
Tips
更新之后,repo源又会变为
mirrors.fedoraproject.org
,不过实测下载速度跟使用阿里云几无差别。
6.几个软件的安装
yum install -y htop atop iftop iotop redhat-lsb