Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用Ubuntu,如何从CPAN安装DBD::Sybase?_Sql Server_Perl_Sybase_Freetds_Dbd - Fatal编程技术网

Sql server 使用Ubuntu,如何从CPAN安装DBD::Sybase?

Sql server 使用Ubuntu,如何从CPAN安装DBD::Sybase?,sql-server,perl,sybase,freetds,dbd,Sql Server,Perl,Sybase,Freetds,Dbd,每当我试图构建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 a

每当我试图构建
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
$sudo cpanp安装DBD::Sybase
安装DBD::Sybase(1.15)
正在运行[/usr/bin/perl/usr/bin/cpanp run perl/home/ecarroll/.cpanpus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL INSTALLDIRS=site]。。。
在/home/ecarroll/.cpanplus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL第155行和第44行的/etc/lib或/etc/lib64中找不到任何Sybase库。
BEGIN失败——编译在/usr/bin/cpanp运行perl第11行第44行时中止。
[错误]无法运行“/usr/bin/perl Makefile.PL”:在/home/ecarroll/.cpanplus/5.14.2/build/DBD-Sybase-1.15/Makefile.PL第155行和第44行的/etc/lib64中找不到任何Sybase库。
BEGIN失败——编译在/usr/bin/cpanp运行perl第11行第44行时中止。
--无法继续
[错误]无法为“DBD::Sybase”创建新的分发对象--无法继续
***安装日志写入到:
/home/ecarroll/.cpanplus/install logs/DBD-Sybase-1.15-1374605483.log
安装“DBD::Sybase”时出错
安装一个或多个模块时出现问题

我在其他Debian系统上也遇到了这个错误。

要为系统perl安装模块,可以从Ubuntu存储库安装软件包。虽然这些可能已经过时,但库依赖关系是自动解决的。在这种情况下

$ sudo apt-get install libdbd-sybase-perl

应该做到这一点。

有两种方法可以做到这一点

  • (a) 使用发行版提供的freetds
  • 或者,(b)在上游安装香草freetds,并根据其建造
第二个选项(b)始终是可能的,但是您的系统可能有两个不同版本的freetds

他只是头脑简单,想要修复内部结构以匹配他使用的操作系统,而不是让它接受其他配置

内部
DBD::Sybase
希望有一个目录和
$libdir
(一个包含
lib
lib64
的子目录)。正确构建所需的目录
DBD::Sybase
不是由Debian包
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

Viola.

我认为您必须使
包含
子目录,否则第二个
ln
将失败:

mkdir /tmp/freetds/include

这并不是说你的想法行不通,而是有些perl用户不想要很多旧的和过时的发行版提供的perl模块,这样他们就可以绕过一个他们需要的模块了。@EvanCarroll在你的答案中的链接之后,我理解了你的实际问题。对错误报告的反应真是糟糕透顶。我将在这里留下我的答案,因为它显示了诉诸发行版软件包的“简单”方式,尽管这是非常次优的。谢谢,我也感谢你称之为回答错误报告的糟糕方式(这就是它)。当一个问题困扰你5年之久,每次你试图提交相同的bug报告,却发现它已经在被拒绝的垃圾箱中,这是很悲哀的。哦,好吧,在StackOverflow上自我回答这些问题将使我下次在Google上的工作更轻松。在OSX上,你需要修复一个愚蠢的错误。编辑Makefile.pl并注释掉
@libdir=('dll')
/win/
匹配“darwin”:(