浏览文章

文章信息

CentOS6升级CentOS7 8645

配置升级工具upgradetool源

cat <<EOF >/etc/yum.repos.d/upgrade.repo
[upgrade]
name=upgrade
baseurl=https://buildlogs.centos.org/centos/6/upg/x86_64/
enable=1
gpgcheck=0
EOF

删除/etc/yum.repo.d下面多余的源,只保留upgradetool

安装升级工具

为防止报错preupg: error: [Errno 2] No such file or directory: '/root/preupgrade/result.html',重新装旧版本的openscp

yum erase -y openscap  &&\
yum install -y http://buildlogs.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm &&\
sudo yum install -y preupgrade-assistant-contents redhat-upgrade-tool preupgrade-assistant

查看支持的升级

preupg -l

执行升级分析

preupg -s CentOS6_7

分析结果不能有fail的,有fail的可以看看是否先卸载对应的软件。我自己的服务器,报告的gnome desktop环境相关的fail,我执行了yum erase gnome*查看卸载gnome的影响,如果没有影响业务,则执行卸载,再次执行preupg -s CentOS6_7检查升级的兼容性。


导入CentOS7的key,使用阿里云的源

rpm --import https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7

使用阿里云的源升级系统

centos-upgrade-tool-cli --network 7 --force --instrepo=https://mirrors.aliyun.com/centos-vault/7.2.1511/os/x86_64/

注意只能升级到7.2,其他版本的升级会报告以下错误

Downloading failed: invalid data in .treeinfo: No section: 'checksums'

如果之前用过其他版本的升级源,在升级过程中可能会出现以下,这时可以通过centos-upgrade-tool-cli –clean先清理一下, 然后再执行上面的命令执行更新。

Downloading failed: failure: repodata/6882feea31727f25dc12063b4bab119501d25dbf6cb6fa0f5b78b8e3d5401ea4-filelists.sqlite.bz2 from cmdline-instrepo: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"

更新完成后执行reboot

如果启动的时候报告fail to start LSB,进入单用户模式,通过以下命令进行修复

ln -s /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
ln -s /usr/lib64/libpcre.so.1.2.0 /usr/lib64/libpcre.so.0

升级之后的清理工作

  1. CentOS 6的grep版本比CentOS 7的高,导致grep升级失败,执行yum downgrade grep进行降级。其他高版本导致升级失败的也可以使用相同的方式进行处理
  2. 删除CentOS 6下安装的升级工具yum erase redhat-upgrade-tool
  3. 通过rpm -qa | grep -i el6检查el6残留包,使用yum erase命令进行删除
  4. 恢复配置CentOS6下的第三方源,修改成CentOS7的版本,例如我的服务器有Mysql、gitlab的第三方源,配置好之后,通过执行yum install命令再次安装相关的软件就能恢复
  5. 最后执行yum upgrade升级到最新的版本


原创