【发布时间】:2014-01-28 20:29:55
【问题描述】:
根据“berks help update”,该命令应该是:
“更新 Berksfile 中指定的说明书(和依赖项)”
(是的……就是这么说的!)。
但这究竟是什么意思?
这与 Berksfile 中不同类型的“食谱”规范有何不同?
【问题讨论】:
标签: chef-infra berkshelf berksfile
根据“berks help update”,该命令应该是:
“更新 Berksfile 中指定的说明书(和依赖项)”
(是的……就是这么说的!)。
但这究竟是什么意思?
这与 Berksfile 中不同类型的“食谱”规范有何不同?
【问题讨论】:
标签: chef-infra berkshelf berksfile
更新命令将尝试查找每本说明书的最新版本(仍满足您定义的任何版本要求)。例如,假设您有以下 Berksfile:
cookbook 'foo', '~> 1.0.0'
这告诉 Berkshelf 接受 1.0.x 系列中的任何版本。所以你运行berks install 并且(假设地)foo-1.0.5 被安装到你本地的berkshelf 中。锁定文件会将 foo 的定义“锁定”在 1.0.5 版本,因此其他开发人员和未来的安装将始终使用 1.0.5 版本(这是锁定文件的全部要点)。
(几个月过去了……)
现在您想将食谱更新到最新版本。但是因为SemVer,你想留在1.0.x系列。运行 berks update 将解锁 lockfile 中的硬依赖,但保留 Berksfile 中的约束。所以(假设),如果社区网站有以下 foo 食谱版本:
berks update 会将您的本地版本更新为 1.0.8,因为这是仍然满足您的约束的最新发布版本。
【讨论】:
berks update 是否在 Vagrant Box 中做任何事情,比如将食谱复制到 VM 中,例如 /etc/chef/。在做了更多研究之后,我发现它并没有这样做。但我仍然很好奇 chef-solo 在哪里找到食谱。