【发布时间】:2015-07-09 02:09:46
【问题描述】:
首先,让我感谢您的时间和知识分享,我对 perl 模块有点无知
我有一个 64 位 ubuntu Server 12.04,带有 Perl 版本 14、subversion 2 (v5.14.2),用于 x86_64-linux-gnu-thread-multi 和 CPAN 探索和模块安装 (v2.10)。
我正在尝试使用 perl 脚本访问 Microsoft SQL Server,但我在 DBD::Sybase 模块上遇到了困难
当我尝试安装 DBD::Sybase CPAN 时告诉我它已经安装:
cpan[1]> install DBD::Sybase
Reading '/root/.cpan/Metadata'
Database was generated on Wed, 29 Apr 2015 14:53:21 GMT
DBD::Sybase is up to date (1.15).
我还在我的文件系统上找到了多个 Sybase.pm 文件,其中一些位于 Perl 路径下
root@server:# find /* -name Sybase.pm
/home/usriten/download/DBD-Sybase-1.15/Sybase.pm
/root/.cpan/build/DBD-Sybase-1.15-TtUI0T/Sybase.pm
/root/.cpan/build/DBD-Sybase-1.15-kNqdf7/Sybase.pm
/root/.cpan/build/DBD-Sybase-1.15-rZgcTa/Sybase.pm
/usr/local/lib/perl/5.14.2/Sybase.pm
/usr/local/lib/perl/5.14.2/DBD/Sybase.pm
/usr/local/lib/perl/5.14.2/DBI/Sybase.pm
但是当我尝试运行我的脚本时,它会在调用 'if ($self->{handle} = DBI->connect('
# ./check_mssql_health --hostname <MSSQL_Server_IP> --username <SQL_User> --password <Pass> --mode connection-time
mode connection-time
CRITICAL - cannot connect to <MSSQL_Server_IP>. install_driver(Sybase) failed: Can't locate loadable object for module DBD::Sybase in @INC (@INC contains: . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl) at (eval 10) line 3
Compilation failed in require at (eval 10) line 3.
Perhaps a module that DBD::Sybase requires hasn't been fully installed
at ./check_mssql_health line 3192
我已经花了很多时间搜索帖子,但我没有找到解决方案,或者至少没有找到我可以理解和实施的解决方案。
最好的问候,塞巴斯蒂昂
【问题讨论】:
-
“无法定位模块 DBD::Sybase 的可加载对象”与无法定位 DBD::Sybase 不同。它正在寻找可能尚未安装在您的计算机上的可加载库。 .pm 文件告诉你“包装器”代码在那里,但它没有告诉你本地代码在那里被加载以执行 c 级操作。
-
你真的有路径
.../DBI/Sybase.pm[原文如此]?我不了解 Sybase 本身,但驱动程序安装在DBI/下而不是DBD/下是不寻常的,也许有人手动破坏了您的 DBD-Sybase 安装。 -
在绝望中,我将 Sybase.pm 复制到 DBD/,我可以删除该 .pm 但它没有任何区别(我已经尝试过)