Пытаюсь установить 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/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1
может ли кто-нибудь помочь мне понять, как заставить этот драгоценный камень работать? У меня установлены инструменты командной строки.
ruby-on-rails
macos
gem
therubyracer
osx-mavericks
user2711889
источник
источник
homebrew
? Попробуйте установить v8 с помощьюbrew install v8
перед установкой gemОтветы:
Если вы решите использовать более новую
therubyracer
версию гема, у вас больше не будет этой проблемыВ противном случае:
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
источник
brew tap homebrew/dupes
исправляет «Ошибка: нет доступной формулы для apple-gcc42»Итак, я, наконец, заставил это работать после некоторой борьбы ... благодаря Саймону и Альваро.
У меня есть кое-что добавить: использование флага --with-system-v8 у меня не сработало ... Поэтому я удалил свою систему v8 с помощью
brew uninstall v8
И бег
gem install libv8
Если вы уже работали
gem install libv8
с системным флагом v8, обязательно удалите эту версию гема (сделайте это, запустив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
источник
brew update
что придет и повернет эти пути, оставит вас в разбитом состоянии.У меня была такая же проблема, у меня работает:
Прежде всего:
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
в каталог проекта рельсов.источник
apple-gcc42: This formula either does not compile or function as expected on macOS
Моя macOS - 10.12.6У меня была такая же проблема, и одним из решений в настоящее время является использование apple-gcc42 вместо clang для компиляции обоих драгоценных камней:
brew install apple-gcc42
И тогда у вас есть выбор между созданием некоторых символических ссылок в / usr / bin для двоичных файлов {gcc, g ++, c ++}:
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 с путями, соответствующими двоичным файлам, созданным homebrew. Это, безусловно, более чистый обходной путь.
Третье решение - загрузить Xcode 4.6.3 и установить его в папку Applications . Затем введите в терминал:
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
источник
Я нашел обходной путь, который работал без установки 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
источник
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a ~/.rvm/gems/ruby-1.9.3-p327/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
Как предлагается во многих ответах, проще всего скомпилировать собственные расширения Ruby Racer с Apple GCC 4.2 (вместо версии, установленной с Xcode).
Если вы используете MacPorts, вам не придется вручную настраивать символические ссылки для двоичных файлов GCC. Команда
port select
сделает это за вас. Если вы не обновляли MacPorts с момента установки Mavericks, выполнитеsudo port selfupdate
. Установив последнюю версию MacPorts, попробуйте следующее:# If you don't have it, install the port for Apple's 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).источник
Мне удалось установить rubyracer 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
источник
bundle install
после нескольких дней проб и ошибок. Единственное, что я сделал иначе, - это удалил все инструменты разработчика, которые были установлены,brew
пока неgcc --version
сообщалось, что это версия Apple LLVM и была настроена с помощью Xcode, затем я переместил существующие/usr/bin/gcc
(и др.), Прежде чем создавать символическую ссылку на apple-gcc42. libs, то вместо того, чтобы устанавливать gcc49 (в прошлый раз, когда я пытался настроить его, я просто скопировал исходные библиотеки gcc, g ++ и cpp. Учитывая, что я попробовал 3 дюжины разных способов найти тот, который работал у меня, YMMVЭто должен быть безопасный и чистый способ (без символических ссылок) для установки rubyracer для всех, у кого возникнут проблемы.
Взято из: gem install therubyracer -v 0.11.4 не работает на OS X 10.10
установите Xcode (если у вас еще нет одной из этих версий) 6.1.1, 6.2-beta или 6.3-beta и (это необходимо) 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'
или версию, которую вы пытаетесь установить.источник
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
а затем запускаю,gem install libv8 -v '3.3.10.4'
я получаю:unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly!
Что я делаю неправильно?У меня была почти такая же ошибка при попытке установить rubyracer 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
источник
У меня была такая же проблема, когда я обновился с 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
источник
У меня возникла эта проблема после обновления с Mavericks до Yosemite. Проблема заключалась в том, что я скомпилировал свою версию Ruby со старой версией OSX.
Если бы я побежал
ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'
Я бы получил
x86_64-darwin-13
вместоx86_64-darwin-14
Йосемити.Чтобы переустановить Ruby I
rvm remove ruby-2.1.1
rvm reinstall --disable-binary 2.1
После того, как я
bundle install
попробовал все вышеперечисленные решения, я смог работать без ошибок.источник
Что я сделал, так это на osx mavericks:
git clone git@github.com:cowboyd/therubyracer.git
Затем:
gem build therubyracer.gemspec gem install therubyracer-0.12.1.gem
Эта процедура загрузила двоичную версию libv8 и установила ее.
источник