Eu tenho um host CentOS 6 executando um servidor MySQL. Eu quero migrar este servidor dos pacotes do MySQL Enterprise Server para os pacotes do MySQL Community Server, com as seguintes especificações:
- Os RPMs do MySQL Enterprise são chamados
mysql-commercial
-something e estão na versão '5.7.22-1.1'. Eu os armazeno em um repositório personalizado. - Os RPMs da comunidade são chamados
mysql-community
-something, e a versão mais recente disponível é '5.7.22-1' , que é uma única versão '.1' atrás da versão comercial. Eles são armazenados em um repositório público ( http://repo.mysql.com/ ).
Como o RPM da comunidade tem um número de versão um pouco atrás da versão comercial, não posso simplesmente trocar um pacote por outro. Yum reclama com o erro "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 ~]#
Eu tentei algumas coisas, como especificar o número de versão específico apresentado em Como instalar uma versão mais antiga do php (5.2.17) no Linux? , mas isso não funciona neste caso:
[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 ~]#
Como posso forçar o Yum a usar um pacote com um número de versão mais antigo?
Não consegui encontrar uma maneira de fazer isso apenas com Yum. O que acabei fazendo foi um processo de duas etapas:
Use
rpm
para remover os pacotes mysql-commercial-*, mas não remova nenhuma dependência.E então use o Yum para instalar os pacotes mysql-community, no número de versão mais próximo que posso encontrar:
E restaure alguns arquivos principais: