I'm trying to install the following gem versions on Mavericks
- libv8 (3.16.14.3)
- therubyracer (0.12.1)
Obviously therubyracer gems depends on libv8.
1) Installing libv8
What is libv8? My bit of research seems to indicaite it's some sort of javascript library used by Google Chrome?
I was having trouble installing it, but this great post had both my error and a well-explained answer on how to bypass it.
So I installed libv8
with
gem install libv8 -- --with-system-v8
It's my understanding that this installs the gem but uses my local system installation of the v8 library instead of... the version that comes with the gem? Either way, it was successful.
2) Installing therubyracer
During the next step, I had trouble install therubyracer
gem. I'm not quite sure what this gem does, just that it's a dependency of a rails project I'm trying to bundle install
.
It gives me the following error:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
--with-pthreadlib
--without-pthreadlib
--with-objclib
--without-objclib
--enable-debug
--disable-debug
--with-v8-dir
--without-v8-dir
--with-v8-include
--without-v8-include=${v8-dir}/include
--with-v8-lib
--without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in
'configure': You have chosen to use the version of V8 found
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location
thanks,
The Mgmt
from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
from extconf.rb:32:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out
From what I can gather, I chose to install libv8
using my local V8 library instead of what was provided with libv8
, but now that local installation could not be located.
- How do I check if I do indeed have V8 installed and how do I locate it?
- I tried a few of the specified flags, none of them seemed to point the gem to the correct installation directory
- This might be a separate topic, but what is
extconf.rb
? I've seen it in a few places. And what's it trying to do with thegcc
compiler in specific?
Thanks!!
EDIT:
I tried this solution of uninstalling libv8 and re-installing via
brew install
. It was mentioned in a couple of similar questions as well. No luck.I also tried the
CC
,CXX
, andCPP
environment variables as described here, although I don't think that has any effect as it was already picking up mygcc v4.6
compiler.
This steps worked for me.
OS: Maverick Ruby: 2.1.1
gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8
For those facing this problem in OS X El Capitan, this solution from a therubyracer issue thread was what finally worked for me:
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
I had also run brew install gcc
prior, but I'm not sure whether this was in fact necessary.
Try first uninstalling libv8 gem, then install rubyracer, and then libv8
gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8
Tertom's solution posted on github solved it for me, after having tried all other solutions proposed on the respective github issue and here.
I had the exact same system configuration.
This is on el capitan, so not an exact answer to the question, but people might find this info helpful.
I'm citing it here for visibility:
Solved the same problem
- MacOS 10.11.2
- ruby 1.9.3
- libv8 3.16.14.13
- therubyracer 0.12.2
--
brew tap homebrew/versions brew install v8-315 brew link --force v8-315 bundle install brew unlink v8-315
If you also cannot install libv8,
gem install libv8 --with-system-v8
or
bundle config build.libv8 --with-system-v8
The above answers did not work for me; my bundler config has disable-shared-gems
enabled which causes additional issues.
I'm using Yosemite 10.10.1, Rails 3.2.x, and Ruby 1.9.3p550.
The following snippet in my bin/setup
has fixed the issue for me.
if ! bundle show therubyracer; then
bundle config build.libv8 --with-system-v8
gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
gem install libv8 -v 3.16.14.7
gem install --install-dir vendor/bundle therubyracer
fi
I found a workaround to the above problem.
This is more of a compatibility among libv8 and therubyracer.
gem install libv8 -v '3.3.10.4' -- --with-system-v8
gem install therubyracer -v '0.10.2'
This should work fine as both the versions are compatible with me. Initially I was trying to install the version 0.12.0 for therubyracer and was facing the issue. Once I switched to version 0.10.2, everything worked fine.
My current OS: Mavericks
I've got this issue for MacOS Mojave 10.14.2
and I was able to fix this issue when I found where package v8-315
was installed and what the folder name was.
In my case, it was here /usr/local/opt/v8@3.15
.
To fix this, I've run next:
brew install v8-315
gem install libv8 -v '3.16.14.15' -- --with-system-v
gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/v8@3.15
bundle install
After breaking my head for almost two days this worked for me.
rvm install 2.2.2
gem install rails
bundle install
I noticed that when we encounter a problem:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension
You should then install build-essential
sudo apt install build-essential
It works for me with mini_race's installation problems.
I just run bundle update, and it worked for me.
Obs.: Using Ruby 2.3.0
来源:https://stackoverflow.com/questions/23536893/therubyracer-gemextbuilderror-error-failed-to-build-gem-native-extension