Centos

如何強制 Yum 安裝“被新包淘汰”的舊包?

  • May 31, 2018

我有一個執行 MySQL 伺服器的 CentOS 6 主機。我想將此伺服器從 MySQL Enterprise Server 包遷移到 MySQL Community Server 包,具體如下:

  • MySQL Enterprise RPM 稱為mysql-commercial-something,版本為“5.7.22-1.1”。我將這些儲存在自定義儲存庫中。
  • 社區 RPM 被稱為mysql-community-something,最新的可用版本是 ‘5.7.22-1’,它是商業版本之後的單個 ‘.1’ 版本。這些儲存在公共儲存庫(http://repo.mysql.com/)中。

由於社區 RPM 的版本號略低於商業版本,因此我不能簡單地將一個包換成另一個包。Yum 抱怨錯誤“Package foo-1 is obsoleted by foo-1.1”:

[root@devdb ~]# yum list --quiet available 'mysql-*-server'
Available Packages
mysql-community-server.x86_64                   5.7.22-1.el6                    mysql57-community
[root@devdb ~]# 
[root@devdb ~]# yum install --quiet mysql-community-server
Package mysql-community-server-5.7.22-1.el6.x86_64 is obsoleted by mysql-commercial-server-5.7.22-1.1.el6.x86_64 which is already installed
[root@devdb ~]# 

我嘗試了幾件事,例如指定如何在 Linux 中安裝舊版本的 php (5.2.17)?,但在這種情況下不起作用:

[root@devdb ~]# yum install --quiet mysql-community-server-5.7.22-1.el6.x86_64 
Package mysql-community-server-5.7.22-1.el6.x86_64 is obsoleted by mysql-commercial-server-5.7.22-1.1.el6.x86_64 which is already installed
[root@devdb ~]#

如何強制 Yum 使用舊版本號的包?

我無法找到僅使用 Yum 的方法。我最終做的是一個兩步過程:

  1. 用於rpm刪除 mysql-commercial-* 包,但不要刪除任何依賴項。
[root@devdb ~]# rpm --erase --nodeps mysql-commercial-server mysql-commercial-libs-compat mysql-commercial-client mysql-commercial-common mysql-commercial-libs
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@devdb ~]#
  1. 然後使用 Yum 以我能找到的最接近的版本號安裝 mysql-community 包:
[root@devdb ~]# yum --disablerepo=local-mysql-enterprise install mysql-community-libs-5.6.40-2.el6.el6.x86_64 mysql-community-common-5.6.40-2.el6.el6.x86_64 mysql-community-client-5.6.40-2.el6.el6.x86_64 mysql-community-libs-compat-5.6.40-2.el6.el6.x86_64 mysql-community-server-5.6.40-2.el6.el6.x86_64 
...
Installed:
 mysql-community-client.x86_64 0:5.7.22-1.el6               mysql-community-common.x86_64 0:5.7.22-1.el6
   mysql-community-libs.x86_64 0:5.7.22-1.el6                 mysql-community-libs-compat.x86_64 0:5.7.22-1.el6
   mysql-community-server.x86_64 0:5.7.22-1.el6

Complete!
[root@devdb ~]#
  1. 並恢復一些核心文件:
[root@devdb ~]#cp /etc/my.cnf.rpmsave /etc/my.cnf
[root@devdb ~]#

引用自:https://serverfault.com/questions/913325