我有一台运行 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 就能做到这一点的方法。我最终采取了两个步骤:
用于
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 ~]#
然后使用 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 ~]#
并恢复一些核心文件:
[root@devdb ~]#cp /etc/my.cnf.rpmsave /etc/my.cnf [root@devdb ~]#