2017-03-27 73 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