%20%2B%20tratamento%20de%20conflitos%20mysql-libs.png)
Preciso criar um script de instalação do MariaDB usando o comando rpm no CentOS 6.4. Não posso usar o yum, pois será uma instalação offline, portanto não haverá acesso ao repositório.
O único pacote MySQL instalado é o mysql-libs, pois vários outros pacotes no CentOS dependem dele. Quando fiz uma instalação de teste do MariaDB com o yum, ele considerou corretamente o mysql-libs e o desinstalou no final, pois o MariaDB poderia lidar com as dependências depois de instalado:
[root@new-host-6 ~]# yum install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared
Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security, verify
Loading mirror speeds from cached hostfile
* base: mirrors.kernel.org
* extras: mirror.keystealth.org
* updates: mirror.umd.edu
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-client.x86_64 0:5.5.32-1 will be installed
---> Package MariaDB-common.x86_64 0:5.5.32-1 will be installed
---> Package MariaDB-compat.x86_64 0:5.5.32-1 will be obsoleting
---> Package MariaDB-devel.x86_64 0:5.5.32-1 will be installed
---> Package MariaDB-server.x86_64 0:5.5.32-1 will be installed
---> Package MariaDB-shared.x86_64 0:5.5.32-1 will be obsoleting
---> Package mysql-libs.x86_64 0:5.1.66-2.el6_3 will be obsoleted
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================================
Installing:
MariaDB-client x86_64 5.5.32-1 mariadb 10 M
MariaDB-common x86_64 5.5.32-1 mariadb 23 k
MariaDB-compat x86_64 5.5.32-1 mariadb 2.7 M
replacing mysql-libs.x86_64 5.1.66-2.el6_3
MariaDB-devel x86_64 5.5.32-1 mariadb 5.6 M
MariaDB-server x86_64 5.5.32-1 mariadb 34 M
MariaDB-shared x86_64 5.5.32-1 mariadb 1.1 M
replacing mysql-libs.x86_64 5.1.66-2.el6_3
Transaction Summary
====================================================================================================================================================================
Install 6 Package(s)
Total download size: 53 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): MariaDB-5.5.32-centos6-x86_64-client.rpm | 10 MB 00:06
(2/6): MariaDB-5.5.32-centos6-x86_64-common.rpm | 23 kB 00:00
(3/6): MariaDB-5.5.32-centos6-x86_64-compat.rpm | 2.7 MB 00:02
(4/6): MariaDB-5.5.32-centos6-x86_64-devel.rpm | 5.6 MB 00:06
(5/6): MariaDB-5.5.32-centos6-x86_64-server.rpm | 34 MB 00:23
(6/6): MariaDB-5.5.32-centos6-x86_64-shared.rpm | 1.1 MB 00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.3 MB/s | 53 MB 00:40
warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
Retrieving key from https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Importing GPG key 0x1BB943DB:
Userid: "Daniel Bartholomew (Monty Program signing key) <[email protected]>"
From : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : MariaDB-compat-5.5.32-1.x86_64 1/7
Installing : MariaDB-common-5.5.32-1.x86_64 2/7
Installing : MariaDB-server-5.5.32-1.x86_64 3/7
chown: cannot access `/var/lib/mysql': No such file or directory
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h new-host-6 password 'new-password'
Alternatively you can run:
'/usr/bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://kb.askmonty.org or the
MySQL manual for more instructions.
Please report any problems with the '/usr/bin/mysqlbug' script!
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Support MariaDB development by buying support/new features from
Monty Program Ab. You can contact us about this at [email protected].
Alternatively consider joining our community based development effort:
http://kb.askmonty.org/en/contributing-to-the-mariadb-project/
Installing : MariaDB-devel-5.5.32-1.x86_64 4/7
Installing : MariaDB-client-5.5.32-1.x86_64 5/7
Installing : MariaDB-shared-5.5.32-1.x86_64 6/7
Erasing : mysql-libs-5.1.66-2.el6_3.x86_64 7/7
Verifying : MariaDB-common-5.5.32-1.x86_64 1/7
Verifying : MariaDB-server-5.5.32-1.x86_64 2/7
Verifying : MariaDB-devel-5.5.32-1.x86_64 3/7
Verifying : MariaDB-client-5.5.32-1.x86_64 4/7
Verifying : MariaDB-compat-5.5.32-1.x86_64 5/7
Verifying : MariaDB-shared-5.5.32-1.x86_64 6/7
Verifying : mysql-libs-5.1.66-2.el6_3.x86_64 7/7
Installed:
MariaDB-client.x86_64 0:5.5.32-1 MariaDB-common.x86_64 0:5.5.32-1 MariaDB-compat.x86_64 0:5.5.32-1 MariaDB-devel.x86_64 0:5.5.32-1
MariaDB-server.x86_64 0:5.5.32-1 MariaDB-shared.x86_64 0:5.5.32-1
Replaced:
mysql-libs.x86_64 0:5.1.66-2.el6_3
Complete!
Minha pergunta é: qual é a maneira equivalente de instalar os pacotes MariaDB usando apenas o comando rpm em vez de yum?
Se eu fizer rpm -ivh MariaDB*.rpm, receberei uma tonelada de mensagens como as seguintes sobre conflitos com mysql-libs:
file /etc/my.cnf from install of MariaDB-common-5.5.32-1.x86_64 conflicts with file from package mysql-libs-5.1.66-2.el6_3.x86_64
file /usr/share/mysql/charsets/Index.xml from install of MariaDB-common-5.5.32-1.x86_64 conflicts with file from package mysql-libs-5.1.66-2.el6_3.x86_64
Usei então a opção --force para instalar os rpms do MariaDB e desinstalei o mysql-lib, não recebi nenhuma mensagem estranha, mas não tenho certeza se esse é o método mais limpo para lidar com os conflitos e fazer a instalação.
Alguém pode confirmar que instalar o MariaDB com os seguintes comandos rpm seria o mesmo que usar yum para instalar os pacotes e lidar com conflitos/remoção de mysql-libs:
rpm -ivh --force MariaDB*.rpm
rpm -e mysql-libs
Obrigado por qualquer contribuição!
Responder1
Você não. Você usa yum
para que ele lide com essa situação de forma limpa. Ele funciona perfeitamente offline usando pacotes RPM diretamente, desde quetodosas dependências necessárias estão disponíveis ou já instaladas.
Baixe os RPMs MariaDB apropriados para seu pendrive ou DVD-ROM.
yumdownloader MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared
Leve seu pendrive ou DVD-ROM para a máquina de destino e copie-os.
Instale-os:
yum --disablerepo=* -y install MariaDB-*.rpm
Responder2
Em vez de "rpm -ivh ..." você deveria ter feito "rpm -Uvh ...".
Exceto talvez pelo kernel, -Uvh deveriaSEMPREser usado.
As tags Obsoletes: não são executadas ao usar --install,-i.
Responder3
Eu uso o seguinte repositório (como /etc/yum.repos.d/mariadb.repo):
# MariaDB 5.5 CentOS repository list - created 2013-09-14 02:06 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Para aplicações é importante ter compatibilidade binária, o que é feito instalando o pacote MariaDB-compat disponível no mesmo repositório (por algum motivo, não o vejo na sua lista):
[root@backup ~]# rpm -qlp mysql-libs-5.1.69-1.el6_4.x86_64.rpm |grep so
/etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql/libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16.0.0
/usr/lib64/mysql/libmysqlclient_r.so.16
/usr/lib64/mysql/libmysqlclient_r.so.16.0.0
[root@backup ~]# rpm -qlp MariaDB-5.5.32-centos6-x86_64-compat.rpm
/usr/lib64/libmysqlclient.so.15
/usr/lib64/libmysqlclient.so.15.0.0
/usr/lib64/libmysqlclient.so.16
/usr/lib64/libmysqlclient.so.16.0.0
/usr/lib64/libmysqlclient_r.so.15
/usr/lib64/libmysqlclient_r.so.15.0.0
/usr/lib64/libmysqlclient_r.so.16
/usr/lib64/libmysqlclient_r.so.16.0.0
Portanto, você pode desinstalar o mysql-libs e depois instalar o pacote MariaDB-server, que instalará todos os requisitos e o pacote MariaDB-compat também, que torna o mysql-libs obsoleto, para que as dependências não sejam quebradas:
[root@backup ~]# rpm -qp --obsoletes MariaDB-5.5.32-centos6-x86_64-compat.rpm
mysql-libs < 5.3.5
[root@backup ~]#
Então, sem problemas depois disso, o rpm não reportará nenhuma incompatibilidade (fornece mysql-libs = 5.3.5):
[root@backup ~]# rpm -qlp --provides MariaDB-5.5.32-centos6-x86_64-compat.rpm
libmysqlclient.so.15()(64bit)
libmysqlclient.so.15(libmysqlclient_15)(64bit)
libmysqlclient.so.16()(64bit)
libmysqlclient.so.16(libmysqlclient_16)(64bit)
libmysqlclient_r.so.15()(64bit)
libmysqlclient_r.so.15(libmysqlclient_15)(64bit)
libmysqlclient_r.so.16()(64bit)
libmysqlclient_r.so.16(libmysqlclient_16)(64bit)
mysql-libs = 5.3.5
MariaDB-compat = 5.5.32-1
MariaDB-compat(x86-64) = 5.5.32-1
/usr/lib64/libmysqlclient.so.15
/usr/lib64/libmysqlclient.so.15.0.0
/usr/lib64/libmysqlclient.so.16
/usr/lib64/libmysqlclient.so.16.0.0
/usr/lib64/libmysqlclient_r.so.15
/usr/lib64/libmysqlclient_r.so.15.0.0
/usr/lib64/libmysqlclient_r.so.16
/usr/lib64/libmysqlclient_r.so.16.0.0
[root@backup ~]#
Resposta: sim, você pode simplesmente desinstalar o mysql-libs e instalar esses pacotes, mas baixados deste repositório.
(yumdownloader MariaDB-client.x86_64 MariaDB-common.x86_64 MariaDB-compat.x86_64 etc)