Не удается связать установку tiny_tds в Mac OS X 10.8 с Homebrew FreeTds

МОЙ ВОПРОС
Какие верные шаги я могу предпринять, чтобы все заработало на 100 %? Мне нужны были бы настоящие инструкции, а не однострочные ответы или расплывчатые концептуальные описания процесса.

Давайте докопаемся до сути. Похоже, что где-то есть конфликты, и я получил некачественную помощь от разработчика gem на GitHub в связи с моим опытом работы с Ruby / Rails / Bundler / Homebrew, так что это не полностью их вина: P Но мне нужно выяснить, как заставить это работать как можно скорее, так что здесь идет с моим текущим состоянием этой проблемы.


ОБНОВЛЕНИЕ: 25 февраля 2013 г.
Обновлен GCC/XCODE версии 4.6 (4H127) и загружена последняя версия ИНСТРУМЕНТОВ КОМАНДНОЙ СТРОКИ XCODE, и теперь iconv_open() отображается в средстве проверки extconf. Теперь я получаю эти ошибки:

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

    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

            /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
    checking for iconv_open() in iconv.h... yes
    checking for sybfront.h... yes
    checking for sybdb.h... yes
    checking for tdsdbopen() in -lsybdb... yes
    checking for ct_bind() in -lct... yes
    creating Makefile

    make
    xcrun cc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -DHAVE_ICONV_OPEN -DHAVE_SYBFRONT_H -DHAVE_SYBDB_H -I-I/usr/local/php5/include -I-I/usr/include -I-I/usr/local/include -I-I/opt/local/include -I-I/usr/local/MacGPG2/include -I-I/opt/sm/pkg/active/include -I/usr/local/php5/include -I/usr/include -I/usr/local/include -I/opt/local/include -I/usr/local/MacGPG2/include -I/opt/sm/pkg/active/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common  -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common    -c client.c
    xcrun: Error: could not stat active Xcode path '/Developer'. (No such file or directory)
    xcrun cc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -DHAVE_ICONV_OPEN -DHAVE_SYBFRONT_H -DHAVE_SYBDB_H -I-I/usr/local/php5/include -I-I/usr/include -I-I/usr/local/include -I-I/opt/local/include -I-I/usr/local/MacGPG2/include -I-I/opt/sm/pkg/active/include -I/usr/local/php5/include -I/usr/include -I/usr/local/include -I/opt/local/include -I/usr/local/MacGPG2/include -I/opt/sm/pkg/active/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common  -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common    -c result.c
    xcrun: Error: could not stat active Xcode path '/Developer'. (No such file or directory)
    xcrun cc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -DHAVE_ICONV_OPEN -DHAVE_SYBFRONT_H -DHAVE_SYBDB_H -I-I/usr/local/php5/include -I-I/usr/include -I-I/usr/local/include -I-I/opt/local/include -I-I/usr/local/MacGPG2/include -I-I/opt/sm/pkg/active/include -I/usr/local/php5/include -I/usr/include -I/usr/local/include -I/opt/local/include -I/usr/local/MacGPG2/include -I/opt/sm/pkg/active/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common  -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common    -c tiny_tds_ext.c
    xcrun: Error: could not stat active Xcode path '/Developer'. (No such file or directory)
    cc  -pipe -bundle -undefined dynamic_lookup -o tiny_tds.bundle client.o result.o tiny_tds_ext.o -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L/usr/local/heroku/lib -L/usr/local/php5/lib -L/usr/local/Cellar/ruby/1.9.3-p194/lib -L/usr/lib -L/usr/local/lib -L/opt/local/lib -L/usr/local/MacGPG2/lib -L/opt/sm/pkg/active/lib -L/Users/rountrjf/.rvm/lib -L/usr/local/Cellar/vertx/lib -L/usr/local/Cellar/vertx/mods/node.vert.x/lib -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L.       -lruby -lct -lsybdb  -lpthread -ldl -lobjc   
    i686-apple-darwin11-llvm-gcc-4.2: client.o: No such file or directory
    i686-apple-darwin11-llvm-gcc-4.2: result.o: No such file or directory
    i686-apple-darwin11-llvm-gcc-4.2: tiny_tds_ext.o: No such file or directory
    make: *** [tiny_tds.bundle] Error 1

