Установите гем therubyracer на OSX 10.11 El Capitan

bundle install терпит неудачу с Make sure that `gem install therubyracer -v '0.12.1'` succeeds before bundling

gem install therubyracer -v '0.12.1' завершается с ошибками, связанными с компиляцией

До этого у гем libv8 были проблемы, но теперь он установлен благодаря следующим сообщениям SO.

Руководства по исправлению rubyracer для Mavericks кажется, не работает, из-за изменений в El Capitan?

ln: /usr/bin/cpp: Operation not permitted 

person xxjjnn    schedule 02.11.2015    source источник


Ответы (9)


  1. Установите xcode через магазин приложений
  2. Установите «инструменты командной строки» для xcode (xcode-select --install)
  3. Если вы используете rbenv, после установки ruby ​​вам нужно rbenv rehash
  4. Предполагая, что вы запустили gem install bundler и получили ошибки, удалите беспорядок:

    gem uninstall libv8
    gem uninstall therubyracer
    brew rm v8
    
  5. Установите gcc4.2

    brew tap homebrew/dupes
    brew install apple-gcc42
    
  6. Установить v8

    brew tap homebrew/versions
    brew install v8-315
    brew link --force v8-315
    
  7. Установить драгоценные камни

    gem install libv8 -- --with-system-v8
    gem install therubyracer
    

    если вы получите dyld: lazy symbol binding failed: Symbol not found, @rpbaltazar предложит альтернативу:

    bundle config --local build.libv8 --with-cxx=/usr/local/bin/g++-4.2
    bundle install
    
