У меня есть хост CentOS 6 с сервером MySQL. Я хочу перенести этот сервер с пакетов MySQL Enterprise Server на пакеты MySQL Community Server со следующими особенностями:
mysql-commercial
-что-то и находятся в версии '5.7.22-1.1'. Я храню их в настраиваемом репо.mysql-community
-что-то, а последняя доступная версия - 5.7.22-1., который представляет собой единственный выпуск с расширением ".1" после коммерческой версии. Они хранятся в публичном репо (http://repo.mysql.com/ ).Поскольку у 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. В итоге я сделал двухэтапный процесс:
Использовать 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 ~]#