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

如何强制 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 抱怨错误“软件包 foo-1 已被 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 使用具有旧版本号的软件包?

答案1

我找不到只用 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 ~]#
    
  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 ~]#
    
  3. 并恢复一些核心文件:

    [root@devdb ~]#cp /etc/my.cnf.rpmsave /etc/my.cnf
    [root@devdb ~]#
    

相关内容