阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在 RHEL/CentOS 系统上使用 YUM history 命令回滚升级操作

417次阅读
没有评论

共计 10112 个字符,预计需要花费 26 分钟才能阅读完成。

在 RHEL/CentOS 系统上使用 YUM history 命令回滚升级操作

为服务器打补丁是 Linux 系统管理员的一项重要任务,为的是让系统更加稳定,性能更加优化。厂商经常会发布一些安全 / 高危的补丁包,相关软件需要升级以防范潜在的安全风险。

Yum(Yellowdog Update Modified)是 CentOS 和 RedHat 系统上用的 RPM 包管理工具,yum history 命令允许系统管理员将系统回滚到上一个状态,但由于某些限制,回滚不是在所有情况下都能成功,有时 yum 命令可能什么都不做,有时可能会删掉一些其他的包。

我建议你在升级之前还是要做一个完整的系统备份,而 yum history 并不能用来替代系统备份的。系统备份能让你将系统还原到任意时候的节点状态。

某些情况下,安装的应用程序在升级了补丁之后不能正常工作或者出现一些错误(可能是由于库不兼容或者软件包升级导致的),那该怎么办呢?

与应用开发团队沟通,并找出导致库和软件包的问题所在,然后使用 yum history 命令进行回滚。

注意:

  • 它不支持回滚 selinux,selinux-policy-*,kernel,glibc(以及依赖 glibc 的包,比如 gcc)。
  • 不建议将系统降级到更低的版本(比如 CentOS 6.9 降到 CentOS 6.8),这会导致系统处于不稳定的状态

让我们先来看看系统上有哪些包可以升级,然后挑选出一些包来做实验。

  1. #yum update
  2. Loaded plugins: fastestmirror, security
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. epel/metalink |12 kB 00:00
  6. * epel: mirror.csclub.uwaterloo.ca
  7. base |3.7 kB 00:00
  8. dockerrepo |2.9 kB 00:00
  9. draios |2.9 kB 00:00
  10. draios/primary_db |13 kB 00:00
  11. epel |4.3 kB 00:00
  12. epel/primary_db |5.9 MB 00:00
  13. extras |3.4 kB 00:00
  14. updates |3.4 kB 00:00
  15. updates/primary_db |2.5 MB 00:00
  16. ResolvingDependencies
  17. -->Running transaction check
  18. --->Packagegit.x86_64 0:1.7.1-8.el6 will be updated
  19. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be an update
  20. --->Package httpd.x86_64 0:2.2.15-60.el6.centos.4 will be updated
  21. --->Package httpd.x86_64 0:2.2.15-60.el6.centos.5 will be an update
  22. --->Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.4 will be updated
  23. --->Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.5 will be an update
  24. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be updated
  25. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be an update
  26. -->FinishedDependencyResolution
  27. DependenciesResolved
  28. =================================================================================================
  29. PackageArchVersionRepositorySize
  30. =================================================================================================
  31. Updating:
  32. git x86_64 1.7.1-9.el6_9 updates 4.6 M
  33. httpd x86_64 2.2.15-60.el6.centos.5 updates 836 k
  34. httpd-tools x86_64 2.2.15-60.el6.centos.5 updates 80 k
  35. perl-Git noarch 1.7.1-9.el6_9 updates 29 k
  36. TransactionSummary
  37. =================================================================================================
  38. Upgrade4Package(s)
  39. Total download size:5.5 M
  40. Isthis ok [y/N]: n

你会发现 git 包可以被升级,那我们就用它来实验吧。运行下面命令获得软件包的版本信息(当前安装的版本和可以升级的版本)。

  1. #yumlistgit
  2. Loaded plugins: fastestmirror, security
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. * epel: mirror.csclub.uwaterloo.ca
  6. InstalledPackages
  7. git.x86_64 1.7.1-8.el6@base
  8. AvailablePackages
  9. git.x86_64 1.7.1-9.el6_9 updates

