Установка Ruby Gem не працює на Mavericks і Xcode 5.1 - невідомий аргумент: '-multiply_definedsuppress'


105

Я намагався запустити gem install json і отримав таку помилку

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

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

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [generator.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /opt/boxen/repo/.bundle/ruby/2.0.0/gems/json-1.8.0 for inspection.
Results logged to /opt/boxen/repo/.bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/json-1.8.0/gem_make.out

Я використовую:

Os X: 10.9.2
Xcode: 5.1 Версія збірки 5B130a
Інструменти командного рядка (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 редакція 41674) [Universal.x86_64-darwin13]
Ruby Gem: 2.2 .2
GCC: 4.2.1 Apple LLVM версії 5.1 (clang-503.0.38) (на основі LLVM 3.4svn)


1
Я робив багато речей, намагаючись вирішити цю проблему, і не знаю точно, що вирішив, але встановив нову версію рубіну, завантажив попередню версію інструментів командного рядка (пізній жовтень) і виконав відповідь команди @Muncken (ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future {оригінальна команда}). Це вирішило мою проблему. У моєму конкретному випадку я використовував boxen для установки свого середовища, тому остаточна команда, яку я використав, була ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen - no-fde. Дякую всім, хто допоміг.
g8M

Mavericks 10.9.3 поновлює ruby ​​на: ruby ​​2.0.0p451 (2014-02-24 редакція 45167) [Universal.x86_64-darwin13] Це, здається, вирішує проблему.
Шахар Хадас

1
Проблема стосується старої версії рубіну, як стверджує @Sash. Мені довелося оновити до 2.0.0p451 вручну з 2.0.0p2 .. за допомогою rvm: rvm встановити ruby-2.0.0-p451. rvm має встановити його як версію за замовчуванням, тоді вам просто потрібно перевстановити дорогоцінні камені
Адам Спенс

У мене це питання з rvm ruby ​​2.2.0p0 (2014-12-25 перегляд 49005)
Сонні Парлін

Відповіді:


145

Я зіткнувся з точно такою ж проблемою після оновлення Xcode до 5.1, а новини від Apple - це не дуже добре. З приміток до випуску Xcode 5.1 :

  • Компілятор Apple LLVM в Xcode 5.1 розглядає нерозпізнані параметри командного рядка як помилки. Ця проблема спостерігалася під час створення обох розширень Python та Ruby Gems, де наразі вказані деякі недійсні параметри компілятора.

Для видалення цих параметрів потрібно буде змінити проекти, що використовують недійсні параметри компілятора. Щоб полегшити цей перехід, компілятор тимчасово прийме можливість зменшити помилку до попередження:

-Wno-error=unused-command-line-argument-hard-error-in-future

Щоб вирішити цю проблему, встановіть змінну середовища ARCHFLAGS для зменшення помилки до попередження.

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

Здається, що всі дорогоцінні камені, що порушують параметри компілятора, повинні бути оновлені, щоб використовувати дійсні параметри. Явно зазначено, що: Цей параметр [пониження помилки до попередження] надалі не підтримуватиметься .

Примітка кланг, яку ми бачимо ( це в майбутньому буде сильною помилкою (не може бути знижена до попередження) ) відповідає зміні, оголошеній у нотатках до випуску.


Щоб конкретно відповісти на запитання, скористайтеся наступним, щоб встановити дорогоцінний камінь json:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json

Однак зауважте, що це лише тимчасове виправлення.


1
Дуже дякую, ти мені дуже допоміг. З моменту оновлення до інструментів Xcode CLI 5.1 версії я отримував безліч помилок при спробі поєднання проекту Rails 4. Хоча мені потрібно було пройти ARCHFLAGSдвічі: під час встановлення конкретних пошкоджених дорогоцінних каменів та під час запуску Bundler.

Радий, що можу допомогти Рафаелю. Я провів більшу частину дня в тому ж безладі.
Каспер Мунк

Я робив багато речей, намагаючись вирішити цю проблему, і не знаю точно, що вирішив, але я встановив нову версію рубіну, завантажив попередню версію інструментів командного рядка (пізній жовтень) і виконав команду на цю відповідь. Це вирішило мої проблеми. У моєму випадку я використовував поля для установки свого середовища, тому остаточна команда, яку я використав, була ARCHFLAGS = -Wno-error = unused-command-line-argument-argument-hard-error-in-future / opt / boxen / repo / script / boxen --но-фде. Дякую всім, хто допоміг
g8M

2
Я не можу, щоб це рішення працювало на мене. Все ще не вдається з clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]будь-якими ідеями?
rauberdaniel

