2014-01-10 25 views
12

据“伯克斯帮助更新”,该命令应该:“berks更新<cookbook-name>”究竟做了什么?

“更新在Berksfile指定的食谱(和依赖性)”

(是的......这一切都表示, !)。

但究竟是什么意思?

这是如何随Berksfile中不同种类的“食谱”规范而变化的?

回答

13

更新命令将尝试查找每个烹饪书的最新版本(仍然符合您定义的任何版本要求)。例如,假设您有以下Berksfile:

cookbook 'foo', '~> 1.0.0' 

这告诉Berkshelf接受在1.0.x系列中的任何版本。所以你运行berks install和(假设)foo-1.0.5被安装到你的本地berkshelf。 lockfile将在1.0.5版本中“锁定”foo的定义,因此其他开发人员和将来的安装将始终使用版本1.0.5(这是lockfile的整个要点)。

(几个月路过...)

现在你要更新的食谱到最​​新版本。但是由于SemVer,你想保留在1.0.x系列中。运行berks update将解锁lockfile中的硬依赖项,但将约束保留在Berksfile中。所以,(假设),如果社区网站有以下富食谱版本:

  • 1.0.5
  • 1.0.6
  • 1.0.8
  • 1.1.0
  • 2.0.0

berks update会将您的本地版本更新为1.0.8,因为这是最新发布的版本,仍然可以满足您的约束条件。

+0

它是否在VM中放置了食谱副本? – Seperman

+1

什么VM?我没有看到你在哪里提到过虚拟机? – sethvargo

+0

我很好奇,如果'berks update'在Vagrant Box里面做了什么,就像在/ etc/chef /中一样将食谱复制到VM。在做了更多的研究之后,我发现它没有那样做。但我仍然很好奇厨师独奏找到食谱的位置。 – Seperman