Назад | Перейти на главную страницу

Как заставить Yum установить старый пакет, который «устарел» новым пакетом?

У меня есть хост CentOS 6 с сервером MySQL. Я хочу перенести этот сервер с пакетов MySQL Enterprise Server на пакеты MySQL Community Server со следующими особенностями:

Поскольку у Community 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 ~]# 

Я пробовал пару вещей, например, указать конкретный номер версии, представленный в Как установить старую версию php (5.2.17) в Linux?, но в данном случае это не работает:

[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 ~]#
    
  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 ~]#