Instala a biblioteca cliente MySQL de 32 bits em um CentOS de 64 bits

4

Estou tentando executar um binário compilado de 32 bits em um host CentOS 5.3 de 64 bits (baseado no RedHat 4.1.2). O binário reclama da incapacidade de encontrar o libmysqlclient.so.15. Esse arquivo existe no servidor, mas é de 64 bits e, portanto, não é bom.

Posso instalar as bibliotecas cliente MySQL de 32 bits no host? De preferência do modo oficial (ou seja, através de um repositório). Se não, que tal uma maneira hackea?

Além disso, este é um local apropriado para tal pergunta?

EDIT: aqui está um artigo que confirma que você não pode misturar e combinar bitness dentro um processo. Mas a receita não é aplicável ao CentOS.

A Wikipédia afirma que o RHEL, do qual o CentOS deriva, é capaz de ter uma área de uso completa de 32 bits rodando ao longo de 64 bits ... Já existem algumas bibliotecas de 32 bits no sistema - libc e outras. Apenas não MySQL.

Eu posso executar outros binários de 32 bits que não estão vinculados ao libmysqlclient.

Um pouco relacionado.

EDIT: yum search mysql diz o seguinte:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.symnds.com
 * extras: mirror.symnds.com
 * updates: mirror.wiredtree.com
addons                                                   | 1.9 kB     00:00
base                                                     | 1.1 kB     00:00
extras                                                   | 1.9 kB     00:00
updates                                                  | 1.9 kB     00:00
Excluding Packages in global exclude list
Finished
================================ Matched: mysql ================================
mod_auth_mysql.x86_64 : Basic authentication for the Apache web server using a
                      : MySQL database.
qt-MySQL.x86_64 : MySQL drivers for Qt's SQL classes.
MySQL-bench.x86_64 : MySQL - Benchmarks and test system
MySQL-client.x86_64 : MySQL - Client
MySQL-devel.x86_64 : MySQL - Development header files and libraries
MySQL-python.x86_64 : An interface to MySQL
MySQL-server.x86_64 : MySQL: a very fast and reliable SQL database server
MySQL-shared.x86_64 : MySQL - Shared libraries
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
bytefx-data-mysql.x86_64 : MySQL database connectivity for Mono
freeradius-mysql.x86_64 : MySQL bindings for freeradius
freeradius2-mysql.x86_64 : MySQL support for freeradius
libdbi-dbd-mysql.x86_64 : MySQL plugin for libdbi
pdns-backend-mysql.x86_64 : MySQL backend for pdns
pure-ftpd.x86_64 : Lightweight, fast and secure FTP server
qt4-mysql.x86_64 : MySQL drivers for Qt's SQL classes
rsyslog.x86_64 : Enhanced system logging and kernel message trapping daemon
rsyslog-mysql.x86_64 : MySQL support for rsyslog
unixODBC.i386 : A complete ODBC driver manager for Linux
unixODBC.x86_64 : A complete ODBC driver manager for Linux
unixODBC64.x86_64 : A complete ODBC driver manager for Linux
    
por Seva Alekseyev 11.05.2012 / 18:58

2 respostas

1

How do I install 32-bit libmysqlclient.so?

1. Instalação

Sua instalação do MySQL pode ter vindo de diferentes fontes. Pode ser um rpm fornecido com a distribuição ou um rpm da Sun / Oracle ou pode ter sido criado a partir de fontes.

 rpm -q --whatprovides $(which mysql)

deve informar o nome do pacote como

  1. MySQL-client-...
  2. mysql-5.0...
  3. mysql-community-server-client
  4. mysql-5.1...
  5. %código%.

No CentOS, as duas primeiras opções são mais prováveis. no package provides /usr/bin/mysql é um Sun / Oracle RPM e MySQL-client-5.0 poderia ter vindo da distribuição. Use mysql-5.0 para obter informações estendidas e verifique se a linha rpm -q --info <package_name> confirma a hipótese.

Aqui está uma típica linha de fornecedores:

Name        : MySQL-shared-community       Relocations: (not relocatable)
Version     : 5.0.96                       Vendor: Oracle and/or its affiliates

1.1 MySQL da Sun / Oracle RPMs

Se a sua instalação do mysql vier da Sun / Oracle, vá para a página de download do servidor da comunidade MySQL , selecione entre Generally Available (GA), libera aquele que tem a versão do mysql 5.0 e arquitetura de 32 bits, escolha o pacote MySQL-shared-community, faça o download e instale-o com Vendor: . Este pacote fornece exatamente a biblioteca rpm -i .

1.2 mysql do CentOS

No CentOS5, libmysqlclient pertence ao pacote mysql.

yum install mysql.i386

deve fazer o truque.

No CentOS6, ele foi movido para um pacote mysql-libs separado.

2. Testando

Depois de instalar a biblioteca, verifique se as dependências da biblioteca dinâmica foram resolvidas corretamente:

ldd <your_binary> | grep libmysqlclient

deve retornar algo como

libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15

Se você quiser saber o que fornece uma versão de 32 bits de uma biblioteca de 64 bits específica, use /usr/lib/libmysqlclient.so.15 para determinar o nome do pacote. Em seguida, substitua x86_64 por i686 no nome para obter o nome da contraparte de 32 bits. Use rpm -q --whatprovides /path/to/your/lib64/library para verificar se o pacote é fornecido pelos repositórios nos quais você se inscreveu.

    
por 28.09.2012 / 18:02
0

Can I install the 32-bit MySQL client libraries on the host?

Sim. O Redhat instala as bibliotecas de 32 bits em / usr / lib e as bibliotecas de 64 bits vão para / usr / lib64. O sistema operacional carregará automaticamente a biblioteca apropriada quando o software for executado.

    
por 11.05.2012 / 20:48