运行下面命令来将 git1.7.1-8 升级到 1.7.1-9

  1. #yum update git
  2. Loaded plugins: fastestmirror, presto
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. * base: repos.lax.quadranet.com
  6. * epel: Fedora.mirrors.pair.com
  7. * extras: mirrors.seas.harvard.edu
  8. * updates: mirror.sesp.northwestern.edu
  9. ResolvingDependencies
  10. -->Running transaction check
  11. --->Packagegit.x86_64 0:1.7.1-8.el6 will be updated
  12. -->ProcessingDependency:git=1.7.1-8.el6forpackage: perl-Git-1.7.1-8.el6.noarch
  13. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be an update
  14. -->Running transaction check
  15. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be updated
  16. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be an update
  17. -->FinishedDependencyResolution
  18. DependenciesResolved
  19. =================================================================================================
  20. PackageArchVersionRepositorySize
  21. =================================================================================================
  22. Updating:
  23. git x86_64 1.7.1-9.el6_9 updates 4.6 M
  24. Updatingfor dependencies:
  25. perl-Git noarch 1.7.1-9.el6_9 updates 29 k
  26. TransactionSummary
  27. =================================================================================================
  28. Upgrade2Package(s)
  29. Total download size:4.6 M
  30. Isthis ok [y/N]: y
  31. DownloadingPackages:
  32. Setting up and reading Presto delta metadata
  33. Processing delta metadata
  34. Package(s) data still to download:4.6 M
  35. (1/2):git-1.7.1-9.el6_9.x86_64.rpm |4.6 MB 00:00
  36. (2/2): perl-Git-1.7.1-9.el6_9.noarch.rpm |29 kB 00:00
  37. -------------------------------------------------------------------------------------------------
  38. Total5.8 MB/s |4.6 MB 00:00
  39. Running rpm_check_debug
  40. RunningTransactionTest
  41. TransactionTestSucceeded
  42. RunningTransaction
  43. Updating: perl-Git-1.7.1-9.el6_9.noarch1/4
  44. Updating:git-1.7.1-9.el6_9.x86_64 2/4
  45. Cleanup: perl-Git-1.7.1-8.el6.noarch3/4
  46. Cleanup:git-1.7.1-8.el6.x86_64 4/4
  47. Verifying:git-1.7.1-9.el6_9.x86_64 1/4
  48. Verifying: perl-Git-1.7.1-9.el6_9.noarch2/4
  49. Verifying:git-1.7.1-8.el6.x86_64 3/4
  50. Verifying: perl-Git-1.7.1-8.el6.noarch4/4
  51. Updated:
  52. git.x86_64 0:1.7.1-9.el6_9
  53. DependencyUpdated:
  54. perl-Git.noarch 0:1.7.1-9.el6_9
  55. Complete!

验证升级后的 git 版本.

  1. #yumlistgit
  2. InstalledPackages
  3. git.x86_64 1.7.1-9.el6_9@updates
  4. # rpm -q git
  5. git-1.7.1-9.el6_9.x86_64

现在我们成功升级这个软件包,可以对它进行回滚了。步骤如下。

 

使用 YUM history 命令回滚升级操作

首先,使用下面命令获取 yum 操作的 id。下面的输出很清晰地列出了所有需要的信息,例如操作 id、谁做的这个操作(用户名)、操作日期和时间、操作的动作(安装还是升级)、操作影响的包数量。

  1. #yum history
  2. #yum history list all
  3. Loaded plugins: fastestmirror, presto
  4. ID |Login user |Dateandtime|Action(s)|Altered
  5. -------------------------------------------------------------------------------
  6. 13| root |2017-08-1813:30|Update|2
  7. 12| root |2017-08-1007:46|Install|1
  8. 11| root |2017-07-2817:10| E, I, U |28 EE
  9. 10| root |2017-04-2109:16| E, I, U |162 EE
  10. 9| root |2017-02-0917:09| E, I, U |20 EE
  11. 8| root |2017-02-0210:45|Install|1
  12. 7| root |2016-12-1506:48|Update|1
  13. 6| root |2016-12-1506:43|Install|1
  14. 5| root |2016-12-0210:28| E, I, U |23 EE
  15. 4| root |2016-10-2805:37| E, I, U |13 EE
  16. 3| root |2016-10-1812:53|Install|1
  17. 2| root |2016-09-3010:28| E, I, U |31 EE
  18. 1| root |2016-07-2611:40| E, I, U |160 EE

