3

我正在尝试从 RHEL 5 上的 Ruby 1.8.7 连接到 MS SQL Server。我正在使用FreeTDStiny_tds RubyGem。

我让它在 OS X 上运行良好。

在 Linux 上我安装了 FreeTDS 并确认它可以从命令行连接到 SQL Server 没有问题。一切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']

在您的主机上进行定位或查找以查看是否可以找到这些文件。根据 extconf.rb 库应该基于/libor/lib/freetds并且标头应该在/includeor /include/freetds

于 2010-10-26T01:55:41.190 回答