从CentOS 7.0升级到7.7版本
我平时都在VirtualBox上装虚拟机,方法是导入ova镜像文件,比如导入从网上下载的CentOS7-base.ova,该ova为CentOS 7.0版本,而现在最新版本为7.7,为此进入系统后第一件事就是系统升级:
# yum update
可是该命令居然异常退出了!
重新进入系统后检查:
# uname -r
3.10.-123.9..el7.x86_64 # cat /proc/version
Linux version 3.10.-123.9..el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8. (Red Hat 4.8.-) (GCC) ) # SMP Tue Oct :: UTC # cat /etc/redhat-release
CentOS Linux release 7.7. (Core)
可见Linux发行版本号已改为7.7,但核心仍然是旧版本,并且再次执行yum update命令失败,说明系统未升级成功。经常一段时间摸索找到两种从7.0升级到7.7的方法。
方法一:升级失败后手工解决错误并重新升级
yum update命令异常退出后重新登录系统,然后执行:
清理上次失败的命令
# yum-complete-transaction --cleanup-only
查看重复的包
# package-cleanup --dupes
kbd-misc-1.15.-.el7.noarch
kbd-misc-1.15.-.el7.noarch
nss-tools-3.44.-.el7_7.x86_64
nss-tools-3.16.-.el7_0.x86_64
...
gzip-1.5-.el7.x86_64
gzip-1.5-.el7.x86_64
该命令本应无输出,但由于上次yum update命令失败导致大量重复的新旧包。
删除重复的包
# package-cleanup --cleandupes
...
Complete!
Warning: Some duplicates were not removed because they are required by installed packages.
You can try --cleandupes with --removenewestdupes, or review them with --dupes and remove manually.
该命令虽然删除了很多重复包,但提示未完全清除。
尝试重新升级
# yum update
...
--> Finished Dependency Resolution
Error: Package: avahi-libs-0.6.-.el7.x86_64 (@anaconda)
Requires: avahi = 0.6.-.el7
Removing: avahi-0.6.-.el7.x86_64 (@anaconda)
avahi = 0.6.-.el7
Updated By: avahi-0.6.-.el7.x86_64 (base)
avahi = 0.6.-.el7
Error: firewalld conflicts with :NetworkManager-0.9.9.1-.git20140326.4dba720.el7_0..x86_64
Error: avahi-libs conflicts with avahi-0.6.-.el7.x86_64
You could try using --skip-broken to work around the problem
...
仍升级失败!
根据上面的错误信息删除旧包
# rpm -e avahi-libs-0.6.-.el7.x86_64
error: Failed dependencies:
avahi-libs = 0.6.-.el7 is needed by (installed) avahi-0.6.-.el7.x86_64
avahi-libs = 0.6.-.el7 is needed by (installed) avahi-autoipd-0.6.-.el7.x86_64
该命令失败,原因是存在依赖项。为此需同时删除依赖项:
# rpm -e avahi-libs-0.6.-.el7.x86_64 \
> avahi-0.6.-.el7.x86_64 \
> avahi-autoipd-0.6.-.el7.x86_64
error: Failed dependencies:
avahi-autoipd is needed by (installed) NetworkManager-:0.9.9.1-.git20140326.4dba720.el7_0..x86_64
仍有其它级联依赖项,一并删除:
# rpm -e avahi-libs-0.6.-.el7.x86_64 \
> avahi-0.6.-.el7.x86_64 \
> avahi-autoipd-0.6.-.el7.x86_64 \
> NetworkManager-:0.9.9.1-.git20140326.4dba720.el7_0..x86_64
error: Failed dependencies:
NetworkManager = :0.9.9.1-.git20140326.4dba720.el7_0. is needed by (installed) NetworkManager-tui-:0.9.9.1-.git20140326.4dba720.el7_0..x86_64
继续一并删除:
# rpm -e avahi-libs-0.6.-.el7.x86_64 \
> avahi-0.6.-.el7.x86_64 \
> avahi-autoipd-0.6.-.el7.x86_64 \
> NetworkManager-:0.9.9.1-.git20140326.4dba720.el7_0..x86_64 \
> NetworkManager-tui-:0.9.9.1-.git20140326.4dba720.el7_0..x86_64
成功!
继续尝试升级
# yum update
...
Replaced:
grub2.x86_64 :2.02-0.2..el7.centos. Complete!
成功!成功升级后请重启系统:
# reboot
再次查看并删除重复的包
# package-cleanup --dupes
...
kbd-misc-1.15.-.el7.noarch
kbd-misc-1.15.-.el7.noarch
libdb-5.3.-.el7.x86_64
libdb-5.3.-.el7_0..x86_64
...
libteam-1.27-.el7.x86_64
libteam-1.9-.el7.x86_64
仍有一些重复的包,删除之:
# package-cleanup --cleandupes
...
--> Finished Dependency Resolution
Error: Rpmdb checksum is invalid: pkg checksums: grub2-tools-:2.02-0.2..el7.centos..x86_64
You could try using --skip-broken to work around the problem
...
不知何故居然报错了,但再次执行就成功了:
# package-cleanup --cleandupes
...
Removed:
audit-libs.x86_64 :2.3.-.el7 bind-license.noarch :9.9.-.el7 device-mapper.x86_64 :1.02.-.el7
device-mapper-event-libs.x86_64 :1.02.-.el7 device-mapper-libs.x86_64 :1.02.-.el7 dracut.x86_64 :-.el7
e2fsprogs-libs.x86_64 :1.42.-.el7 kbd-misc.noarch :1.15.-.el7 libcom_err.x86_64 :1.42.-.el7
libcurl.x86_64 :7.29.-.el7 libdb.x86_64 :5.3.-.el7_0. libss.x86_64 :1.42.-.el7
libteam.x86_64 :1.9-.el7 systemd.x86_64 :-.el7_0. systemd-libs.x86_64 :-.el7_0. Complete!
再检查一下是否有重复的包:
# package-cleanup --dupes
没有重复的包了。
重启系统并再次检查新版本号
# reboot # uname -r
3.10.-1062.18..el7.x86_64 # cat /proc/version
Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 17 23:49:17 UTC 2020 # cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
完全正确!至此升级成功!
方法二:从7.0到7.5再到7.7版本
如果你已执行了yum update命令并且失败则只能用上面的方法一解决,本方法适用于新装系统。
从7.0升级到7.5版本
yum update命令默认升级到最新版,但我们可修改配置文件让其升级到指定的版本。
检查是否有更新
# yum list centos-release
...
Installed Packages
centos-release.x86_64 7-0.1406.el7.centos.2.5 @updates
Available Packages
centos-release.x86_64 7-7.1908.0.el7.centos base
该命令显示当前版本是7.0,可升级到7.7版本(但我们知道升级会报错)。
修改CentOS-Base.repo文件,指向7.5版本库
把CentOS-Base.repo文件里的mirrorlist注释掉,并增加相应的baseurl,其它不变,如下:
# cat /etc/yum.repos.d/CentOS-Base.repo
...
[base]
...
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/7.5.1804/os/$basearch/
...
[updates]
...
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://vault.centos.org/7.5.1804/updates/$basearch/
...
[extras]
...
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://vault.centos.org/7.5.1804/extras/$basearch/
...
[centosplus]
...
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://vault.centos.org/7.5.1804/centosplus/$basearch/
...
清空缓存
修改配置文件后要清理一下缓存:
# yum clean all
再次检查更新
# yum list centos-release
Installed Packages
centos-release.x86_64 -0.1406.el7.centos.2.5 @updates
Available Packages
centos-release.x86_64 -5.1804..el7.centos updates
可见如果升级则将升级到7.5版本。
升级到7.5版本
# yum update
升级成功后请reboot重启系统。
从7.5升级到7.7版本
把上面的CentOS-Base.repo文件还原、清空缓存、然后执行yum update即可。
从CentOS 7.0升级到7.7版本的更多相关文章
- Ubuntu 14.0 升级内核到指定版本
1.卸载现有内核sudo apt purge linux-headers-* linux-headers-*-generic linux-image-*-generic linux-image-ext ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...
- CentOS 7.0 下 Python 2.7 升级到 Python 3.5
前段因为时间工作需要,要把 Centos 7.0 默认安装的 Python 2.7 升级到 Python 3.5. 具体操作如下: # 安装 gcc gcc-c++ 等编译工具软件 yum insta ...
- 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...
- CentOS 6.9升级GCC至7.3.0版本
1.查看当前centos版本: cat /etc/redhat-release 2. 安装centos6.9默认的开发工具,包含gcc,g++,make等等一系列工具: yum groupinsta ...
- centos 7.0 编译安装php 7.0.3
php下载页面 http://cn2.php.net/downloads.php 7.0.3多地区下载页面 http://cn2.php.net/get/php-7.0.3.tar.gz/from/a ...
- centos 7.0 安装nginx 1.9.10
可以参考以前安装成功的案例 centos 7.0 nginx 1.7.9成功安装过程 官网下载 http://nginx.org/en/download.html nginx下载位置 /usr/loc ...
- centos 7.0 nginx 1.7.9成功安装过程
centos 7.0根目录 的目录构成 [root@localhost /]# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib me ...
- centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~
mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server ...
随机推荐
- Python3 整数
imag定义:返回整数的复数形式的虚部(返回整数).格式:intobject.imag real定义:返回整数的复数形式的实部(返回整数).格式:intobject.real conjugate()定 ...
- CSS导入方式和六种选择器
1.css的导入方式 1.1 行内嵌式 1.2 内部方式 1.2.1含义: css代码写在<head>的<style>标签中 1.2.2 优点 方便在同页面中修改样式 1.2. ...
- Python3之turtle的基本用法#Python学习01#
一.turtle基本语法 1.导入turtle 模块import turtle 2.显示箭头turtle.showturtle() 3.写字符串turtle.write("因小米" ...
- 常用正则表达式(手机号、邮箱、URL地址、身份证等等)
一.前言 不好的习惯:1.每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思: 2.一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规 ...
- 使用toString()检测对象类型
可以通过toString() 来获取每个对象的类型.为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或 ...
- Hadoop调度器
一.FIFO调度器(先进先出调度) 上图为FIFO调度器的执行过程示意图.FIFO Scheduler是最简单也是最容易理解的调度器,它缺点是不适用于共享集群.大的应用可能会占用所有集群资源,这就导致 ...
- Kubernets中获取客户端真实IP总结
1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...
- Babel快速入门
作者:姜瑞涛 Github仓库:https://github.com/jruit/babel-tutorial 博客:姜瑞涛的官方网站 原文链接:https://www.jiangruitao.com ...
- EOS基础全家桶(五)钱包管理
简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...
- Java实现3次找到假球
前言 之前老师让写一个程序,就写了写. 正文 题目要求 程序要求 10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球. 程序设计思路 第一次使用天平分别称5个球,判断轻的一边有假球:拿 ...