我试图在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?
你的MySQL安装可能来自不同的来源。 它可能是一个与分发或Sun / Oracle rpm相同的rpm,也可能是从源代码构build的。
rpm -q --whatprovides $(which mysql)
应该告诉你包的名字
MySQL-client-...
mysql-5.0...
mysql-community-server-client
mysql-5.1...
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
如果您的mysql安装来自Sun / Oracle,请进入MySQL社区服务器下载页面 ,在通用(GA)版本中select具有mysql 5.0版本和32位体系结构的版本,selectMySQL-shared-community软件包,下载并安装它与rpm -i
。 该软件包提供了/usr/lib/libmysqlclient.so.15
库。
在CentOS5中,libmysqlclient属于mysql包。
yum install mysql.i386
应该做的伎俩。
在CentOS6中,它被移到了一个单独的mysql-libs包中。
安装库之后,检查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。 当软件运行时,操作系统会自动加载相应的库。