当前位置:首页 > Linux
CentOS 6 升级到 CentOS 7
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2022-01-17 15:25:21  点击量:1246  评论:0

    准确的说,是从 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
# 作者:靑龍一笑(C.S.Ricen)
# 功能:批量升级 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
# 作者:靑龍一笑(C.S.Ricen)
# 功能:批量降级 CentOS 6 软件包
#
###### 注意语法格式 ######
# 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
# 作者:靑龍一笑(C.S.Ricen)
# 功能:批量卸载 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)
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting