Не удается установить mysql gem на OS X
Я делаю
sudo gem install mysql
в OS X, чтобы установить gem mysql. Это не работает со следующим выходом:
Создание собственных расширений. Это может занять некоторое время...
ОШИБКА: Ошибка при установке mysql:
ОШИБКА: Не удалось создать собственное расширение gem.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
проверка для mysql_ssl_set()... yes
проверка на rb_str_set_len()... да
проверка rb_thread_start_timer()... no
проверка для mysql.h... yes
создание Makefile
сделать "DESTDIR =" чистой
сделать "DESTDIR ="
компиляция mysql.c
связывание shared-object mysql/mysql_api.bundle
clang: error: неизвестный аргумент: '-multiply_definedsuppress' [-Wunused-command-line- > argument-hard-error-in-future]
clang: note: это будет жесткая ошибка (не может быть понижена до предупреждения) в будущем
make: * [mysql_api.bundle] Ошибка 1
сделать неудачно, выйти из кода 2
Файлы Gem будут оставаться в /Library/Ruby/Gems/ 2.0.0/gems/mysql-2.9.1 для проверки.
Результаты, зарегистрированные в /Library/Ruby/Gems/ 2.0.0/extensions/universal-darwin-13/2.0.0/mysql-2.9.1/gem_make.out
Любая идея, что может быть причиной этого? У меня есть mysql, установленный с homebrew, если это имеет значение.
Ответы
Ответ 1
Из примечаний к выпуску Apple Xcode/Clang:
Компилятор Apple LLVM в Xcode 5.1 рассматривает непризнанные параметры командной строки как ошибки. Эта проблема была замечена при создании как собственных расширений Python, так и Ruby Gems, где в настоящее время указаны некоторые недопустимые параметры компилятора. Для удаления этих параметров необходимо изменить проекты с использованием недопустимых параметров компилятора. Чтобы облегчить этот переход, компилятор временно примет возможность понизить ошибку до предупреждения:
-Wno-error=unused-command-line-argument-hard-error-in-future
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName
Ответ 2
Кажется, проблема с Apple rbconfig.rb:
$ grep -n DLDFLAGS /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb
82: CONFIG["LIBRUBY_DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress -install_name $(libdir)/$(LIBRUBY_SO) -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(ruby_version) $(XLDFLAGS)"
84: CONFIG["EXTDLDFLAGS"] = ""
125: CONFIG["DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress"
Удаление -multiply_definedsuppress
должно позволить его установить.
Ответ 3
Это связано с Xcode 5.1 - его уже сообщалось как ошибка для Ruby.
https://bugs.ruby-lang.org/issues/9624
Здесь есть еще несколько дополнительных обсуждений:
Ruby Gem install Json не работает на Mavericks и Xcode 5.1 - неизвестный аргумент: '-multiply_definedsuppress'
Ответ 4
Вышеуказанные ответы верны. Самое простое исправление заключается в том, чтобы восстановить рубин на вашей машине. Расширения Gem используют конфигурацию сборки ruby, когда она сама была построена, и если вы создали свой рубин до Xcode 5.1, его конфигурация сборки содержит оскорбительные флаги.
Это должно исправить его для всех затронутых драгоценных камней.