如何将 GCC 版本从 4.8.3 恢复到 4.8.2?

How do I revert GCC version from 4.8.3 to 4.8.2?

我不小心更新了工作机器上的 GCC 版本。我们使用需要 GCC 4.8.2 的非常具体的设置,因此我必须恢复 GCC 更新。我在 CentOS 7 上 运行。

打印 yum 历史并查找不必要的更新:

yum history

它打印出如下内容:

ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     8 | root <root>              | 2011-10-03 14:40 | Install        |    1   
     7 | root <root>              | 2011-09-21 04:24 | Install        |    1 ##
     6 | root <root>              | 2011-09-21 04:23 | Install        |    1 ##
     5 | root <root>              | 2011-09-16 13:35 | Install        |    1   
     4 | root <root>              | 2011-09-16 13:33 | Erase          |    1   
     3 | root <root>              | 2011-09-14 14:36 | Install        |    1   
     2 | root <root>              | 2011-09-12 15:48 | I, U           |   80   
     1 | System <unset>           | 2011-09-12 14:57 | Install        | 1025 

比撤消它:

yum history undo 8

如果旧包不再在回购中,撤消命令可能会失败,因此您可以尝试包含存档回购。

经过几个小时的实验,这是我找到的解决方案:

解决方案是从 .rpm 文件安装 gcc-4.8.2。幸运的是,yum 似乎缓存了以前的 rpm 文件。

我去 /var/cache/yum/x86_64/7/updates/packages 发现了一堆 .rpm 包,包括 gcc-4.8.2 rpm 文件!

我试过 运行 sudo yum localinstall gcc-4.8.2-16.2.el7_0.x86_64.rpm,但是它说它的某些依赖项版本错误。

为了解决这个问题,我对有问题的依赖项调用了 sudo yum remove,即 libgomp 和 cpp。然后,我使用 yum 缓存目录中的 4.8.2 .rpm 文件为这两个包调用 sudo yum localinstall

然后我又运行sudo yum localinstall gcc-4.8.2-16.2.el7_0.x86_64.rpm,成功了!