上面命令显示有两个包受到了影响,因为 git 还升级了它的依赖包 perl-Git。运行下面命令来查看关于操作的详细信息。

  1. #yum history info13
  2. Loaded plugins: fastestmirror, presto
  3. Transaction ID :13
  4. Begintime:FriAug1813:30:522017
  5. Begin rpmdb :420:f5c5f9184f44cf317de64d3a35199e894ad71188
  6. Endtime:13:30:542017(2 seconds)
  7. End rpmdb :420:d04a95c25d4526ef87598f0dcaec66d3f99b98d4
  8. User: root
  9. Return-Code:Success
  10. CommandLine: update git
  11. Transaction performed with:
  12. Installed rpm-4.8.0-55.el6.x86_64 @base
  13. Installedyum-3.2.29-81.el6.centos.noarch @base
  14. Installedyum-plugin-fastestmirror-1.1.30-40.el6.noarch@base
  15. Installedyum-presto-0.6.2-1.el6.noarch@anaconda-CentOS-201207061011.x86_64/6.3
  16. PackagesAltered:
  17. Updatedgit-1.7.1-8.el6.x86_64 @base
  18. Update1.7.1-9.el6_9.x86_64 @updates
  19. Updated perl-Git-1.7.1-8.el6.noarch@base
  20. Update1.7.1-9.el6_9.noarch@updates
  21. history info

运行下面命令来回滚 git 包到上一个版本。

  1. #yum history undo 13
  2. Loaded plugins: fastestmirror, presto
  3. Undoing transaction 53,fromFriAug1813:30:522017
  4. Updatedgit-1.7.1-8.el6.x86_64 @base
  5. Update1.7.1-9.el6_9.x86_64 @updates
  6. Updated perl-Git-1.7.1-8.el6.noarch@base
  7. Update1.7.1-9.el6_9.noarch@updates
  8. Loading mirror speeds from cached hostfile
  9. * base: repos.lax.quadranet.com
  10. * epel: fedora.mirrors.pair.com
  11. * extras: repo1.dal.innoscale.net
  12. * updates: mirror.vtti.vt.edu
  13. ResolvingDependencies
  14. -->Running transaction check
  15. --->Packagegit.x86_64 0:1.7.1-8.el6 will be a downgrade
  16. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be erased
  17. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be a downgrade
  18. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be erased
  19. -->FinishedDependencyResolution
  20. DependenciesResolved
  21. =================================================================================================
  22. PackageArchVersionRepositorySize
  23. =================================================================================================
  24. Downgrading:
  25. git x86_64 1.7.1-8.el6 base 4.6 M
  26. perl-Git noarch 1.7.1-8.el6 base 29 k
  27. TransactionSummary
  28. =================================================================================================
  29. Downgrade2Package(s)
  30. Total download size:4.6 M
  31. Isthis ok [y/N]: y
  32. DownloadingPackages:
  33. Setting up and reading Presto delta metadata
  34. Processing delta metadata
  35. Package(s) data still to download:4.6 M
  36. (1/2):git-1.7.1-8.el6.x86_64.rpm |4.6 MB 00:00
  37. (2/2): perl-Git-1.7.1-8.el6.noarch.rpm |29 kB 00:00
  38. -------------------------------------------------------------------------------------------------
  39. Total3.4 MB/s |4.6 MB 00:01
  40. Running rpm_check_debug
  41. RunningTransactionTest
  42. TransactionTestSucceeded
  43. RunningTransaction
  44. Installing: perl-Git-1.7.1-8.el6.noarch1/4
  45. Installing:git-1.7.1-8.el6.x86_64 2/4
  46. Cleanup: perl-Git-1.7.1-9.el6_9.noarch3/4
  47. Cleanup:git-1.7.1-9.el6_9.x86_64 4/4
  48. Verifying:git-1.7.1-8.el6.x86_64 1/4
  49. Verifying: perl-Git-1.7.1-8.el6.noarch2/4
  50. Verifying:git-1.7.1-9.el6_9.x86_64 3/4
  51. Verifying: perl-Git-1.7.1-9.el6_9.noarch4/4
  52. Removed:
  53. git.x86_64 0:1.7.1-9.el6_9 perl-Git.noarch 0:1.7.1-9.el6_9
  54. Installed:
  55. git.x86_64 0:1.7.1-8.el6 perl-Git.noarch 0:1.7.1-8.el6
  56. Complete!

