每当我尝试构建DBD::Sybase
以连接到MSSQL时,我都会收到错误,
$ sudo cpanp install DBD::Sybase
Installing DBD::Sybase (1.15)
Running [/usr/bin/perl /usr/bin/cpanp-run-perl /home/ecarroll/.cpanplus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL INSTALLDIRS=site]...
Can't find any Sybase libraries in /etc/lib or /etc/lib64 at /home/ecarroll/.cpanplus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL line 155, <IN> line 44.
BEGIN failed--compilation aborted at /usr/bin/cpanp-run-perl line 11, <IN> line 44.
[ERROR] Could not run '/usr/bin/perl Makefile.PL': Can't find any Sybase libraries in /etc/lib or /etc/lib64 at /home/ecarroll/.cpanplus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL line 155, <IN> line 44.
BEGIN failed--compilation aborted at /usr/bin/cpanp-run-perl line 11, <IN> line 44.
-- cannot continue
[ERROR] Unable to create a new distribution object for 'DBD::Sybase' -- cannot continue
*** Install log written to:
/home/ecarroll/.cpanplus/install-logs/DBD-Sybase-1.15-1374605483.log
Error installing 'DBD::Sybase'
Problem installing one or more modules
我在其他Debian系统上也遇到了这个错误。
答案 0 :(得分:10)
有两种方法可以做到这一点,
第二个选项(b)总是可行的,但是你的系统可能有两个不同版本的freetds。
The first option can not be done without some hacking and the author will not fix it.他只是头脑冷静,想要修复内部结构以匹配他使用的操作系统,而不是让它接受其他配置。
内部DBD::Sybase
期望有一个目录和$libdir
(包含lib
或lib64
的子目录)。 Debian软件包DBD::Sybase
提供的目录freetds-dev
需要正确构建不; Debian软件包安装到/usr/include
,它没有lib
或lib64
子目录。您可以通过欺骗make
并重新创建该结构来解决这个问题,首先确保您已安装freetds-dev
,
sudo apt-get install freetds-dev
然后链接它以创建伪包。在我的64位机器上,它看起来像这样。
mkdir /tmp/freetds
ln -s /usr/lib/x86_64-linux-gnu/ /tmp/freetds/lib64
ln -s /usr/include /tmp/freetds/include/freetds
现在,它应该可以工作,您可以针对系统库构建DBD::Sybase
。
sudo SYBASE=/tmp/freetds cpanp install DBD::Sybase
中提琴。
答案 1 :(得分:4)
要为系统perl安装模块,您可以从Ubuntu存储库安装软件包。虽然这些可能已过时,但库依赖关系是经常解决的。在这种情况下,一个
$ sudo apt-get install libdbd-sybase-perl
应该这样做。
答案 2 :(得分:2)
我相信您必须创建include
子目录,否则第二个ln
将失败:
mkdir /tmp/freetds/include