在64位CentOS上安装32位MySQL客户端库

我试图在64位的CentOS 5.3(基于RedHat 4.1.2)主机上运行一个编译的32位二进制文​​件。 二进制文件抱怨无法findlibmysqlclient.so.15。 这样的文件存在于服务器上,但它是64位,因此不好。

我可以在主机上安装32位MySQL客户端库吗? 最好以官方的方式(即通过仓库)。 如果没有,那么一个骇人的方式呢?

另外,这是一个这样的问题的适当场所?

编辑:这是一篇文章 ,确认你不能在一个过程中混合和匹配位数。 但其配方不适用于CentOS。

Wikipedia指出,CentOS派生自的RHEL能够在64位上运行一个完整的32位用户空间…系统上已经有一些32位的库 – libc等等。 只是不是MySQL。

我可以运行其他不连接到libmysqlclient的32位二进制文​​件。

有点相关。

编辑: yum search mysql说如下:

 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 

我如何安装32位libmysqlclient.so?

1.安装

你的MySQL安装可能来自不同的来源。 它可能是一个与分发或Sun / Oracle rpm相同的rpm,也可能是从源代码构build的。

  rpm -q --whatprovides $(which mysql) 

应该告诉你包的名字

  1. MySQL-client-...
  2. mysql-5.0...
  3. mysql-community-server-client
  4. mysql-5.1...
  5. no package provides /usr/bin/mysql

在CentOS上,前两个选项是最有可能的。 MySQL-client-5.0是Sun / Oracle RPM, mysql-5.0可能来自发行版。 使用rpm -q --info <package_name>获取扩展信息,并validationVendor:行确认了这个假设。

这是一个典型的供应商行:

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

1.1来自Sun / Oracle RPM的MySQL

如果您的mysql安装来自Sun / Oracle,请进入MySQL社区服务器下载页面 ,在通用(GA)版本中select具有mysql 5.0版本和32位体系结构的版本,selectMySQL-shared-community软件包,下载并安装它与rpm -i 。 该软件包提供了/usr/lib/libmysqlclient.so.15库。

从CentOS 1.2 MySQL

在CentOS5中,libmysqlclient属于mysql包。

 yum install mysql.i386 

应该做的伎俩。

在CentOS6中,它被移到了一个单独的mysql-libs包中。

2.testing

安装库之后,检查dynamic库依赖关系是否正确parsing:

 ldd <your_binary> | grep libmysqlclient 

应该返回类似的东西

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

如果您想知道什么提供了特定64位库的32位版本,则可以使用rpm -q --whatprovides /path/to/your/lib64/library来确定软件包的名称。 然后用名称中的i686replacex86_64以获取32位对应的名称。 使用yum search来validation包是否由您订阅的存储库提供。

我可以在主机上安装32位MySQL客户端库吗?

是。 Redhat将32位库安装在/ usr / lib中,64位库转到/ usr / lib64。 当软件运行时,操作系统会自动加载相应的库。