例如。
我正在编写包装食谱( my_cookbook
),其目的与我使用社区食谱( community_cookbook
)相同。我遇到了与 community_cookbook
中存在的依赖关系列表有关的问题。
metadata.rb
中的community_cookbook
文件具有以下依赖关系列表。
...
depends mysql
depends postfix
...
因此,默认情况下,运行列表具有mysql cookbook的最新版本(比如说8.3.0)。
我的问题是我应该做些什么更改才能获得mysql
的先前版本(比如5.3.6)。
+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
我采取了哪些措施来解决这个问题?
答:我在 metadata.rb
的my_cookbook
中写了以下内容。
...
depends 'mysql', '~> 5.6.3'
depends 'community_cookbook', '~> 1.1.0'
...
我在控制台上收到以下消息
>>>>>> Failed to complete #converge action: [Unable to satisfy the following requirements:
- `mysql (= 8.3.0)` required by `user-specified dependency`
- `mysql (~> 5.6.3)` required by `my_cookbook-0.1.0`
- `mysql (>= 0.0.0)` required by `community_cookbook-1.1.0`
- `mysql (>= 6.0.0)` required by `php-3.0.0` # This is because the community_cookbook also has php as it's dependency list.
答案 0 :(得分:1)
您可能手动更改了Berksfile.lock,导致上述问题。
你可以尝试删除Berksfile.lock(进行备份)并执行berks install然后上传吗?
它应该安装所有必需的mysql cookbook版本 然后所有的食谱都可以有他们需要的mysql版本
答案 1 :(得分:0)
听起来你的Berkfile或Policyfile中有一些时髦的东西。检查那里的非预期版本引脚,并可能运行berks update
以强制重新解决。 user-specified-dependency
表示约束来自于食谱系统之外,通常是通过Berksfile中的手动cookbook 'mysql', '8.3.0'
,但还有其他方式,如环境约束或运行列表版本黑客。