我正在尝试为同名的 Perl Mod 安装 MySQL 客户端库,但是当我运行时
sudo rpm --install -v --allfiles MySQL-client-5.5.16-1.linux2.6.i386.rpm
查询 rpm 数据库显示已安装的软件包,但 lib 文件不存在。
rpm -qa | grep -i mysql
MySQL-client-5.5.16-1.linux2.6
ll /usr/lib/mysql
total 4.0K
4.0K drwxr-xr-x 3 root root 4.0K Oct 11 09:49 plugin/
我在 /usr/lib 中找不到这些文件
ls -ld /usr/lib/*mysql*
drwxr-xr-x 3 root root 4.0K Oct 11 09:49 /usr/lib/mysql
perlstation:~\ ->
这是 rpm -qil MySQL-client 的结果
rpm -qil MySQL-client
Name : MySQL-client Relocations: (not relocatable)
Version : 5.5.16 Vendor: Oracle and/or its affiliates
Release : 1.linux2.6 Build Date: Fri 09 Sep 2011 11:27:55 AM CDT
Install Date: Tue 11 Oct 2011 02:38:14 PM CDT Build Host: loki32
Group : Applications/Databases Source RPM: MySQL-5.5.16-1.linux2.6.src.rpm
Size : 53026574 License: Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Under GPL license as shown in the Description field.
Signature : DSA/SHA1, Wed 14 Sep 2011 03:13:49 AM CDT, Key ID 8c718d3b5072e1f5
Packager : MySQL Build Team <[email protected]>
URL : http://www.mysql.com/
Summary : MySQL - Client
Description :
This package contains the standard MySQL clients and administration tools.
For a description of MySQL see the base MySQL RPM or http://www.mysql.com/
/usr/bin/msql2mysql
/usr/bin/mysql
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqlaccess.conf
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_find_rows.1.gz
/usr/share/man/man1/mysql_waitpid.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz
perlstation:~\ ->
我在这里不知所措。
答案1
你期待看到什么/usr/lib/mysql
?该目录似乎只包含插件。 MySQL 客户端库是/usr/lib/libmysqlclient.so.*
.它应该在那里;可能不是来自MySQL-client
包,而是来自依赖的库包MySQL-client
。更一般地,所有动态库文件名都以 . 开头lib
和结尾.so
。
答案2
总是需要检查包依赖关系rpm
。您是否在安装 mysql-client 软件包的同一目录中下载了其他软件包。由于rpm
它本身没有提供依赖性解析,因此有必要使用 yum 等工具来简化 rpm 的安装。在这种情况下,我建议要么自行解决包依赖关系,要么最好在主机上配置 yum,让 yum 承担依赖关系解析的负担,并通过 rpm 安装它们。
在上述情况下,如果您确实看到文件未安装,而 rpm 声称文件存在于已安装的软件包中。重新验证它的一个简单方法是。
rpm -ql MySQL-client-5.5.16-1 | xargs ls -ld
如果您看到存在的所有文件,则 rpm 是正确的,您拥有客户端包中存在的所有文件。如果没有,那么就有问题了,可能是 mysql-client 软件包实际上已安装,但某些流氓用户?/process 已从安装位置删除了这些文件?。这可能是可能的。对于这一点,rpm 不保证,因为它从其rpmdb
.我建议erase
打包并重新安装 MySQL 客户端包。根据需要执行所有必要的依赖关系解析。
另外,这与 RPM 无关,但如果您打算从 perl 使用 mysql,则不一定必须依赖 DBI/DBD::MySQL perl 软件包,而是可以使用独立的 Tsucchi 的 Net::MySQL perl 软件包,它不需要绑定到 mysql 库,也不依赖于 mysql 的安装。只需从 github fork/clone 这个包,你就可以从 Perl 非交互地使用 mysql,如果你感兴趣的话,还有一个小脚本可以用作 mysql shell。分叉存储库位于https://github.com/mnikhil-git/p5-Net-MySQL