【问题标题】:What exactly does "berks update <cookbook-name>" do?“berks update <cookbook-name>”到底是做什么的?
【发布时间】:2014-01-28 20:29:55
【问题描述】:

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

“更新 Berksfile 中指定的说明书(和依赖项)”

(是的……就是这么说的!)。

但这究竟是什么意思?

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

【问题讨论】:

    标签: chef-infra berkshelf berksfile


    【解决方案1】:

    更新命令将尝试查找每本说明书的最新版本(仍满足您定义的任何版本要求)。例如,假设您有以下 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 食谱版本:

    • 1.0.5
    • 1.0.6
    • 1.0.8
    • 1.1.0
    • 2.0.0

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

    【讨论】:

    • 它是否也在虚拟机中放置了一份说明书?
    • 什么虚拟机?我没看到你在哪里提到过虚拟机?
    • 我很好奇berks update 是否在 Vagrant Box 中做任何事情,比如将食谱复制到 VM 中,例如 /etc/chef/。在做了更多研究之后,我发现它并没有这样做。但我仍然很好奇 chef-solo 在哪里找到食谱。
    • @Erasmose - 我没有询问流浪汉背景下的 berkshelf 行为。如果您对此感到好奇,请随时提出新问题。
    • 你需要使用 vagrant-berkshelf 之类的东西。
    猜你喜欢
    • 2013-02-06
    • 2015-08-06
    • 2013-09-02
    • 2014-01-02
    • 2013-10-10
    • 2017-05-08
    • 2022-01-20
    • 2012-10-17
    • 2017-06-15
    相关资源
    最近更新 更多