前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS 7 迁移到Rocky Linux 9

CentOS 7 迁移到Rocky Linux 9

作者头像
繁华是客
发布2024-08-07 16:41:52
4140
发布2024-08-07 16:41:52
举报
文章被收录于专栏:鱼的爱情看不出泪水

我们知道CentOS 7在2024年6月30日停止支持,在此前,陆陆续续已经有人迁移了。但是如果还未迁移,现在迁移可能会遇到不同的问题。例如我们源地址发生了变化。下面我们给大家演示迁移升级。

CentOS 7 Update

因为原版源已经从mirror.centos.org改为vault.centos.org,默认是找不到新更新的。你可以修改你的源为vault.centos.org或者使用linuxmirror.cn修改为国内镜像源。

我为了更快速下载,使用国内镜像源。 CentOS 7 to CentOS 8 Stream 1GiG - CentOS 7 to CentOS 8

代码语言:javascript
复制
sudo yum update -y
代码语言:javascript
复制
sudo yum install epel-release -y
代码语言:javascript
复制
sudo yum install rpmconf -y
代码语言:javascript
复制
sudo rpmconf -a
代码语言:javascript
复制
sudo yum install yum-utils -y
代码语言:javascript
复制
sudo package-cleanup --leaves
sudo package-cleanup --orphans

清除完后,重启。

代码语言:javascript
复制
sudo yum install dnf -y
sudo dnf remove yum yum-metadata-parser -y

sudo rm -Rf /etc/yum
代码语言:javascript
复制
sudo dnf update -y

因为我使用了国内镜像源,我先把/etc/yum.repo.bak还原回来。也就是原本的centos源。

代码语言:javascript
复制
sudo dnf install http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm} -y

上面的命令是下载新版本repo 不过我们先打开BaseOS, AppSteam,Extra源,看看他们是mirror.centos.org还是vault.centos.org。 如果不是vault则改过来。

例如:

代码语言:javascript
复制
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

使用下面的命令时因为缓存还在使用mirror.centos.org的原因,会有报错,但是没关系,因为我们安装的是下载的网址内安装包。之后我们清除缓存即可。

代码语言:javascript
复制
sudo dnf upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
代码语言:javascript
复制
sudo dnf clean all
代码语言:javascript
复制
sudo rpm -e `rpm -q kernel`

这个时候,表面已经是CentOS 8 了。你可以通过

代码语言:javascript
复制
cat /etc/redhat-release

查看。

更换源为国内镜像源 - 选择华为云源

代码语言:javascript
复制
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

选择华为云源
代码语言:javascript
复制
sudo dnf update -y

安装完成后,表面上应该就会是CentOS 8, 但是应该也会有冲突的python3的报错,sysvinit-tools的报错等等。 我们先dnf remove移除python3-pip, sysvinit-tools 也可以

代码语言:javascript
复制
rpm -e --nodeps sysvinit-tools
# dnf remove sysvinit-tools-2.88-14.dsf.el7.x86_64

remove python3-setuptools-39.2.0-10.el7.noarch

# 我们无法移除gdbm 使用以下方式升级到CentOS 8
dnf upgrade --best --allowerasing

然后继续升级CentOS 7到CentOS 8

代码语言:javascript
复制
dnf clean all


dnf --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync 

安装内核

代码语言:javascript
复制
dnf install kernel-core -y

安装CentOS 8 的最小版本

代码语言:javascript
复制
dnf -y groupupdate "Core" "Minimal Install" 

虽然,我们可以通过以下命令再次将CentOS 8 转为CentOS 8 Stream

代码语言:javascript
复制
sudo dnf install centos-release-stream -y

但是后续其实还有步骤,只要dnf版本足够高的话,其实可以直接迁移Rocky Linux。所以没有转换的必要。

与此同时Rocky Linux 8迁移到Rocky Linux 9 需要使用AlmaLinux的leapp也就是ELevate工具来升级,且升级步骤必须使用VPN,直接下载依赖好像还是不行的。leapp默认只支持CentOS, 需要leapp-data-xxx来支持其他系统升级。 因为本身大版本升级操作系统是不支持的,所以官方也没有明确的方式,而Rocky Linux 8.10 EOL是2029年,其实直接迁移为Rocky Linux 8已经足够了。

迁移到Rocky Linux 8

根据Rocky Linux的步骤继续迁移: Migrate to Rocky Linux 8

代码语言:javascript
复制
curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh
代码语言:javascript
复制
chmod u+x migrate2rocky.sh

运行脚本:

代码语言:javascript
复制
./migrate2rocky.sh -r

等待运行完毕重启后:

