我用,
创建了一个rails项目rails new test_bootstrap.
成功。
移动到项目目录并添加了宝石
gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
并运行
bundle install
之后,我有这个错误。
Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을 수 없습니다. 지정된 경로를 찾을 수
없습니다. 지정된 경로를 찾을 수 없습니다.
c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
from extconf.rb:7:in `<main>'
Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.
对某些韩国人抱歉。它说,它无法找到所选择的路径或类似的东西。
我尝试运行此命令
gem install libv8 -v '3.16.14.3'
抛出相同的错误。
答案 0 :(得分:560)
试试这个:
gem install libv8 -v '3.16.14.3' -- --with-system-v8
注意:因为libv8是therubyracer使用的V8引擎的接口, 你可能需要使用libv8,即使你已经安装了V8。如果 您希望使用自己的V8安装,而不是将其构建 对你而言,请使用
--with-system-v8
选项。
有关更多信息,请查看libv8 on github
的文档答案 1 :(得分:144)
我遇到类似的问题,安装libv8后,安装therubyracer时出错。这是我的解决方案:
$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
$ bundle install
- 请参阅安装therubyracer的错误 -
$ gem uninstall libv8
$ brew install v8
$ gem install therubyracer
$ bundle install
- 请参阅安装libv8的错误 -
$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
答案 2 :(得分:41)
使用自制程序,这有助于我解决此错误。
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
看到rubyracer Github问题。
答案 3 :(得分:29)
我尝试了上面列出的解决方案,该命令看起来非常适合安装单个gem,但是对于bundler用户 - 你应该使用bundle config
使用
bundle config build.libv8 --with-system-v8
和
bundle config build.therubyracer --with-system-v8
配置bundler以获取安装特定gem时使用的参数
答案 4 :(得分:7)
我认为你在Windows上不需要therubyracer
gem。它是一个使用V8引擎的javascript运行时。因此,它正在尝试安装libv8
。
您可以安全地从Gemfile中删除gem。
Rails很乐意使用它可以找到的运行时。 execjs
,nodejs
等都是可能的选择。
Microsoft已经在Windows上为javascript嵌入了JScript运行时,Rails使用它。 See this for more
答案 5 :(得分:5)
解决问题的其他解决方法是在Gemfile中分离它们
group :production do
gem 'libv8', '~> 3.11.8.3'
gem 'therubyracer', :platform => :ruby
end
然后运行bundle命令: bundle install --without production
答案 6 :(得分:2)
我的问题与therubyracer
仅与libv8
宝石有关,而且@ rishav-bhardwaj指出--with-system-v8
并没有做到这一点,而是我有执行
bundle update
然后
bundle install
最后
Bundle complete!
错误消失了!
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue.
Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.
答案 7 :(得分:2)
我也无法安装此gem而不是使用
--with-system-v8
一旦尝试捆绑更新,这对我来说很好
答案 8 :(得分:2)
这对我有用。把它放在Gemfile中
gem&#39; libv8&#39;,&#39;〜&gt; 3.16.14.7&#39;
答案 9 :(得分:1)
在github上找到了这个
假设您已尝试上述步骤,并通过brew安装了v8-315和v8。
brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8
答案 10 :(得分:1)
我解决使用这样的问题:
gem install libv8 -v '3.16.14.19' -- --with-system-v8
答案 11 :(得分:0)
尝试
gem“therubyracer”,“〜> 0.10.2”到Gemfile
它将安装依赖的gem libv8(3.3.10.4)并且build gem native extension failure的问题得到解决。
答案 12 :(得分:0)
使用以下命令解决了libv8 3.16.14.7
问题:
gem install libv8 -v '3.16.14.7' -- --with-system-v8
然后bundle install
成功完成。
答案 13 :(得分:0)
我觉得这与libv8关系不大,而与therubyracer有关。
我在rails应用上运行捆绑安装时收到了同样的错误。如果你遇到过类似的问题,请尝试在bundle之外安装gem:
gem install therubyracer
然后运行bundle install。我希望这也适合你。
答案 14 :(得分:0)
就我而言,我通过要求解决了这种情况
'mini_racer', '~> 0.2.6'
在我的Gemfile中
然后捆绑安装命令起作用了。
答案 15 :(得分:0)
我在使用libv8
和mini_racer
时也遇到了问题。解决了
brew install v8
bundle update libv8 mini_racer
使用最新版本mini_racer 0.2.10
和libv8 7.3.492.27
就像是一种魅力。
答案 16 :(得分:0)
我在本地尝试了以下命令,效果很好:
brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install
答案 17 :(得分:0)
我们在2020年12月在Debian 10 VM以及本地Debian 10桌面上突然遇到了编译错误。
捆绑尝试编译失败
Installing libv8 3.16.14.19 with native extensions
错误日志显示:
IOError: [Errno 2] No such file or directory: '/home/username/application/shared/bundle/ruby/2.6.0/gems/libv8-7.3.492.27.1/vendor/build/config/gclient_args.gni'
Running: gclient root
Running: gclient config --spec 'solutions = [
{
"url": "https://chromium.googlesource.com/v8/v8.git",
"managed": False,
"name": "v8",
"deps_file": "DEPS",
"custom_deps": {},
},
]
'
Running: gclient sync --with_branch_heads
Subprocess failed with return code 1.
我们检查了Google v8 Repo上的标签,发现请求的标签7.3.492.27.1
似乎在Google Repo上不可用:
libv8 did not install properly, expected binary v8 archive '/home/.../gyp
/libv8_snapshot.a'to exist, but it was not found
(Libv8::Location::Vendor::ArchiveNotFound)
我们唯一的解决方案是从Gemfile中完全删除therubyracer
:-(