2017-03-27 72 views
1

例如。如何覆盖依赖版本,当写封装食谱,厨师

我写我使用的社区食谱(community_cookbook)相同目的的包装食谱(my_cookbook)。我面临着一个关于community_cookbook中存在的依赖列表的问题。

metadata.rb文件community_cookbook具有以下相关性列表。

... 
depends mysql 
depends postfix 
... 

所以,在默认情况下运行列表中有mysql的食谱的最新版本(8.3.0说)。

我的问题是我应该做些什么改变才能得到以前版本的mysql(比如5.3.6)。

++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++

我采取了哪些措施解决此问题?

答:

我写的my_cookbookmetadata.rb以下。

... 
    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. 

回答

1

您可能手动更改了Berksfile.lock并导致上述问题。

你能否尝试删除Berksfile.lock(带备份)并做berks安装然后上传?

应该安装mysql食谱 的所有必要的版本,然后所有的食谱可以有MySQL的版本,他们需要

0

这听起来像你有你的Berkfile或Policyfile时髦的东西在这下面的消息。检查那里的意外版本引脚,并可能运行berks update来强制重新解决。 user-specified-dependency意味着约束来自Cookbook系统之外,通常通过Berksfile中的手动cookbook 'mysql', '8.3.0',但还有其他方式,如环境约束或运行列表版本黑客。

+0

哦,我明白了。所以,我试图覆盖依赖关系(问题描述)的方式,它会正常工作吗? – srajappa

+1

你有什么可以,特别是在用户指定的依赖关系,这是在工作中投掷扳手。 – coderanger