我经常看到bundle install
将尝试构建一个gem但gem install
从远程存储库中获取相同的gem。我以为bundler
也会尝试获取宝石。有人可以解释这个区别吗?例如,如果我的Gemfile
列出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将获取所有远程源,解析 依赖并安装所有需要的宝石。
为什么bundle install
决定构建gem而gem install
只是安装它?此外,它可能为某些版本构建,但只是为同一个宝石的其他版本安装它?例如,thrift-0.9.0.1.patched
已构建,但thrift-0.9.2.0
已安装在我的计算机上。为什么不同?