1
Ви можете спробувати експортувати явно export ARCHFLAGS="...", а потім запустити команду компіляції в новий рядок, наприклад gem install json(я сам компілюю модулі Python). До речі, не забудьте додати до рядка вже наявні архіфайли, інакше вони будуть перезаписані.
Міхель Каув-А-Тжо

107

Одне вкладиш, щоб виправити це

curl https://gist.githubusercontent.com/Paulche/9713531/raw/1e57fbb440d36ca5607d1739cc6151f373b234b6/gistfile1.txt | sudo patch /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb

Не працювало. Ран командував і мав невдачі:patching file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb Hunk #1 FAILED at 82. Hunk #2 FAILED at 125. 2 out of 2 hunks FAILED -- saving rejects to file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb.rej
Ілля Мюррей

19

Щоб вирішити проблему, ви можете встановити останню версію рубіну, як описано в @Sash. Для цього можна використовувати наступні команди. Якщо ви вже встановили rvm, вам не потрібно його перевстановлювати.

#Install rvm
\curl -sSL https://get.rvm.io | bash -s stable

#Install ruby version 2.0.0-p451
rvm install ruby-2.0.0-p451

#Print ruby version to verify that it was installed successfully
ruby -v

#Install json gem
sudo gem install json

12

Питання, яке вже вирішив Рубі:

https://bugs.ruby-lang.org/isissue/9624

тепер нам просто потрібно чекати, коли Apple оновить свою рубінову версію (2.0.0p247) до нової після останньої (2.0.0p451), яка ще не вийшла ... (або варити / макпортувати її)

Оновлення (2015-05-15): Mavericks 10.9.3 оновлює рубін до ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] І це, здається, вирішує проблему.


4

@Muncken вже дав відповідь, щоб встановити дорогоцінний камінь по черзі:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

Базуючись на відповіді Манккена, я намагався, що він також працює під час використання bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install

Чи можете ви дати характеристику?
bjb568

як @Muncken сказав, але він просто надав відповідь gem install, я спробував, що bundle installтакож працює
worldask

Ваша відповідь повинна бути повною самостійно, навіть без контексту інших відповідей.
bjb568

Так. Набагато краще і повно.
bjb568

Цей ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future може бути використаний у кожній команді, яка не працює з clang: error: unknown argument: '-multiply_definedsuppress'. Насправді це говорить клавішному компілятору, що цю помилку слід трактувати як попередження
g8M

2

У моєму випадку у мене насправді є схожа проблема, але не на системному рубіні, а на рубінах, встановлених rvm з OSX 10.8, і у нього є проблеми після оновлення до OSX 10.9.

Проста перевстановлення працює: rvm reinstall ruby-2.1.1


Спробувавши все під сонцем, щоб виправити це питання, ось що зробив це для мене! Дякую!
Порушники Ш

1

У OSX 10.10 у мене виникло декілька проблем під час роботи rails new firstapp:

ERROR:  Error installing json:
ERROR: Failed to build gem native extension.
fatal error: 'ruby/config.h' file not found

Я оновив rvm з цією конфігурацією, і всі помилки зникли !:

rvm get stable --auto-dotfiles

Ви можете сказати з назви програми, що я щойно почав котируватися з Ruby on Rails, тому наведені вище поради можуть не працювати для вас.


1

Очевидно, що однолінійка Пола Чечетіна вже не працює (21.09.15). Однак ця відповідь на пост, згаданий у відповіді Піта, вирішила для мене проблему:

  • (a) Встановіть XCode Apple, потім (b) запустіть його та прийміть умови ліцензування (я це зробив (а), але не (b).)
  • sudo gem uninstall compass
  • sudo gem install compass

Я оновив Xcode, але ніколи не запускав його. Коли я запустив це, це спонукало мене щось прийняти, тоді довелося «встановити компоненти». Після цього я спробував gem install jsonще раз, і це спрацювало!
Сара Судас

1

Жодне з них не працювало на мене.

Що, нарешті, працювало - це запускати команду із судо -

встановити gem byebug -v '9.0.6'


-1

Я використав просте рішення ... встановити через варити

ім'я установки варіння

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.