quanfun

quanfun

腾讯云迁移centos stream 9 到 rocky linux 9

引言#

鉴于腾讯云轻量服务器提供的镜像选择有限,无法直接获取 Rocky Linux 9 的镜像,决定采用手动方式迁移现有的 CentOS Stream 9(以下简称 CS 9)系统。使用了 Rocky Linux 官方提供的迁移脚本,以下是遇到的问题及解决方案

迁移#

CS 8 直接按照官方教程来即可,我测试时没有出现 CS 9 一样的问题

获取脚本#

curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky9.sh

若国内网络不佳
可以使用 stilleshan 提供的 github 加速服务

curl https://mirror.ghproxy.com/https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky9.sh

先下载再上传也是可以的

执行脚本安装#

赋予脚本可执行权限

chmod +x migrate2rocky.sh

执行脚本

./migrate2rocky.sh -r

执行脚本可以考虑使用 screen 或者 tmux,避免连接中断导致系统崩溃

遇到的问题与初步分析#

在尝试使用 Rocky Linux 9 的官方迁移脚本时,出现了一个关于 CentOS-Stream-BaseOS.repo 文件的错误提示,指出无法找到提供该文件的软件包。

Error: No matches found. ...
Can't get package that provides /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.

经检查,CentOS-Stream-BaseOS.repo 内容如下:

[baseos]
name=CentOS Stream $releasever - BaseOS
baseurl=http://mirrors.tencentyun.com/$contentdir/$stream/BaseOS/$basearch/os/

同时,在腾讯云的镜像库中并未发现 CS 9 的相关镜像,仅找到了 CS 8 的镜像资源。据此推测,可能是腾讯云尚未提供 CS 9 的镜像,或是其采用了非标准的镜像路径,导致 Rocky 脚本无法正确识别和定位所需包路径。

解决过程#

思路#

改用清华大学的 CS 9 镜像源,再尝试迁移脚本

执行#

  1. 创建备份目录,将 /etc/yum.repos.d/ 下的所有文件备份至 /root/backup/
  2. 根据清华大学镜像站的教程,替换为镜像源。得到新的 centos.repocentos-addons.repo 文件
  3. 清理并重建软件包缓存 dnf clean all && dnf makecache
  4. 再次运行

问题#

依赖模块问题#

在执行清华大学镜像站推荐的 update_mirror.pl 脚本以更新镜像源地址时,出现了 autodie.pm 模块缺失的错误。通过 dnf 工具搜索并安装 perl-autodie.noarch 模块后,此问题得以解决。

dnf install perl-autodie.noarch

配置重复问题#

然而,执行 dnf 命令后发现多个仓库被多次列出,这是由于腾讯云将 CentOS Stream 的仓库信息分散在了不同文件中,导致完成替换后原本的源仍然存在导致的。为了消除这一问题,需要删除重复的定义
我直接删除了原本的文件
注意:本操作应在使用清华大学教程中的脚本完成替换后执行

rm CentOS-Stream-*.repo

最后,运行 Rocky Linux 迁移脚本 ./migrate2rocky.sh -r,完成从 CentOS Stream 9 向 Rocky Linux 9 的迁移。

其他#

也可以直接删除原文件,然后复制粘贴清华大学镜像站点文件,但要注意权限问题

脚本似乎对文件名称的大小写有要求,脚本执行失败可以考虑修改文件名为centos.repocentos-addons.repo

参考#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。