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 ~]#
我嘗試了幾件事,例如指定如何在 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 的方法。我最終做的是一個兩步過程:
- 用於
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 ~]#