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 kdnf-data noarch 4.0.9.2-2.el7_9 extras 51 klibcomps x86_64 0.1.8-14.el7 extras 75 klibdnf x86_64 0.22.5-2.el7_9 extras 535 klibmodulemd x86_64 1.6.3-1.el7 extras 141 klibrepo x86_64 1.8.1-8.el7_9 updates 82 klibreport-filesystem x86_64 2.1.11-53.el7.centos base 41 klibsolv x86_64 0.6.34-4.el7 base 329 klibyaml x86_64 0.1.4-11.el7_0 base 55 kpython-enum34 noarch 1.0.4-1.el7 base 52 kpython2-dnf noarch 4.0.9.2-2.el7_9 extras 414 kpython2-hawkey x86_64 0.22.5-2.el7_9 extras 71 kpython2-libcomps x86_64 0.1.8-14.el7 extras 47 kpython2-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 kcentos-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
centos7升级到centos8相关推荐
- centos8更换yum源_基于yum进行linux系统升级--从Centos7升级到Centos8
概述 今天主要分享下最近做的一个操作系统升级(centos7->centos8)测试,过程如下: 注意:如果在正式环境升级,请做好数据备份以及重要配置备份!因为升级会造成一部分应用被卸载. 操作 ...
- 从Centos7升级到Centos8的教程(图文详解)
如果在正式环境升级,请做好数据备份以及重要配置备份!因为升级会造成一部分应用被卸载. 1.安装epel源 yum -y install epel-release 正在上传-重新上传取消 2.安装rpm ...
- CentOS7 升级到 CentOS8
一.升级包 [root@centos7 ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)[root@centos7 ~] ...
- centos7安装python3_详解Centos7升级python 2.7至Python 3.7
详解Centos7升级python 2.7至Python 3.7 龙行 个人随笔 2019-6-6 3451 0评论 centos7版本默认安装的是python2.7,对于强迫症的我来说,忍受不了啊. ...
- centos7升级python,yum出现问题“ImportError: No module named urlgrabber.grabber”
centos7升级python的教程已经有很多了 比如老版本的python是2.6.6,新安装的python版本是2.7.9 mv /usr/bin/python /usr/bin/python2.6 ...
- Linux Glibc幽灵漏洞紧急修补方案;Centos7升级内核到3.18
本文转载:http://ixdba.blog.51cto.com/2895551/1609526 幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让***者在不了解系统的任何情况下 ...
- CentOS7升级openssh至8.0
参考资料:最全CentOS7升级OpenSSH方案 以下这些包自行网上下载,或者虚拟机装一个最小系统,使用yumdownload下载这些资源 先将这些包上传到服务器,以免卸载openssl之后无法上传 ...
- centos7升级gcc版本,无需手动下载源码编译
centos7升级gcc版本,无需手动下载源码编译 第一步: 安装centos-release-scl 第二步: 安装devtoolset 第三步: 激活对应的devtoolset 第四步: 查看版本 ...
- Centos7升级内核——图文详尽版
Linux是一种开源电脑操作系统内核.它是一个用C语言写成,符合POSIX标准的类Unix操作系统. Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix ...
最新文章
- idea中配置xml不自动提示解决方案
- 我所认识的JavaScript正则表达式
- Mockito框架学习之stub then return
- 程序员的生存技巧 —— 搜索技巧
- HashTable 简述
- Spark(Core)
- hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2
- Windows 下载安装 SonarQube和使用
- VSDX Annotator for mac(Visio 绘图工具)
- 酷狗音乐api接口php,【教程分享】酷狗音乐API接口大全(40+个)
- 2023年四川农业大学农村发展专硕经验贴
- C++ 的算术、自增自减、位运算、关系与逻辑运算符(数据的操作)
- 面向接口编程VS《倚天屠龙记》里张三丰教无忌打太极
- Teach repeat replan 安装中遇到的问题记录
- redmine配置邮箱提醒步骤(qq企业邮箱和个人邮箱)
- 电容传感器FDC2214单通道应用寄存器计算
- 看起来为空的字符串,长度却是1?
- 常见城市城市名称中英文json
- php mysql 偶数 id_javascript – 如何从mysql数据库(PHP)中的表中选择所有偶数的帖子ID...
- Angular4介绍