Не удалось установить `gem install tiny_tds` OS X Mavericks

Ошибка

$ sudo gem установить tiny_tds

Создание нативных расширений. Это может занять некоторое время...

ОШИБКА: Ошибка установки tiny_tds:

ОШИБКА: не удалось создать собственное расширение gem.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

проверка iconv_open() в iconv.h... нет

проверка iconv_open() в -liconv... да

проверка sybfront.h... да

проверка sybdb.h... да

проверка tdsdbopen() в -lsybdb... нет


Домашняя пивоварня

Вышеупомянутая ошибка возникает даже после

$ варить установить freetds


Ручная установка

$ tar zxf freetds-stable.tgz

$ cd freetds-0.91

$ ./настроить

$ сделать

$ sudo сделать установить


Кажется, в /usr/local/lib/ отсутствует следующий файл:

  • libsybdb.so

Вместо этого у меня есть следующие файлы:

  • libsybdb.a
  • libsybdb.dylib
  • libsybdb.la

Исследование


person abc123    schedule 24.06.2014    source источник


Ответы (2)


Я решил эту проблему, явно указав 64-битную архитектуру:

$ brew install freetds
$ sudo ARCHFLAGS="-arch x86_64" gem install tiny_tds

Причина в том, что в процессе сборки гема mkmf попытается найти 32-битную версию freetds, которая недоступна. Сообщение об ошибке в mkmf.log гласило:

ld: warning: ignoring file /usr/local/lib/libsybdb.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libsybdb.dylib
Undefined symbols for architecture i386:
  "_tdsdbopen", referenced from:
      _t in conftest-a13287.o
ld: symbol(s) not found for architecture i386
person zhengyue    schedule 04.03.2015
comment
Это прекрасно сработало на Эль-Капитане и должно быть принятым ответом. - person David H; 29.02.2016
comment
Мне не нужно было форсировать 64-битную версию, но простая установка freetds решила эту проблему для меня. - person eebbesen; 12.02.2019

Решение

Это было решено простым добавлением /opt/chef/embedded/bin к моему $PATH

$ судо нано ~/.bashrc


Содержимое файла после изменения

export PATH="/opt/chef/embedded/bin:$PATH:$HOME/.rvm/bin" # Добавить RVM в PATH для сценариев


Обновление $PATH

$ источник ~/.bashrc


Установите гем (убедитесь, что вы установили freetds одним из указанных выше способов)

$ sudo gem установить tiny_tds


СПЕЦИАЛЬНОЕ ПРИМЕЧАНИЕ. Это предполагает, что вы установили шеф-повара

$ curl -L https://www.opscode.com/chef/install.sh | судо баш

Ссылка:

Судя по всему, команда для установки ниже:

$ sudo gem install tiny_tds -- --with-freetds-include=/usr/local/freetds/include --with-iconv-include=/opt/chef/embedded/include --with-freetds-lib=/usr/ локальный/freetds/библиотека

person abc123    schedule 25.06.2014