Не удается установить 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 должно позволить его установить.

Ответ 4

Вышеуказанные ответы верны. Самое простое исправление заключается в том, чтобы восстановить рубин на вашей машине. Расширения Gem используют конфигурацию сборки ruby, когда она сама была построена, и если вы создали свой рубин до Xcode 5.1, его конфигурация сборки содержит оскорбительные флаги.

Это должно исправить его для всех затронутых драгоценных камней.