Ruby on rails 在安装tiny_tds gem时,Chef客户端运行给出“未能构建gem本机扩展”

Ruby on rails 在安装tiny_tds gem时,Chef客户端运行给出“未能构建gem本机扩展”,ruby-on-rails,ruby,rubygems,chef-infra,tiny-tds,Ruby On Rails,Ruby,Rubygems,Chef Infra,Tiny Tds,我的要求是使用tiny_tds连接到SQLServer数据库,作为运行在Ubuntu操作系统上的chef客户端的一部分。因此,作为这项任务的一部分,我编写了一本食谱,其中在metadata.rb文件中包含了以下行: gem 'tiny_tds' 应按照chef文档安装tiny_tds gem。但是,我得到一个错误,说“未能构建gem本机扩展”。虽然一些网站建议这个问题与FreeTDS有关,但解决方案还不足以解决这个问题 编辑:添加有关该问题的更多信息 我还尝试使用以下命令手动安装freetds

我的要求是使用tiny_tds连接到SQLServer数据库,作为运行在Ubuntu操作系统上的chef客户端的一部分。因此,作为这项任务的一部分,我编写了一本食谱,其中在metadata.rb文件中包含了以下行:

gem 'tiny_tds'
应按照chef文档安装tiny_tds gem。但是,我得到一个错误,说“未能构建gem本机扩展”。虽然一些网站建议这个问题与FreeTDS有关,但解决方案还不足以解决这个问题

编辑:添加有关该问题的更多信息

我还尝试使用以下命令手动安装freetds:

sudo apt-get install wget
sudo apt-get install build-essential
sudo apt-get install libc6-dev
sudo wget http://www.freetds.org/files/stable/freetds-1.00.21.tar.gz
tar -xzf freetds-1.00.21.tar.gz
cd freetds-1.00.21
sudo ./configure --prefix=/usr/local --with-tdsver=7.3
sudo make
sudo make install
然后当我运行命令时

gem install tiny_tds 
在终端上,它使用本机依赖项成功安装

但当我使用命令运行chef客户端时,问题仍然存在

sudo chef-client -o "recipe[tiny_tds_cookbook]"
堆栈跟踪:


您可能需要安装编译器或ruby开发头。我们不建议对需要C扩展的gem使用gem元数据依赖系统,因为您需要在Chef启动之前安装编译器,这通常是Chef自己会做的事情。对于这种情况,较旧的chef_gem资源通常更好,因为在安装gem之前,您可以使用类似于cookbook的build essential来安装编译器工具。

即使是chef_gem方法也会出现同样的错误。目前,我只使用一本烹饪书,在我的默认食谱中包含chef_gem调用,用于测试目的。您是否建议使用另一个RecipeFirst,它使用build essential来安装编译器工具。本例中的本机依赖项是“freetds”。你能提供一个实现这一点的代码示例吗?你必须自己编写代码,因为具体细节取决于你的gem为了编译它的扩展需要安装什么。
ERROR:  Error installing tiny_tds:
ERROR: Failed to build gem native extension.

current directory: /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/tiny_tds-2.1.1/ext/tiny_tds
/opt/chef/embedded/bin/ruby -r ./siteconf20180121-23372-1r1mxpl.rb extconf.rb
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for tdsdbopen() in -lsybdb... no
checking for dbanydatecrack() in -lsybdb... no
Failed! Do you have FreeTDS 0.95.80 or higher installed?
extconf.rb failed