person xxjjnn    schedule 02.11.2015
comment
Это решило проблему для меня. После нескольких других задействованных методов я думаю, что ключевое отличие этого ответа заключалось в простом предоставлении старого компилятора (GCC). Спасибо. - person Aeschylus; 13.11.2015
comment
Мне нужно было сделать только шаг №7. - person Catfish; 18.01.2016
comment
была сильная боль, а потом был этот ответ. СПАСИБО! - person don.najd; 27.01.2016
comment
Я беру свои слова обратно... теперь я получаю другую ошибку dyld: сбой привязки отложенного символа: символ не найден: _ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1 Ссылка из: /development/opensource/rails-loaded/vendor/ruby/2.1 .0/extensions/x86_64-darwin-15/2.1.0-static/therubyracer-0.12.2/v8/init.bundle Ожидается в: плоское пространство имен - person don.najd; 27.01.2016
comment
Это должно содержать, почему это работает. Удалить и установить его полностью - это не очень хороший ответ. - person b1nary; 15.02.2016
comment
Метод проб и ошибок после прочтения десятков сообщений SO с предложениями. Насколько мне известно: ОБЪЯСНЕНИЕ - person xxjjnn; 15.02.2016
comment
@don.najd У меня та же проблема. Вам удалось это решить? - person Saurabh Nanda; 14.03.2016
comment
Люди с проблемами - есть ли что-то особенное в вашей установке? Вы используете Хакинтош? Я не могу воспроизвести, извините =( Кажется, я где-то читал, что изменения dyld могут не вступить в силу до перезагрузки, не могли бы вы попробовать перезагрузиться, и я добавлю это как шаг, если это сработает? - person xxjjnn; 14.03.2016
comment
У меня получилось, и мне стыдно признаться, что я не могу вспомнить, как. Я хочу сказать, что все это было связано с версией GCC. Я корю себя за то, что не вернулся сюда и не сообщил вам всем. @Нуль - person don.najd; 15.03.2016
comment
@xxjjnn мой ноутбук был стандартным Mac, совершенно новым и El Capitan - person don.najd; 15.03.2016
comment
Нашел ответ, который сработал для меня!!! stackoverflow.com /вопросы/33343159/ - person don.najd; 24.03.2016
comment
Большое спасибо, действительно полезный ответ. Один из тысяч, кто помог. - person Artyom Kalmykov; 10.06.2016

У меня все еще были проблемы с ответом @xxjjnn. Следующий ответ от github решил эту проблему. Моя текущая установка: El Capitan 10.11.4 и Xcode 7.3.

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install
person Phil Tran    schedule 03.04.2016
comment
Работал на El Capitan 10.11.3 - person ConorB; 10.04.2016
comment
Работал на OS X 10.11.4 с Ruby 2.3.0 и Rails 4.2.6 - Процесс - person DogEatDog; 11.04.2016
comment
У меня работало на OS X 10.11.4 Ruby 2.3.0, Rails 4.2.6 тоже. Я пробовал различные другие подходы, это единственный, который решил для меня проблему компиляции «therubyracer» после того, как я обновился до Ruby 2.3.0. - person smile2day; 12.04.2016
comment
gem install therubyracer --with-v8-dir=/usr/local/opt/v8-315 сэкономил мне время! - person mike927; 16.01.2018
comment
Несмотря на то, что в наши дни homebrew/versions ничего не делает, это решение в основном работало для меня на Catalina со следующими изменениями: мне пришлось указать libv8 3.16.14.19 вместо 3.16.14.13; и --with-v8-dir=/usr/local/opt/[email protected], а не без знака @. Я использовал Ruby 2.4.6 и Rails 4.2.11.1 на Catalina 10.15.2. - person John Messenger; 26.12.2019

Мне помог ответ, представленный на therubyracer странице Github:

brew tap homebrew/versions
brew install v8-315
brew link --force v8-315
gem install libv8 -- --with-system-v8
gem install therubyracer
person Jan Klimo    schedule 28.03.2016

Я обновил gem therubyracer до версии 0.12.2, а затем выполнил следующие команды в репозитории rails:

$ brew install v8-315
$ bundle config --local build.libv8 --with-system-v8
You are replacing the current local value of build.libv8, which is currently nil
$ bundle config --local build.therubyracer --with-v8-dir=$(brew --prefix v8-315)
You are replacing the current local value of build.therubyracer, which is currently nil

и наконец

bundle install
person anquegi    schedule 18.04.2019
comment
Это работало на Catalina macOS 10.15, но с 0.12.3. - person Ram on Rails React Native; 08.01.2020

Я знаю, что этот вопрос конкретно касается установки therubyracer -v '0.12.1', но на самом деле решение заключается в обновлении до '0.12.2'.

Я боролся с этим в нескольких проектах и ​​всегда забываю об этом. Затем в конце концов я помню, и все это работает.

Обязательно удалите все, что вы добавили в bundle config, если оно вам больше не нужно в bundle config --delete build.libv8.

Вот тред в репозитории гема по этому поводу: /therubyracer/issues/398#issuecomment-238161167

person equivalentideas    schedule 14.08.2016

(Публикация в качестве комментария для удобства чтения, но это должно быть дополнением к исходному принятому ответу)

После запуска принятого ответа я столкнулся с ошибкой, описанной в комментариях.

Решение, которое я нашел полезным для меня, заключалось в следующем:

gem uninstall libv8
gem uninstall therubyracer
bundle config --local build.libv8 --with-cxx=/usr/local/bin/g++-4.2
bundle install

Обратите внимание, что необходимы начальные шаги принятого ответа, а именно установка компилятора.

person rpbaltazar    schedule 23.03.2016
comment
Я уничтожил рубиновую версию и точно следовал этим инструкциям, но все равно получаю dyld: ошибка привязки отложенного символа: ошибка «Символ не найден». Любая дополнительная информация здесь @rpbaltazar - person equivalentideas; 08.08.2016
comment
Привет. в какой версии у тебя проблема? описанные шаги сработали для меня в Эль-Капитане. к сожалению, не сталкиваясь с проблемой лично, мне трудно ее решить, так как многое было сделано методом проб и ошибок. - person rpbaltazar; 13.08.2016

На самом деле, apple-gcc42 удален из brew:

apple-gcc42 был удален из homebrew/core в коммите bcba321ea:

Вместо этого я установил [email protected] Итак, следуя xxjjnn answer, вместо 5 просто запустите:

brew install [email protected]
person Andrew    schedule 02.01.2019

Сначала попробуйте удалить Gemfile.lock и снова запустить bundle install. Gemfile.lock будет создан снова.

Это будет работать в большинстве случаев на El Capitan.

Без этого он просто установит те же версии, что и в Gemfile.lock. Если вы удалите этот файл, bundle install будет получать новейшие версии ваших драгоценных камней.

person Sven R.    schedule 03.05.2016

Если ничего из вышеперечисленного не работает для вас, следуйте этому совету ребят. Удаление всего, что связано, и обновление gcc исправили это для меня.

Gem install therubyracer -v '0.11.4'?

person don.najd    schedule 24.03.2016