IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> centos7升级到centos8 -> 正文阅读

[系统运维]centos7升级到centos8

1.前言

本文来说明下从centos7升级到centos8,我们使用最进本的dnf来做。这里说明的是升级是把所有的rpm都升级上去,如果系统中有非rpm包安装的文件,还是要备份下。索性把整个系统备份下,如果失败的话可以进行还原。

2. 安装dnf

由于升级需要到dnf的功能,所以需要centos7的dnf包,我们确保之前centos7的repo仓库可用且可以安装到dnf(我本地仓库dnf的repo是在这里可以找到:http://mirror.centos.org/centos/ r e l e a s e v e r / e x t r a s / releasever/extras/ releasever/extras/basearch/)

$ yum install dnf -y
...()
============================================================================================================
 Package                        架构                  版本                   源                大小
============================================================================================================
正在安装:
 dnf                          noarch       4.0.9.2-2.el7_9             extras                 357 k
为依赖而安装:
 deltarpm                     x86_64       3.6-3.el7                   base                    82 k
 dnf-data                     noarch       4.0.9.2-2.el7_9             extras                  51 k
 libcomps                     x86_64       0.1.8-14.el7                extras                  75 k
 libdnf                       x86_64       0.22.5-2.el7_9              extras                 535 k
 libmodulemd                  x86_64       1.6.3-1.el7                 extras                 141 k
 librepo                      x86_64       1.8.1-8.el7_9               updates                 82 k
 libreport-filesystem         x86_64       2.1.11-53.el7.centos        base                    41 k
 libsolv                      x86_64       0.6.34-4.el7                base                   329 k
 libyaml                      x86_64       0.1.4-11.el7_0              base                    55 k
 python-enum34                noarch       1.0.4-1.el7                 base                    52 k
 python2-dnf                  noarch       4.0.9.2-2.el7_9             extras                 414 k
 python2-hawkey               x86_64       0.22.5-2.el7_9              extras                  71 k
 python2-libcomps             x86_64       0.1.8-14.el7                extras                  47 k
 python2-libdnf               x86_64       0.22.5-2.el7_9              extras                 611 k
...()

3. 移除一些有影响的rpm包

清理本地环境

根据以下指令列出来一些rpm包

$ yum install yum-utils
$ package-cleanup --problems # 列出来有依赖问题的包
$ package-cleanup --orphans   # 列出来本机安装单在当前仓库不可用的包
$ package-cleanup --leaves    # 列出来没有依赖的rpm包

可以选择删除掉某些无用或者有问题的包

删除掉有影响的rpm包

这一步会卸载掉影响升级的包:

$ dnf remove yum gcc dracut-network sysvinit-tools -y
$ dnf clean all
$ rpm -vv --rebuilddb  # 然后做一下rpm数据库的rebuild,避免一些残留和数据库损坏

4. 重建仓库

对centos7的环境进行了一些清理后,我们就需要要切换仓库到centos8(或者其他redhat系得操作系统),这里repo可以自己指定

# 备份之前的仓库数据
$ mkdir c7.repo && mv /etc/yum.repos.d/*.repo c7.repo/

# 使用国内华为的镜像源作为仓库
$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
# yum的安装路径有些干扰,先把他备份下,等升级完了看是否需要手动还原
$ mv /etc/yum /etc/_yum.bk

5. 升级系统

先把centos-linux-release升级上去

$ dnf install https://repo.huaweicloud.com/centos-vault/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-release-8.5-1.2111.el8.noarch.rpm
...()
Installing:
 centos-linux-release          noarch          8.5-1.2111.el8         @commandline         22 k
     替换  centos-release.x86_64 7-9.2009.0.el7.centos
安装依赖关系:
 centos-gpg-keys               noarch           1:8-3.el8                BaseOS            12 k
 centos-linux-repos            noarch           8-3.el8                  BaseOS            20 k

升级了之后镜像已经是最新的了,我们还用回国内的镜像:

$ mkdir c8.repo && mv /etc/yum.repos.d/*.repo c8.repo/
$ mv /etc/yum.repos.d/CentOS-Base.repo.rpmsave /etc/yum.repos.d/CentOS-Base.repo

$ dnf makecache
CentOS-8 - Base - repo.huaweicloud.com                          17 kB/s | 3.9 kB     00:00    
CentOS-8 - AppStream - repo.huaweicloud.com                     20 kB/s | 4.3 kB     00:00    
CentOS-8 - PowerTools - repo.huaweicloud.com                    17 kB/s | 4.3 kB     00:00    
CentOS-8 - Extras - repo.huaweicloud.com                        6.6 kB/s | 1.5 kB     00:00

然后删除之前的内核:

$ rpm -qa | grep kernel # check一下kernel相关的包有哪些,最后系统缺少可以选择补齐
$ rpm -e `rpm -qa | grep kernel`
$ rpm -vv --rebuilddb

然后开始升级:

# dnf distro-sync就是把系统安装的包升级到指定仓库的最新版本
$ dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

这里如果升级报错,可以看下是否可以先将有影响的包移除掉,之后再补充回来解决

到这里升级成功,我们把之前最开始卸载的一些包再安装回来。

安装开始卸载掉的gcc和dracut-network,yum我们已经安装过了就不需要再安装了。

$ dnf install gcc dracut-network vim -y

sysvinit-tools这个包在centos8中已经被procps-ng, util-linux替换掉了,我们查看下procps-ng和util-linux已经被安装了,所以就不需要做什么了。

因为我们是直接先把kernel卸载掉,distro-sync有可能kernel没有升级上来,为了以往万一我们在安装kernel一下(不过我实验每次都是有的):

$ dnf -y install kernel kernel-core # 这里kernel相关的包也可以和之前的系统对对齐

6. 卸载掉centos7的包

$ rpm -qa | grep el7
libssh2-1.8.0-4.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
aic94xx-firmware-30-6.el7.noarch
pth-2.0.7-23.el7.x86_64
tcp_wrappers-libs-7.6-77.el7.x86_64
nss-pem-1.0.3-7.el7.x86_64
btrfs-progs-4.9.1-1.el7.x86_64
mozjs17-17.0.0-20.el7.x86_64

这是我本地环境的残留的centos7的包,这些包要么就是在centos8中被废弃,要么就是已经换了名字(比如说sysvinit-tools)。所以这里我们可以把他都卸载掉,因为每个人的环境可能不同,请大家检查自己的rpm包,如果被废弃了但是在使用请寻找替代方案,如果更名了,请检查新名称的rpm包有没有安装。

我这里就直接全部删除掉了:

$ rpm -qa | grep el7 | xargs dnf remove -y

7. 总结

到这里我们就完成了centos7到centos8的升级

我们首先需要卸载一些包:由于从centos7到centos8时,rpm包有的会废弃掉,有的会多个包的功能合并成一个包,有的会一个包拆分功能到多个包,有的干脆就换了一个名字,所以我们这里做的是有些会干扰我们升级的包我们可以先把他卸载掉,最后再补回来。

之后为了防止旧的环境影响到升级,我们做了rpm rebuilddb等操作。

最后通过distro-sync来把整个操作系统的rpm包升级上去,但是这里仅限于升级后的包的版本比升级前的要高,如果要降级的话可以参考使用dnf shell把要降级的rpm包执行install(install [包的nvr])。

关于centos8和centos7的包的对比,这里可以看到:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/considerations_in_adopting_rhel_8/index

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:16:18  更:2022-06-08 19:19:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 22:06:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码