我经常看到它bundle install
会尝试构建一个 gem,但会gem install
从远程存储库中获取相同的 gem。我想bundler
也会尝试获取宝石。谁能解释其中的区别?例如,如果我的Gemfile
lists libv8
,bundle 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
已安装在我的机器上。为什么有区别?