如何强制 Yum 安装“被新软件包淘汰”的旧软件包?

Ste*_*ski 5 mysql centos yum

我有一台运行 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 ~]# 
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法,例如指定如何在 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 ~]#
Run Code Online (Sandbox Code Playgroud)

如何强制 Yum 使用版本号较旧的软件包?

Ste*_*ski 2

我找不到只用 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 ~]#
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后使用 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 ~]#
    
    Run Code Online (Sandbox Code Playgroud)
  3. 并恢复一些核心文件:

    [root@devdb ~]#cp /etc/my.cnf.rpmsave /etc/my.cnf
    [root@devdb ~]#
    
    Run Code Online (Sandbox Code Playgroud)