Alright, since /Developer doesn't exist.
I used `sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer` thinking that would fix it.  Now I'm back to square one... iconv_open() not found when checked with `extconf.rb`

ОБНОВЛЕНИЕ 2: 25 февраля 2013 г.
ОК, поэтому я переустановил все, Ruby/Rails/и т. д. И воспользовался советом комментатора использовать ":path =>", и вот мой вывод сейчас, когда я запускаю rails s

/Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- tiny_tds (LoadError)
    from /Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require'
    from /Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-sqlserver-adapter-3.2.10/lib/active_record/connection_adapters/sqlserver_adapter.rb:31:in `sqlserver_connection'
    from /Users/rountrjf/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'

ЧТО Я ПРОБОВАЛА

1.) Начальные ПРОСТЫЕ инструкции по настройке, как и любые другие...

$ rails new test_app
$ cd test_app

Теперь добавьте эти строки в Gemfile

gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter'

Теперь продолжайте команды...

$ bundle install

Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.0.3) 
Using i18n (0.6.1) 
Using multi_json (1.6.1) 
Using activesupport (3.2.12) 
Using builder (3.0.4) 
Using activemodel (3.2.12) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.5) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.2.2) 
Using actionpack (3.2.12) 
Using mime-types (1.21) 
Using polyglot (0.3.3) 
Using treetop (1.4.12) 
Using mail (2.4.4) 
Using actionmailer (3.2.12) 
Using arel (3.0.2) 
Using tzinfo (0.3.35) 
Using activerecord (3.2.12) 
Using activerecord-sqlserver-adapter (3.2.10) 
Using activeresource (3.2.12) 
Using bundler (1.2.4) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.3) 
Using json (1.7.7) 
Using rdoc (3.12.1) 
Using thor (0.17.0) 
Using railties (3.2.12) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.2.1) 
Using rails (3.2.12) 
Using sass (3.2.5) 
Using sass-rails (3.2.6) 
Installing tiny_tds (0.5.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/Cellar/ruby/1.9.3-p194/bin/ruby extconf.rb 
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
-----
libiconv is missing.
-----
*** extconf.rb failed ***
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-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/Cellar/ruby/1.9.3-p194/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
    --with-iconvlib
    --without-iconvlib


Gem files will remain installed in /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/gems/tiny_tds-0.5.1 for inspection.
Results logged to /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/gems/tiny_tds-0.5.1/ext/tiny_tds/gem_make.out
An error occurred while installing tiny_tds (0.5.1), and Bundler cannot continue.
Make sure that `gem install tiny_tds -v '0.5.1'` succeeds before bundling.

ВЫВОД tsql -C

$ tsql -C
Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /usr/local/Cellar/freetds/0.91/etc
     MS db-lib source compatibility: no
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 7.1
                              iODBC: yes
                           unixodbc: no
              SSPI "trusted" logins: no
                           Kerberos: no

2.) ВООБРАЖАЕМЫЙ УСПЕХ / ФАКТИРУЙТЕ ЭТО, ПОКА НЕ СДЕЛАЕТЕ / БОЛЬШОЕ РАЗОЧАРОВАНИЕ / РАСШИРЕННЫЕ ИНСТРУКЦИИ ПО НАСТРОЙКЕ
Найдена эта запись в блоге... http://talltroym.blogspot.com/2012/04/installing-activerecord-sqlserver.html

Затем я нашел правильные пути к библиотеке libiconv и библиотеке freetds. Далее я запускал так:

$ sudo gem install tiny_tds -- --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib --with-freetds-lib=/usr/local/Cellar/freetds/0.91/lib --with-freetds-include=/usr/local/Cellar/freetds/0.91/include
Password:
Building native extensions.  This could take a while...
Successfully installed tiny_tds-0.5.1
1 gem installed
Installing ri documentation for tiny_tds-0.5.1...
Installing RDoc documentation for tiny_tds-0.5.1...

Снова попробовал bundle_install и был шокирован... он по-прежнему не устанавливается через gem 'tiny_tds' в Gemfile...

Так что я удаляю tiny_tds из Gemfile и все равно продолжаю запускать сервер... И, как и ожидалось...

$ rails s
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- tiny_tds (LoadError)
...

3.) МИНИ-ПОРТИЛЬ

$ sudo gem install mini_portile
$ sudo gem install rakecompiler
$ rake TINYTDS_FREETDS_VERSION="current"
Could not find gem 'tiny_tds (>= 0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

ДРУГИЕ СВЯЗАННЫЕ ВОПРОСЫ И РЕСУРСЫ


person Joshua F. Rountree    schedule 21.02.2013    source источник
comment
У меня была очень похожая проблема, и ссылка ниже решила ее   -  person Mark Stratmann    schedule 25.02.2013
comment
Вы хотели прикрепить ссылку?   -  person Joshua F. Rountree    schedule 25.02.2013
comment
Извините, понял, что это вам не поможет, вы уже сделали то, что в ссылке.   -  person Mark Stratmann    schedule 25.02.2013
comment
Что ж, я новичок в Ruby/Rails и, возможно, не делал что-то именно так, как предполагалось. Инструкции, которые я прошел, могли пренебрегать некоторыми деталями, которые могут пропустить новички?   -  person Joshua F. Rountree    schedule 25.02.2013
comment
Кроме того, вы могли бы подумать, что есть верный способ сделать это... например, удалить все и начать заново... но я не уверен, что это решит эту проблему... но если кто-то уже прошел через это - Я хотел бы услышать это.   -  person Joshua F. Rountree    schedule 25.02.2013
comment
Вы успешно установили gem с помощью gem install. Найдите полный путь к успешно установленному гему, а затем измените файл гема, чтобы заставить пакетную установку использовать эту копию. См. здесь stackoverflow.com/questions/4487948/   -  person Mark Stratmann    schedule 25.02.2013
comment
давайте продолжим это обсуждение в чате   -  person Joshua F. Rountree    schedule 25.02.2013


Ответы (6)


Это сработало для меня (2 октября 2014 г./OSX 10.9.5):

brew install freetds

и в рельсах:

gem 'tiny_tds'
bundle install
person andorov    schedule 02.10.2014
comment
Это нужно для macOS 10.13. Это сработало прекрасно. Спасибо! - person JHawkZZ; 06.02.2018
comment
Я могу убедиться, что это работает на macOS 10.14.1 и ruby ​​версии 2.5.1. - person Roshan; 29.11.2018

Сначала установите free_tds и необходимые зависимости.

Это сработало для меня, ваши пути могут быть другими

gem install tiny_tds -- --with-freetds-include=/usr/local/include
--with-freetds-lib=/usr/local/lib
--with-iconv-include=/usr/local/Cellar/libiconv/1.14/include
--with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
person Gui Weinmann    schedule 01.03.2013
comment
Конечно, вы также можете переустановить ruby ​​1.9.3 и указать iconv-dir, но мое решение немного быстрее. - person Gui Weinmann; 01.03.2013

Что ж, к сожалению, теперь у меня это работает, и я НЕ ПОНИМАЮ, как я это сделал, но я перечислю все, что я сделал до сих пор, в этом ответе, чтобы решить эту проблему.

В итоге bundle install со стандартным gem 'tiny_tds', '0.5.1' заработало нормально. Он работает под управлением Ruby версии 1.9.3-p194 через RVM.

Вот где золото, я уверен...
Я использовал rvm pkg install iconv и rvm reinstall 1.9.3 --with-iconv-dir=$rvm_path/usr

Как только это было завершено, я удалил все старые папки с драгоценными камнями... Я переключил путь конфигурации пакета, чтобы он соответствовал новому пути ruby...

Затем сделал пакетную установку и бум.

Он также использует iconv 1.13 вместо 1.14, не уверен, что это имеет значение.

Я надеюсь, что это поможет кому-нибудь... это определенно было огромным опытом для меня.

person Joshua F. Rountree    schedule 25.02.2013

Я решил это с помощью:

brew install freetds

а потом

bundle install
person Stipe    schedule 10.11.2015

Я мало что знаю о Руби. Просто немного побаловался. Вы всегда можете установить vertx напрямую, чем я думаю, у вас больше контроля над расположением каталога, и это упрощает обновление. Я написал руководство для операционной команды для производства (на самом деле работа еще не завершена). Это может помочь вам. Это может быть не так.

Я написал небольшое руководство по установке. Я планирую добавить в него некоторые настройки, касающиеся настройки стека TCP/IP и Vertx для масштабирования (временные настройки порта, ограничения файловых дескрипторов, нагрузочное тестирование, настройка буферов повторного использования и т. д.).

http://rick-hightower.blogspot.com/2013/11/installing-vertx-on-ubuntu-13.html

Установка Vertx в Ubuntu 13

Сведения о среде

Тип инстанса: EC2 hi1.4xlarge

  • ОС: Ubuntu 13.10 (64-битная) Java VM:

  • версия Java "1.7.0_25" (IcedTea 2.3.12) (сборка 23.7-b01)

  • vertx: 2.1M1 (построен 29 октября 2013 г., 11:11:22)

Установка программного обеспечения

Java 7 JDK:

 $ sudo apt-get install openjdk-7-jdk

Вертекс:

Скачать Vertx

$ wget http://dl.bintray.com/vertx/downloads/vert.x-2.1M1.tar.gz
$ tar -zxf vert.x-2.1M1.tar.gz 
$ ls
vert.x-2.1M1  vert.x-2.1M1.tar.gz

Перейдите в стандартную структуру Unix:

$ sudo mv vert.x-2.1M1 /usr/local/share/
$ ls /usr/local/share/
  ...  vert.x-2.1M1  xml

Создайте символическую ссылку на /usr/local/share/vertx, чтобы упростить обновление.

$ sudo ln -s /usr/local/share/vert.x-2.1M1/ /usr/local/share/vertx
$ ls /usr/local/share/vertx
api-docs  bin  client  conf  lib

Добавьте символическую ссылку vertx в каталог /usr/bin/.

$ sudo ln -s /usr/local/share/vertx/bin/vertx /usr/bin/vertx

Установите настоящий чертов редактор:

$ sudo apt-get install emacs

Создайте тестовый скрипт для проверки правильности установки vertx:

var vertx = require('vertx');
vertx.createHttpServer().requestHandler(function(r) {
r.response.end("test 1\n");}).listen(8080);

Теперь запустите vertx против тестового скрипта:

$ vertx run test.js &
[1] 11493
$ Succeeded in deploying verticle 

Теперь проверьте, что установка работает:

$ curl 127.0.0.1:8080
test 1

Если вы получаете «тест 1», это означает, что vertx установлен и может обслуживать вершины.

Позже я планирую добавить сценарии init.d для запуска vertx и, возможно, процесс, который просыпается и следит за тем, чтобы все работало каждую минуту или около того. Я также планирую подключить несколько инстансов vertx с обратным прокси-сервером NGINX, чтобы каждый блок мог обрабатывать около 1 000 000 запросов и иметь немного большую защиту от DOS. В любом случае... работа в процессе...

person RickHigh    schedule 13.11.2013

Что сработало для меня, так это варианты создания драгоценных камней mr.ruh.roh выше, воспроизведенные здесь:

gem install tiny_tds -- --with-freetds-include=/usr/local/include   
    --with-freetds-lib=/usr/local/lib
    --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include
    --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib

в одну строку. Эта установка драгоценного камня устанавливает драгоценный камень, но пакет по-прежнему не работает, даже несмотря на то, что драгоценный камень был собран и установлен. Однако добавление этих опций для упаковщика сработало.

bundle config build.tiny_tds -- --with-freetds-include=/usr/local/include 
  --with-freetds-lib=/usr/local/lib 
  --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include 
  --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib

Опять же, в одну строку. С этим набором конфигураций сборщика bundle install работало.

Обратите внимание, что я уже запускал:

brew install freetds
brew install libiconv

Это сработало для меня 20 февраля 2015 г. в OS X 10.9.5 с установленным Xcode 6.1.1.

person nachbar    schedule 21.02.2015