bundle install / update: libv8 (therubyracer) installation fails (with native extensions)

后端 未结 7 584
清酒与你
清酒与你 2020-12-01 06:29

I recently wanted to update my gem bundle but ran into installation problems with libv8 (requirement for therubyracer):

Installing libv8 (3.3.10.3) with native ext         


        
7条回答
  •  春和景丽
    2020-12-01 06:59

    I had a similar issue on my good old Ubuntu 10.04 (x64)

    After I updated the project Gemfile had those gems

      gem 'libv8', '~> 3.11.8'
      gem "therubyracer", '>= 0.11.0beta1', :require => 'v8'
    

    But when I ran 'bundle install' I got an error

    Installing therubyracer (0.11.0beta1) with native extensions 
    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
    
            /home/sseletskyy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb 
    checking for main() in -lpthread... yes
    creating Makefile
    
    make
    compiling array.cc
    compiling script.cc
    compiling object.cc
    compiling constants.cc
    compiling signature.cc
    compiling value.cc
    compiling locker.cc
    compiling init.cc
    compiling heap.cc
    compiling date.cc
    compiling message.cc
    compiling accessor.cc
    compiling context.cc
    compiling exception.cc
    compiling backref.cc
    compiling trycatch.cc
    compiling gc.cc
    compiling handles.cc
    compiling stack.cc
    compiling template.cc
    compiling function.cc
    compiling primitive.cc
    compiling rr.cc
    compiling v8.cc
    compiling invocation.cc
    compiling string.cc
    compiling external.cc
    compiling constraints.cc
    linking shared-object v8/init.so
    /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory
    collect2: ld returned 1 exit status
    make: *** [init.so] Error 1
    
    
    Gem files will remain installed in /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection.
    Results logged to /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out
    An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue.
    Make sure that `gem install therubyracer -v '0.11.0beta1'` succeeds before bundling.
    

    Here's a list of steps which worked for me to solve that block quickly

    1. Uninstall all versions of gems 'libv8' and 'therubyracer'

      > gem uninstall therubyracer

      > gem uninstall libv8

    2. Install therubyracer manually

      > gem install therubyracer

      Fetching: libv8-3.3.10.4-x86_64-linux.gem (100%) Fetching: therubyracer-0.10.1.gem (100%) Building native extensions. This could take a while... Successfully installed libv8-3.3.10.4-x86_64-linux Successfully installed therubyracer-0.10.1 2 gems installed Installing ri documentation for libv8-3.3.10.4-x86_64-linux... Installing ri documentation for therubyracer-0.10.1... Installing RDoc documentation for libv8-3.3.10.4-x86_64-linux... Installing RDoc documentation for therubyracer-0.10.1...

    3. Check versions of installed gems

      > gem list | grep libv

      libv8 (3.3.10.4 x86_64-linux)

      > gem list | grep therubyracer

      therubyracer (0.10.1)

    4. Set those versions in Gemfile and run

      > bundle install

    5. Summary. Well I understand that in my case I used not the latest versions and it could be bad for compatibility sake. But at least I could continue development.

提交回复
热议问题