CentOS 6 升级到 CentOS 7

准确的说,是从 CentOS 6.5 先升级到 CentOS 7.2。只有 6.5 以上版本才能这么升级,而且最高只能升级到 7.2。
现在的问题是官网已经不再维护 CentOS 6 了,CentOS 6 要如何使用 yum 源?其实,官网的历史版本还是有的,地址是:https://vault.centos.org/。当然,我们还是使用清华大学的镜像站:https://mirrors.tuna.tsinghua.edu.cn/centos-vault。

【友情提醒】升级有风险,操作需谨慎。

我准备的操作系统是 CentOS 6.5:

[root@RicenOS ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
一、配置清华大学镜像 yum 源:
[root@RicenOS ~]# rm -rf /etc/yum.repos.d/CentOS-{Debuginfo,Media,Vault}.repo
CentOS 6 最高版本是 6.10,当然,也可以使用操作系统对应版本的 yum 源,我这里使用最高版本 6.10 的 yum 源:

[root@RicenOS ~]# sed -i -e ‘/mirrorlist=/d’ \

-e ‘s|^#baseurl=http://mirror.centos.org/centos/$releasever|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.10|g’ 
 -e ‘/gpgkey=/d’ 
 -e ‘s|^gpgcheck=1|gpgcheck=0|g’ 
 /etc/yum.repos.d/CentOS-Base.repo
 由于访问的是 https,还需要关闭证书的认证:
[root@RicenOS ~]# echo “sslverify=false” >> /etc/yum.conf
 更新软件包缓存:[root@RicenOS ~]# yum makecache
 对于 CentOS 6.5 以下版本,建议使用如下命令升级到 CentOS 6.10:[root@RicenOS ~]# yum update -y
 对于 CentOS 6.5 以上版本,可使用当前版本继续以下操作。二、升级 yum 工具
 安装证书:[root@RicenOS ~]# yum install ca-certificates -y
 启用证书认证:[root@RicenOS ~]# sed -i ‘/sslverify=/d’ /etc/yum.conf
 升级 nss:[root@RicenOS ~]# yum update nss -y
 升级 yum:[root@RicenOS ~]# yum update yum -y
 三、配置升级工具 yum 源
 [root@RicenOS ~]# cat > /etc/yum.repos.d/CentOS-Upgrade.repo << EOF[CentOS-Upgrade]
 name=CentOS-Upgrade
 baseurl=https://buildlogs.centos.org/centos/6/upg/$basearch/
 enabled=1
 gpgcheck=0
 EOF
 四、安装 libxslt
 [root@RicenOS ~]# yum install libxslt -y
 五、移除基础 yum 源
 [root@RicenOS ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
 清除 yum 缓存:[root@RicenOS ~]# yum clean all
 更新软件包缓存:[root@RicenOS ~]# yum makecache
 六、安装 openscap
 [root@RicenOS ~]# yum install openscap -y
 七、恢复基础 yum 源
 [root@RicenOS ~]# mv /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo
 八、安装 preupgrade-assistant-contents、redhat-upgrade-tool
 [root@RicenOS ~]# yum install preupgrade-assistant-contents redhat-upgrade-tool -y
 九、导入 CentOS 7 GPG Key
 [root@RicenOS ~]# rpm --import https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.2.1511/os/x86_64/RPM-GPG-KEY-CentOS-7
 十、预升级
 [root@RicenOS ~]# yes | preupg -v
 确认没有问题后,继续以下操作。十一、在线升级
 注意:最高只允许升级到 7.2.1511 版本。[root@RicenOS ~]# centos-upgrade-tool-cli --network 7 --instrepo=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.2.1511/os/x86_64/
 输入“y”,继续升级:Continue with the upgrade [Y/N]? y
 重启:[root@RicenOS ~]# reboot
 重启完以后,网卡没有启动,需要手动进行修复:[root@RicenOS ~]# ln -s /usr/lib64/libpcre.so.1.2.0 /usr/lib64/libpcre.so.0
 [root@RicenOS ~]# ln -s /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
 [root@RicenOS ~]# systemctl restart network
 十二、升级后的清理工作
 1、删除升级工具
 [root@RicenOS ~]# yum erase redhat-upgrade-tool -y
 2、配置 CentOS 7 yum 源
 删除 CentOS 6 yum 源:[root@RicenOS ~]# rm -rf /etc/yum.repos.d/redhat-upgrade-*
 [root@RicenOS ~]# rm -rf /etc/yum.repos.d/CentOS-Upgrade.repo
 [root@RicenOS ~]# rm -rf /etc/yum.repos.d/CentOS-Base.repo
 恢复 CentOS 7 基础 yum 源:[root@RicenOS ~]# mv /etc/yum.repos.d/CentOS-Base.repo.rpmnew /etc/yum.repos.d/CentOS-Base.repo
 配置清华大学镜像 yum 源:[root@RicenOS ~]# sed -i -e ‘s|^mirrorlist=|#mirrorlist=|g’ \
-e ‘s|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g’ 
 -e ‘/gpgkey=/d’ 
 -e ‘s|^gpgcheck=1|gpgcheck=0|g’ 
 /etc/yum.repos.d/CentOS-*.repo
 清除 yum 缓存:[root@RicenOS ~]# yum clean all
 更新软件包缓存:[root@RicenOS ~]# yum makecache
 3、升级软件包
 通过命令 rpm -qa | grep -i el6 可以看到,还存在大量的 el6 残留软件包。这里,我写了一个 shell 脚本进行批量升级:[root@RicenOS ~]# vi autoUpdate.sh
 代码如下:#!/bin/bash
功能:批量升级 CentOS 6 软件包
注意语法格式
done 和 < 之间没有空格
两个 < 之间有一个空格
< 和 ( 之间没有空格
##########################
 while read line
 do
 softname=${line%-}
 yum update ${softname%-} -y
 done< <(rpm -qa | grep -i el6)
 exit 0
 赋予可执行权限:[root@RicenOS ~]# chmod +x autoUpdate.sh
 执行批量升级:[root@RicenOS ~]# ./autoUpdate.sh
 4、降级软件包
 由于 CentOS 6 有些软件包的版本比 CentOS 7 的版本要高,这些软件包不能进行升级,而应该进行降级。这里,我写了一个 shell 脚本进行批量降级:[root@RicenOS ~]# vi autoDowngrade.sh
 代码如下:#!/bin/bash
注意语法格式
done 和 < 之间没有空格
两个 < 之间有一个空格
< 和 ( 之间没有空格
##########################
 while read line
 do
 softname=${line%-}
 yum downgrade ${softname%-} -y
 done< <(rpm -qa | grep -i el6)
 exit 0
 赋予可执行权限:[root@RicenOS ~]# chmod +x autoDowngrade.sh
 执行批量降级:[root@RicenOS ~]# ./autoDowngrade.sh
 5、删除 CentOS 6 残留软件包
 通过升级、降级操作,剩下的 el6 为残留软件包。这里,我写了一个 shell 脚本进行批量删除:[root@RicenOS ~]# vi autoRemove.sh
 代码如下:#!/bin/bash
功能:批量卸载 CentOS 6 软件包
注意语法格式
done 和 < 之间没有空格
两个 < 之间有一个空格
< 和 ( 之间没有空格
##########################
 while read line
 do
 yum erase ${line} -y
 done< <(rpm -qa | grep -i el6)
 exit 0
 赋予可执行权限:[root@RicenOS ~]# chmod +x autoRemove.sh
 执行批量删除:[root@RicenOS ~]# ./autoRemove.sh
 十三、升级到 CentOS 7 最新版本
 [root@RicenOS ~]# yum update -y
 重启:[root@RicenOS ~]# reboot
 检查升级后的版本:[root@RicenOS ~]# cat /etc/redhat-release
 CentOS Linux release 7.9.2009 (Core)备用的centos6 Yum源