"berks update <cookbook-name>"到底是做什么的?

Ste*_*n C 14 chef-infra berkshelf berksfile

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

"更新Berksfile中指定的cookbook(和依赖项)"

(是的......这就是它所说的!).

但究竟是什么意思呢?

这会如何随着Berksfile中不同类型的"cookbook"规范而变化?

set*_*rgo 14

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

cookbook 'foo', '~> 1.0.0'
Run Code Online (Sandbox Code Playgroud)

这告诉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,因为这是仍然满足您的约束的最新发布版本.