“berks update <cookbook-name>”到底是做什么的?</cookbook-name>

时间:2014-01-10 01:29:32

标签: chef berkshelf berksfile

根据“berks help update”,命令应该是:

  

“更新Berksfile”

中指定的cookbook(和依赖项)

(是的......就是这样!)。

但究竟是什么意思?

这与Berksfile中不同类型的“cookbook”规范有何不同?

1 个答案:

答案 0 :(得分:14)

update命令将尝试查找每个cookbook的最新版本(仍满足您定义的任何版本要求)。例如,假设您有以下Berksfile:

cookbook 'foo', '~> 1.0.0'

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

(几个月过去了......)

现在您要将菜谱更新到最新版本。但由于SemVer,您希望保留在1.0.x系列中。运行berks update将解锁锁文件中的硬依赖关系,但将约束保留在Berksfile中。所以(假设),如果社区网站有以下foo cookbook版本:

  • 1.0.5
  • 1.0.6
  • 1.0.8
  • 1.1.0
  • 2.0.0

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