回滚后,使用下面命令来检查降级包的版本。

  1. #yumlistgit
  2. # rpm -q git
  3. git-1.7.1-8.el6.x86_64

 

使用 YUM downgrade 命令回滚升级

此外,我们也可以使用 YUM downgrade 命令回滚升级。

  1. #yum downgrade git-1.7.1-8.el6 perl-Git-1.7.1-8.el6
  2. Loaded plugins: search-disabled-repos, security, ulninfo
  3. Setting up DowngradeProcess
  4. ResolvingDependencies
  5. -->Running transaction check
  6. --->Packagegit.x86_64 0:1.7.1-8.el6 will be a downgrade
  7. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be erased
  8. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be a downgrade
  9. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be erased
  10. -->FinishedDependencyResolution
  11. DependenciesResolved
  12. =================================================================================================
  13. PackageArchVersionRepositorySize
  14. =================================================================================================
  15. Downgrading:
  16. git x86_64 1.7.1-8.el6 base 4.6 M
  17. perl-Git noarch 1.7.1-8.el6 base 29 k
  18. TransactionSummary
  19. =================================================================================================
  20. Downgrade2Package(s)
  21. Total download size:4.6 M
  22. Isthis ok [y/N]: y
  23. DownloadingPackages:
  24. (1/2):git-1.7.1-8.el6.x86_64.rpm |4.6 MB 00:00
  25. (2/2): perl-Git-1.7.1-8.el6.noarch.rpm |28 kB 00:00
  26. -------------------------------------------------------------------------------------------------
  27. Total3.7 MB/s |4.6 MB 00:01
  28. Running rpm_check_debug
  29. RunningTransactionTest
  30. TransactionTestSucceeded
  31. RunningTransaction
  32. Installing: perl-Git-1.7.1-8.el6.noarch1/4
  33. Installing:git-1.7.1-8.el6.x86_64 2/4
  34. Cleanup: perl-Git-1.7.1-9.el6_9.noarch3/4
  35. Cleanup:git-1.7.1-9.el6_9.x86_64 4/4
  36. Verifying:git-1.7.1-8.el6.x86_64 1/4
  37. Verifying: perl-Git-1.7.1-8.el6.noarch2/4
  38. Verifying:git-1.7.1-9.el6_9.x86_64 3/4
  39. Verifying: perl-Git-1.7.1-9.el6_9.noarch4/4
  40. Removed:
  41. git.x86_64 0:1.7.1-9.el6_9 perl-Git.noarch 0:1.7.1-9.el6_9
  42. Installed:
  43. git.x86_64 0:1.7.1-8.el6 perl-Git.noarch 0:1.7.1-8.el6
  44. Complete!

注意:你也需要降级依赖包,否则它会删掉当前版本的依赖包而不是对依赖包做降级,因为 downgrade 命令无法处理依赖关系。

 

至于 Fedora 用户

命令是一样的,只需要将包管理器名称从 yum 改成 dnf 就行了。

  1. # dnf listgit
  2. # dnf history
  3. # dnf history info
  4. # dnf history undo
  5. # dnf listgit
  6. # dnf downgrade git-1.7.1-8.el6 perl-Git-1.7.1-8.el6

via: https://www.2daygeek.com/rollback-fallback-updates-downgrade-packages-centos-rhel-fedora/

作者:2daygeek 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2018-01/150414.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10112字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984924
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...