代码语言:javascript
复制
cat /etc/*release*

Rocky Linux release 8.10 (Green Obsidian)
NAME="Rocky Linux"
VERSION="8.10 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.10"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.10 (Green Obsidian)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:8:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2029-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8"
ROCKY_SUPPORT_PRODUCT_VERSION="8.10"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.10"
Rocky Linux release 8.10 (Green Obsidian)
Rocky Linux release 8.10 (Green Obsidian)
Derived from Red Hat Enterprise Linux 8.10
Rocky Linux release 8.10 (Green Obsidian)
cpe:/o:rocky:rocky:8:GA

之后再打开/etc/yum.repos.d并将CentOS-*.repo删除

代码语言:javascript
复制
rm -rf /etc/yum.repos.d/CentOS-*
# 或不加f 可以确认删除的文件
rm -r /etc/yum.repos.d/CentOS-*

使用ELevate leapp升级系统

Rocky Linux 8 to 9方法 AlmaLinux leaapp Upgrade leaapp Upgrade

如果直接是CentOS 8也可以直接使用这个方式升级。

下载这个rpm, 就会在/etc/yum.repos.d安装Elevate repo,你也可以使用wget下载后安装。

代码语言:javascript
复制
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm

Elevate Repo内容:(该repo无镜像站)

代码语言:javascript
复制
[elevate]
name=ELevate
baseurl=https://repo.almalinux.org/elevate/el8/$basearch/
...

因为Elevate无镜像站资源,leapp-data-rocky就无法下载,即使预先先从官网下载依然是不行的。 leapp-data-rocky最新版地址:https://repo.almalinux.org/elevate/el8/x86_64/leapp-data-rocky-0.2-7.el8.noarch.rpm 因为默认的leapp-upgrade只支持CentOS,不支持其他升级。所以leapp-upgrade和leapp-data-rocky都需要。如果使用leapp-data,只支持从Rocky 8升级到Rocky 9,不支持CentOS 8 升级并迁移为Rocky 9 或CentOS 8 升级并迁移为Alma 9。 因此需要直接VPN到https://repo.almalinux.org/elevate/ 这个源里安装依赖。

代码语言:javascript
复制
yum install -y leapp-upgrade leapp-data-rocky
代码语言:javascript
复制
leapp preupgrade

然后查看answerfile,我的answerfile中只有vdo问题,所以直接使用以下命令覆盖即可。

代码语言:javascript
复制
leapp answer --section check_vdo.no_vdo_devices=True

后面步骤不展示了,因为没成功。(需要VPN连,太慢了。)

Rocky Linux 8 到Rocky Linux 9 (非leapp方式)

RL8 to RL9 可以参考浙江大学的镜像源

代码语言:javascript
复制
dnf install https://mirror.nju.edu.cn/rocky-vault/9.3/BaseOS/x86_64/os/Packages/r/{rocky-repos-9.3-1.3.el9.noarch.rpm,rocky-release-9.3-1.3.el9.noarch.rpm,rocky-gpg-keys-9.3-1.3.el9.noarch.rpm} -y
代码语言:javascript
复制
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

应该会报iptable的错误,通过以下方式解决

代码语言:javascript
复制
yum remove iptables-ebtables make-devel

然后再来一次升级后重建rpmdb。这是因为9版本不再使用Berkeley DB(bdb_ro)而是使用SQLite

代码语言:javascript
复制
rpm --rebuilddb

安装CentOS 9 的最小版本之后重启。

代码语言:javascript
复制
dnf -y groupupdate "Core" "Minimal Install" 

升级如果遇到以下问题,需要用dnf module disable禁用。

代码语言:javascript
复制
Problem 1: conflicting requests
 - nothing provides module(platform:el8) needed by module mariadb:10.3:8080020230920001707:fd72936b.x86_64 from @modulefailsafe
Problem 2: conflicting requests
 - nothing provides module(platform:el8) needed by module python27:2.7:8100020240523105808:5f0f67de.x86_64 from @modulefailsafe
Problem 3: conflicting requests
 - nothing provides module(platform:el8) needed by module python36:3.6:8100020231207204726:5ae887d0.x86_64 from @modulefailsafe

我们根据上面的信息禁用对应的模块,并且是同时输入

代码语言:javascript
复制
dnf module disable mariadb:10.3 python27:2.7 python36:3.6

我们当然也可以使用dnf module list的方式查看模块并禁用。

这时如果dnf update -y或者dnf upgrade已经无报错代表升级成功了,可以重启使用了。 不过如果你查看dnf list |grep el8 可能还会找到有软件包是el8的 你可以按需看情况使用dnf remove卸载掉。 如果遇到kernel-core在的情况下,则需要

代码语言:javascript
复制
rpm -e --nodeps `rpm -qa|grep -i kernel|grep 4.18`

因为卸载的有点多,我为了确保稳定性将系统环境改为Server(你也可以用Server with GUI)

代码语言:javascript
复制
dnf groupinstall "Server"

# dnf grouplist 查看可选安装环境

这样他会安装很多组件,应该来说就比较稳定了。

当然我们都知道,重新安装才是最稳定的。这是一个迁移临时方案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CentOS 7 Update
  • 迁移到Rocky Linux 8
  • 使用ELevate leapp升级系统
  • Rocky Linux 8 到Rocky Linux 9 (非leapp方式)
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档