我平时都在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版本的更多相关文章

  1. Ubuntu 14.0 升级内核到指定版本

    1.卸载现有内核sudo apt purge linux-headers-* linux-headers-*-generic linux-image-*-generic linux-image-ext ...

  2. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  3. CentOS 7.0 下 Python 2.7 升级到 Python 3.5

    前段因为时间工作需要,要把 Centos 7.0 默认安装的 Python 2.7 升级到 Python 3.5. 具体操作如下: # 安装 gcc gcc-c++ 等编译工具软件 yum insta ...

  4. 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...

  5. CentOS 6.9升级GCC至7.3.0版本

    1.查看当前centos版本:  cat /etc/redhat-release 2. 安装centos6.9默认的开发工具,包含gcc,g++,make等等一系列工具: yum groupinsta ...

  6. 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 ...

  7. centos 7.0 安装nginx 1.9.10

    可以参考以前安装成功的案例 centos 7.0 nginx 1.7.9成功安装过程 官网下载 http://nginx.org/en/download.html nginx下载位置 /usr/loc ...

  8. 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 ...

  9. centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~

    mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server ...

随机推荐

  1. Uncovering thousands of new peptides with sequence-mask-search hybrid de novo peptide sequencing framework (使用序列掩码搜索结合肽段从头测序框架发现了数千个新肽段)-解读人:刘佳维

    期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位: 朱拉隆功大学 费城威斯塔研究所 物种:人 技术:de novo ...

  2. 全文搜索技术--solr7.1之mysql的安装步骤

    1.安装命令 #>在线安装wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 输完上面一句话不能正常的下载安装 ...

  3. python基础知识1——简介与入门

    什么是Python:Python能做什么:安装与更新:第一个Python程序:变量:pyc字节码:编码:条件和循环:Python运算符:算数,比较,赋值,位,逻辑::::::::::::::::::: ...

  4. mybatis3.2.7应用_高级映射(一对一、一对多、多对多)

    1. 一对一查询 需求:查询订单信息,关联查询创建订单的用户信息 1.1 使用resultType实现 1.1.1 sql语句 确定查询的主表:订单表       确定查询的关联表:用户表      ...

  5. 【2019多校第一场补题 / HDU6582】2019多校第一场E题1005Path——最短路径+网络流

    HDU6582链接 题意 在一张有向图中,有一个起点和一个终点,你需要删去部分路径,使得起点到终点的最短距离增加(并不要求需要使得距离变成最大值),且删除的路径长度最短.求删去的路径总长为多少 分析 ...

  6. type=file 文件修改表单 名称不能正常回显的问题

     easyui 框架下   代码如下: css: .file_box{ float: right; width: 1035px; border: 1px solid #999; height: 32p ...

  7. pat 1044.火星数字 Java版

    个人网站:https://www.lingluan.xyz 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, ma ...

  8. Android LinearLayout线性布局详解

    为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器.通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性.推荐使用布局管理器来管理组件的分布.大小, ...

  9. Apache服务器故障排除攻略

    Apache服务器故障排除攻略 应用服务器Apache浏览器配置管理网络应用  随着网络技术的普及.应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一.原有的客户端/服务器模式正 ...

  10. html ajax 异步加载 局部刷新

    1. getJSON 优点: 简单高效,直接返回处理好的json数据 缺点: 只能使用get请求和使用json数据 <script src ='jquery.min.js'></sc ...