CentOS 升级至指定版本

辛辛苦苦在机房苦战了2分钟给机器安装了CentOS 7系统,结果发现要安装的软件不适用这个7.3.1611版本,不想去机房。

CentOS系统下用yum upgrade命令只能升级到最新版本,CentOS仓库并不维护历史版本,所以只能使用 vault.centos.org 历史版本快照进行更新,本文以将7.3.1611升级到7.4.1708为例。

查看当前版本

$ rpm -q centos-release
centos-release-7-3.1611.el7.centos.x86_64
$ cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)

新增指定版本更新源

CentOS 7的更新源在/etc/yum.repos.d/目录下,其中的CentOS-Vault.repo文件中已经写好了一些历史发布版本的源,如果需要只需将该源的enabled设置为1,默认只有比当前系统的安装版本低的版本,但是我们可以将高版本的更新源如法炮制一份,手动添加进来。这里以7.4.1708版本为例,将如下内容添加进来,其中baseupdates源需要设置为1,fasttrack最好也设置为1,这样可以按照最近的源来更新提高速度,其他可根据需要选择开启或者禁用:

# C7.4.1708
[C7.4.1708-base]
name=CentOS-7.4.1708 - Base
baseurl=http://vault.centos.org/7.4.1708/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

[C7.4.1708-updates]
name=CentOS-7.4.1708 - Updates
baseurl=http://vault.centos.org/7.4.1708/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

[C7.4.1708-extras]
name=CentOS-7.4.1708 - Extras
baseurl=http://vault.centos.org/7.4.1708/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0

[C7.4.1708-centosplus]
name=CentOS-7.4.1708 - CentOSPlus
baseurl=http://vault.centos.org/7.4.1708/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0

[C7.4.1708-fasttrack]
name=CentOS-7.4.1708 - CentOSPlus
baseurl=http://vault.centos.org/7.4.1708/fasttrack/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

之后查看仓库是否可用:

$ yum repolist
Loaded plugins: fastestmirror
repo id repo name status
C7.4.1708-base/x86_64 CentOS-7.4.1708 - Base 9,591
C7.4.1708-centosplus/x86_64 CentOS-7.4.1708 - CentOSPlus 92
C7.4.1708-fasttrack/x86_64 CentOS-7.4.1708 - CentOSPlus 0
C7.4.1708-updates/x86_64 CentOS-7.4.1708 - Updates 2,416
repolist: 12,099

禁用其他更新源

修改在/etc/yum.repos.d/目录下的.repo文件,将其他软件源禁用(包括CentOS-Base.repo),禁用方式是将.repo文件中的每个源的enabled设置为0(如果没有enabled字段可以手动添加),或者直接将.repo文件改为其他后缀,例如.repo.bak,这里以Qemu源为例:

[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV
baseurl=http://mirror.centos.org/centos/$releasever/virt/$basearch/kvm-common/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization

修改好了之后查看当前可用仓库列表,以确定是否禁用

$ yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9,911
extras/7/x86_64 CentOS-7 - Extras 434
updates/7/x86_64 CentOS-7 - Updates 1,614
repolist: 11,959

查看可更新软件中的centos-release版本是否是自己想要的版本。

注意: 一定要执行这步,以防升级到错误版本。

$ yum list updates
...
centos-release.x86_64 7-4.1708.el7.centos base
...

更新

先清空一下本地缓存:

yum clean all
rm -rf /var/cache/yum

然后升级:

yum update -y

恢复其他更新源

将之前设置的禁用的更新源的enabled重新设置为1,将CentOS-Vault.repo中的更新源enabled设置为0。

参考文献