3

RHEL5のRuby1.8.7からMSSQLServerに接続しようとしています。FreeTDStiny_tdsRubyGemを使用しています。

OSXで問題なく動作しました。

LinuxにFreeTDSをインストールし、コマンドラインからSQLServerに問題なく接続できることを確認しました。そしてgem install tiny_tdsうまくいきました。

ただし、LinuxにデプロイしてRailsコンソールを開こうとすると、次のエラーが発生します。

$ script/console production
Loading production environment (Rails 2.3.5)
libsybdb.so.5: cannot open shared object file: No such file or directory - /opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/tiny_tds-0.2.1/lib/tiny_tds/tiny_tds.so
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/tiny_tds-0.2.1/lib/tiny_tds/tiny_tds.so
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/opt/deployed_rails_apps/employeedata/releases/20101025214030/vendor/rails/activesupport/lib/active_support/dependencies.rb:158:in `require'
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/tiny_tds-0.2.1/lib/tiny_tds.rb:7
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

etc...

見つからないと表示されているこのファイルが実際にファイルシステムに存在することを確認しました...

/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems \
    /tiny_tds-0.2.1/lib/tiny_tds/tiny_tds.so

これを機能させる方法はありますか?

4

1 に答える 1

2

ソースまたはディストリビューションから FreeTDS をどのようにインストールしましたか? 多くのディストリビューション ベースのインストールでは、gem が必要なライブラリを見つけるために使用する必要なヘッダーと開発ファイルがインストールされないことがわかりました。ディストリビューションを使用している場合は、freetds-dev または同様のものを探して、それもインストールします。

ディストリビューション インストールでは、ソース インストールと同じディレクトリにファイルがインストールされていない可能性もあります。私は別のパッケージで数回それに遭遇しました。Tiny TDS gem には、FreeTDS ファイルを非表示にする場所を定義できる構成オプションがいくつかある場合があります。

tiny_tds の extconf.rb ファイルは、次のファイルを探しています。

FREETDS_LIBRARIES = ['sybdb']
FREETDS_HEADERS = ['sqlfront.h', 'sybdb.h', 'syberror.h']

ホストでlocateまたはfindを実行して、それらのファイルを見つけることができるかどうかを確認してください。extconf.rb によると、ライブラリは/libまたはに基づいている必要/lib/freetdsがあり、ヘッダーは/includeまたはにある必要があります/include/freetds

于 2010-10-26T01:55:41.190 に答える