"gem install therubyracer -v" 0.10.2 '"на osx mavericks, не устанавливающий

Попытка установить therubyracer на mavericks с помощью "gem install therubyracer -v" 0.10.2 '", но я получаю следующую ошибку:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/dennischen/.rvm/gems/[email protected]/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1

Может ли кто-нибудь помочь мне разобраться, как заставить этот камень работать? У меня установлены инструменты командной строки.

Ответ 1

Если вы решите использовать новую версию therubyracer gem, у вас больше не будет этой проблемы

В противном случае:

brew tap homebrew/dupes # Thanks Tom
brew install apple-gcc42

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

brew uninstall v8

gem uninstall libv8

gem install therubyracer -v '0.10.2' # specify version

Ответ 2

Итак, я, наконец, получил работу после некоторых попыток... благодаря Саймону и Альваро.

У меня есть одна вещь, которую можно добавить, используя флаг --with-system-v8, не работает для меня... Поэтому я удалил мою систему v8 с помощью

brew uninstall v8

И запустите

gem install libv8

Если вы уже запустили gem install libv8 с флагом системы v8, обязательно удалите эту версию gem (сделайте это, запустив gem uninstall libv8). Важно то, что вы не должны использовать тот, который предоставляется brew, он, похоже, не работает в Mavericks (он хорошо устанавливается, и связной будет сообщать, что ваш комплект завершен, но ваше приложение не удастся, когда оно попытается используйте v8).

Чтобы обобщить ответ, для меня работало следующее:

brew install apple-gcc42
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

brew uninstall v8
gem install libv8
gem install therubyracer

Ответ 3

У меня была та же проблема, это работает для меня:

therubyracer (0.10.2) и libv8 (3.3.10.4)

Прежде всего:

  • brew install apple-gcc42
  • вы должны связать все двоичные файлы компиляторов (gcc, cpp, g++) с /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

После этого вы можете попробовать следующее:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer' или bundle install в каталог проекта рельсов.

Ответ 4

У меня была одна и та же проблема, и в настоящее время одно решение использует apple-gcc42 вместо clang для компиляции обоих драгоценных камней:

brew install apple-gcc42

И тогда у вас есть выбор между выполнением некоторых символических ссылок в /usr/bin для двоичных файлов {gcc, g++, С++}:

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

На самом деле g++ должно быть достаточно.

Или... вы можете экспортировать переменные среды CC/CXX/CPP с путями, соответствующими двоичным файлам, созданным доморощенным. Это, безусловно, более сложное решение.

Третье решение - загрузить Xcode 4.6.3 и установить его в папку "Приложения". Затем введите в терминал:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer

Как только камень был установлен, вы можете вернуться к Xcode 5.0:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

Ответ 5

Я нашел обходное решение, которое работало без установки apple-gcc42.

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

clang: error: no such file or directory: '/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'

Затем вы сможете сделать следующее:

brew install v8
bundle install 
# after failing create link from brew installed v8 to error location
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
bundle install

Источник: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348

Ответ 6

Как было предложено во многих ответах, проще всего скомпилировать собственные расширения Ruby Racer с Apple GCC 4.2 (вместо версии, установленной с Xcode).

Если вы используете MacPorts, вам не придется вручную обращаться к настройке символических ссылок для двоичных файлов GCC. Команда port select делает это для вас. Если вы не обновили MacPort с момента установки Mavericks, выполните sudo port selfupdate. С обновлением MacPorts попробуйте выполнить следующее:

# If you don't have it, install the port for Apple GCC 4.2
sudo port install apple-gcc42 

    # OR

# If you had apple-gcc42 already (before Mavericks), update it
sudo port upgrade apple-gcc42


# Same result as manual symlinking of GCC in other answers
sudo port select gcc apple-gcc42 && hash -r

# Install therubyracer, will install libv8 gem dependency
#  *note* if you have any existing versions of these gems, remove them
gem install therubyracer

# Restore GCC to system default (optional)
sudo port select gcc none && hash -r

В целом эта процедура (sudo port select gcc [version]) будет работать в любое время, когда вы захотите использовать определенную версию GCC вместо той, которая установлена ​​Xcode (Apple LLVM v5 для 10.9 Mavericks/Xcode 5).

Ответ 7

Мне удалось установить therubyracer 0.12 и libv8 3.16.14.3 на ruby ​​2.0.0p353 и os x 10.9

libv8 требует gcc42

brew install v8
brew install apple-gcc42
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
gem install libv8

therubyracer требует позже gcc

brew install gcc49
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp

Gemfile

gem 'therubyracer', :require => 'v8', :platforms => :ruby

используйте bundle вместо gem install therubyracer

Ответ 8

Это должно быть безопасным и чистым способом (без символических ссылок) для установки therubyracer для тех, у кого есть проблемы.

Снято с: gem install therubyracer -v 0.11.4 не работает в OS X 10.10

установить Xcode (если у вас еще нет одной из этих версий) 6.1.1, 6.2-бета или 6.3-бета и (это необходимо) 4.6.3

gem uninstall libv8, если вы еще этого не сделали

переключиться на Xcode 4.6.3

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer

gem install libv8 -v '3.11.8.17' Или любая версия, привязанная к вашей версии therubyracer

переключитесь на Xcode 6.1.1, 6.2-beta или 6.3-beta (или если вы хотите попробовать свою текущую установку Xcode, отрегулируйте эту строку, я подтвердил все 3 из этих работ)

sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer

gem install therubyracer -v '0.11.4' или версию, которую вы пытаетесь установить.

Ответ 9

У меня была почти идентичная ошибка при попытке установить therubyracer 0.12.0, чтобы заставить его работать с libv8. Это сработало для меня:

$ brew upgrade gcc

$ gem uninstall therubyracer

$ gem uninstall libv8

$ gem install therubyracer -v '0.12.0'
Fetching: therubyracer-0.12.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
1 gem installed

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions with: '--with-system-v8'
This could take a while...
Successfully installed libv8-3.16.14.3
1 gem installed

Ответ 10

У меня была такая же проблема, когда я обновился от OSX Mountain Lion до OSX Mavericks.

Модификация с ruby-1.8.7-p354 на ruby-1.8.7-375 сделала трюк для меня.

Возможно, попробуйте обновить с ruby ​​1.9.3-p194 до rc1 (теперь 1.9.3 выше p484)

Предполагая, что вы используете rbenv:

rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install

Ответ 11

У меня была эта проблема после обновления от Mavericks до Yosemite. Проблема заключалась в том, что я скомпилировал свою версию Ruby со старой версией OSX.

Если я запустил

ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'

Я бы получил x86_64-darwin-13 вместо x86_64-darwin-14 для Yosemite.

Чтобы переустановить Ruby I

  • Полностью удаленная старая версия: rvm remove ruby-2.1.1
  • Re-installed from source (--disable-binary не использует предварительно скомпилированные двоичные файлы и заставляет сборку): rvm reinstall --disable-binary 2.1

Затем я смог запустить bundle install без ошибок после того, как попробовал все вышеперечисленные решения.

Ответ 12

То, что я сделал, было на osx mavericks:

git clone [email protected]:cowboyd/therubyracer.git

Тогда:

gem build therubyracer.gemspec
gem install therubyracer-0.12.1.gem

Эта процедура загрузила двоичную версию libv8 и установила ее.