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

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

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

我可以在主机上安装 32 位 MySQL 客户端库吗?最好以官方方式(即通过存储库)。如果不行,那用黑客方式怎么样?

此外,这是一个提出此类问题的适当场所吗?

编辑:这是一篇文章这证实了你不能在一个进程内混合和匹配位数。但其方法不适用于 CentOS。

Wikipedia 指出,CentOS 的衍生版本 RHEL 能够拥有完整的 32 位用户空间和 64 位用户空间... 系统上已经有一些 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

答案1

如何安装 32 位 libmysqlclient.so?

1.安装

您的 MySQL 安装可能来自不同的来源。它可能是发行版附带的 rpm 或 Sun/Oracle rpm,也可能是从源代码构建的。

 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>获取扩展信息并验证该Vendor:行是否证实了假设。

以下是典型的供应商行:

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 社区服务器下载页面,在 General Availability (GA) 版本中选择具有 mysql 5.0 版本和 32 位架构的版本,选择 MySQL-shared-community 包,使用 下载并安装rpm -i。此包提供了所需的/usr/lib/libmysqlclient.so.15库。

1.2 CentOS 上的 mysql

在CentOS5中,libmysqlclient属于mysql包。

yum install mysql.i386

应该可以解决问题。

在 CentOS6 中它被移至单独的 mysql-libs 包。

2. 测试

安装库后,检查动态库依赖关系是否正确解析:

ldd <your_binary> | grep libmysqlclient

应该返回类似

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

如果您想知道哪个库提供了特定 64 位库的 32 位版本,您可以使用rpm -q --whatprovides /path/to/your/lib64/library来确定包的名称。然后将名称中的 x86_64 替换为 i686 以获取 32 位版本的名称。使用yum search来验证您订阅的存储库是否提供了该包。

答案2

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

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

相关内容