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

Eva*_*oll 2 sql-server perl sybase dbd freetds

每当我尝试构建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
Run Code Online (Sandbox Code Playgroud)

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

Eva*_*oll 10

有两种方法可以做到

  • (a)与发行版提供的freetds
  • 或者,(b)在上游安装香草freetds并对其进行建设.

第二个选项(b)总是可行的,但是你的系统可能有两个不同版本的freetds.

如果没有一些黑客攻击,第一个选项就无法完成,作者也无法修复它.他只是头脑冷静,想要修复内部结构以匹配他使用的操作系统,而不是让它接受其他配置.

在内部DBD::Sybase期望有一个目录,和一个$libdir(带lib或的子目录lib64).Debian软件包提供DBD::Sybase正确构建的目录; Debian软件包安装到没有或子目录.您可以通过愚弄和重新创建该结构来解决这个问题,首先确保已安装,freetds-dev/usr/includeliblib64makefreetds-dev

sudo apt-get install freetds-dev
Run Code Online (Sandbox Code Playgroud)

然后链接它以创建一个伪包.在我的64位机器上,它看起来像这样.

mkdir /tmp/freetds
ln -s /usr/lib/x86_64-linux-gnu/ /tmp/freetds/lib64
ln -s /usr/include /tmp/freetds/include/freetds
Run Code Online (Sandbox Code Playgroud)

现在,它应该工作,您可以构建DBD::Sybase针对系统库.

sudo SYBASE=/tmp/freetds cpanp install DBD::Sybase
Run Code Online (Sandbox Code Playgroud)

中提琴.

  • 在OS X上,你需要修复一个愚蠢的bug.编辑Makefile.pl并注释掉`@libdir =('dll');````/ win /`匹配"darwin":( (2认同)

amo*_*mon 5

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

$ sudo apt-get install libdbd-sybase-perl
Run Code Online (Sandbox Code Playgroud)

应该可以解决问题。