2

DBD::SybaseMSSQL に接続するためにビルドしようとすると、エラーが発生します。

$ 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 システムでもこのエラーが発生しました。

4

3 に答える 3

10

それには2つの方法があります。

  • (a) ディストリビューションが提供するフリート
  • または、(b) バニラの freetds をアップストリームにインストールし、それに対してビルドします。

2 番目のオプション (b) は常に可能ですが、システムに 2 つの異なるバージョンの freetds が存在する可能性があります。

最初のオプションはハッキングなしでは実行できず、作成者は修正しません。彼は単に頭が固く、他の構成を受け入れさせるのではなく、使用する OS に合わせて内部構造を修正したいと考えています。

内部的には、ディレクトリDBD::Sybaseと a $libdir(libまたはを含むサブディレクトリlib64) が存在することを想定しています。DBD::Sybase適切に構築するために必要なディレクトリは、Debian パッケージでは提供されませんfreetds-dev。またはサブディレクトリ/usr/includeを持たないDebian パッケージがインストールされます。その構造をだまして再作成することでこれを回避できます。最初にインストール済みであることを確認してください。liblib64makefreetds-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

ビオラ。

于 2013-07-23T19:35:18.763 に答える
4

システム perl のモジュールをインストールするには、Ubuntu リポジトリからパッケージをインストールできます。これらは古くなっている可能性がありますが、ライブラリの依存関係は自動的に解決されます。この場合、

$ sudo apt-get install libdbd-sybase-perl

トリックを行う必要があります。

于 2013-07-23T19:19:17.090 に答える
2

サブディレクトリを作成する必要があると思いますinclude。そうしないと、2番目のディレクトリlnが失敗します。

mkdir /tmp/freetds/include
于 2014-07-09T15:03:32.267 に答える