1

我经常看到它bundle install会尝试构建一个 gem,但会gem install从远程存储库中获取相同的 gem。我想bundler也会尝试获取宝石。谁能解释其中的区别?例如,如果我的Gemfilelists libv8bundle install失败并出现以下错误:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 
....
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只需获取它即可成功。man bundle-install有话要说:

如果这是您第一次运行 bundle install (并且 Gemfile.lock 不存在),bundler 将获取所有远程源,解决依赖关系并安装所有需要的 gem。

为什么bundle install决定在gem install安装 gem 的同时构建它?此外,它可能为某些版本构建,但只是为同一 gem 的其他版本安装它?例如,thrift-0.9.0.1.patched已构建但thrift-0.9.2.0已安装在我的机器上。为什么有区别?

4

0 回答 0