Rails 4: ошибка при установке gem tiny_tds?

Я разработал веб-проект rails с Ruby v2 и Rails v4. Он отлично работал в моей нынешней системе, и когда я пытался запустить этот проект на другом компьютере с Linux (Ubuntu 12.4), я получаю ошибку Tidy_tds.

Эта ошибка отображается во время bundle install,

Подробности ошибки ниже

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.                                                                                                                                

    /home/action/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb                                                                                                                                       
checking for iconv_open() in iconv.h... yes                                                                                                                                                       
checking for sybfront.h... no                                                                                                                                                                     
-----                                                                                                                                                                                             
freetds is missing.    
Could not create Makefile due to some reason, probably lack of necessary                                                                                                                          
libraries and/or headers.  Check the mkmf.log file for more details.  You may                                                                                                                     
need configuration options.                                                                                                                                                                       

Provided configuration options:                                                                                                                                                                   
        --with-opt-dir                                                                                                                                                                            
        --without-opt-dir                                                                                                                                                                         
        --with-opt-include
--without-opt-lib=${opt-dir}/lib                                                                                                                                                          
        --with-make-prog                                                                                                                                                                          
        --without-make-prog                                                                                                                                                                       
        --srcdir=.                                                                                                                                                                                
        --curdir                                                                                                                                                                                  
        --ruby=/home/action/.rvm/rubies/ruby-2.1.1/bin/ruby                                                                                                                                       
        --enable-lookup                                                                                                                                                                           
        --disable-lookup  
--with-iconv-dir                                                                                                                                                                          
        --without-iconv-dir                                                                                                                                                                       
        --with-iconv-include                                                                                                                                                                      
        --without-iconv-include=${iconv-dir}/include                                                                                                                                              
        --with-iconv-lib       
--without-iconv-lib=${iconv-dir}/lib                                                                                                                                                      
        --with-freetds-dir                                                                                                                                                                        
        --without-freetds-dir                                                                                                                                                                     
        --with-freetds-include                                                                                                                                                                    
        --without-freetds-include=${freetds-dir}/include   
--with-freetds-lib                                                                                                                                                                        
        --without-freetds-lib=${freetds-dir}/lib                                                                                                                                                  

extconf failed, exit code 1      
Gem files will remain installed in /home/action/.rvm/gems/ruby-2.1.1/gems/tiny_tds-0.6.1 for inspection.                                                                                          
Results logged to /home/action/.rvm/gems/ruby-2.1.1/extensions/x86_64-linux/2.1.0/tiny_tds-0.6.1/gem_make.out                                                                                     
An error occurred while installing tiny_tds (0.6.1), and Bundler cannot continue.                                                                                                                 
Make sure that `gem install tiny_tds -v '0.6.1'` succeeds before bundling. 

Я также попытался установить tiny_tds отдельно, но все же я получаю ту же проблему

gem install tiny_tds -v '0.6.1'

Мой драгоценный файл,

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.2'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
gem 'tiny_tds' 
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

gem 'jquery-ui-rails' # jquery ui

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use sqlserver as the database for Active Record
gem 'activerecord-sqlserver-adapter', :git => 'https://github.com/nextgearcapital/activerecord-sqlserver-adapter.git'
gem "therubyracer"
gem "less-rails" 
gem "twitter-bootstrap-rails"
gem 'bootstrap-datepicker-rails'
gem 'will_paginate'
gem 'sqlite3'
gem 'formtastic'

Почему эта ошибка появляется и как решить эту проблему.

Любая помощь приветствуется

2 ответа

Решение

Похоже, у вас не установлены freetds на этой машине:

sudo apt-get install freetds-dev

Если вы увидите детали пакета freetds-dev, то увидите, что в нем отсутствует файл sybfront.h

Там нет драгоценного камня, который я знаю для freetds и строит tiny_tds гем требует его для компиляции. Однако это должно быть возможно для вас, чтобы построить свою собственную версию драгоценного камня, используя MiniPortile,

Вместо того, чтобы использовать нормальный gem install механизм вам нужно клонировать tiny_tds с GitHub, а затем создайте собственный драгоценный камень для вашей среды. Этот процесс будет включать в себя загрузку определенной версии freetds который используется для компиляции драгоценного камня против.

Это должно решить проблему невозможности установки freetds-dev пакет, но имеет тот недостаток, что если tiny_tds Gem обновляется в будущем, вам нужно будет повторять этот процесс каждый раз - вы не можете просто воспользоваться bundle update,

Шаги, которые необходимо выполнить, подробно описаны здесь.

Для MacOS вам нужна дополнительная библиотека.

brew install freetds

Это сработало для меня в Ubuntu 17.04

устанавливать wget скачивать пакеты с удаленного URL

$ sudo apt-get install wget 

Установить зависимости

$ sudo apt-get install build-essential
$ sudo apt-get install libc6-dev

Скачать удаленный файл

$ wget ftp://ftp.freetds.org/pub/freetds/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 -v '2.0.0'

Если все еще, вы не можете установить драгоценный камень tiny_tds тогда попробуйте использовать sudo
$ sudo gem install tiny_tds -v '2.0.0'

Выход

Building native extensions.  This could take a while...
Successfully installed tiny_tds-2.0.0
Parsing documentation for tiny_tds-2.0.0
Installing ri documentation for tiny_tds-2.0.0
Done installing documentation for tiny_tds after 1 seconds
1 gem installed
Другие вопросы по тегам