2017-07-19 145 views
1

我是Chocolatey的新手,我安裝了祖魯語作爲Oracle Java(choco install zulu)的替代品。 然後我安裝了一個需要Java choco install pdfsam.install的應用程序,它安裝了Oracle JRE作爲依賴項。我認爲很聰明,後來,我試圖choco uninstall javaruntime。但是我得到一個錯誤「,因爲'pdfsam.install 3.3.2'依賴於它。」管理巧克力包依賴項

通過閱讀命令的幫助,我看到安裝開關--ignore-dependencies和卸載開關--force-dependencies--force
前兩個是清楚的。所以,我可以:

choco uninstall pdfsam.install --force-dependencies 
choco install pdfsam.install --ignore-dependencies 

至於--force,目前還不清楚它做什麼和它的使用是一種勸阻:

--force
力 - 強制行爲。正常操作時不要使用強制 - 它會顛覆一些命令的智能行爲。

這可能意味着卸載程序包,即使其他程序包依賴於它。 (誰知道?)

我的問題是:

  1. ,如果我跑什麼程序choco upgrade all以去除依賴呢?
  2. 我的應用程序只是一個例子。除JRE之外,應用程序可能還有其他不可忽略的依賴關係。我可以選擇性地忽略依賴性嗎?

回答

1

當您第一次安裝時,您將需要使用--ignore-depdendencies(或明確指定的升級),然後打開useRememberedArgumentsForUpgrades功能。然後,當你升級時,它可能會繼續忽略依賴關係(只要這不是被忽略的開關之一)。

如果不是你發現的不存在的話,請在https://github.com/chocolatey/choco/issues/new處提交一張票以讓我們將其作爲增強添加。

1

當你強制卸載一個依賴項目時,一旦依賴項目得到更新,這個依賴將被重新安裝。

爲例:

包「富」取決於包「酒吧」 您決定安裝FOO上,因此酒吧被安裝了。

現在你可以強制卸載吧,但foo仍然保持安裝(choco卸載欄--force)。 只要你更新foo,如果它仍然對bar有依賴性,bar會重新安裝。

樣本命令序列:

choco install foo

  • foo和酒吧得到安裝

choco uninstall bar

  • 欄將無法卸載和打印消息foo依賴於它

choco uninstall bar --force

  • 力條來卸載(如果富仍然工作正常與否依賴於包,沒有辦法知道一些未知的包)

choco upgrade foo

  • 這將升級foo(如果存在更新的版本)並確保滿足所有相關性 - 因此bar將再次安裝

我已經把所要求的nuspecs和輸出在這個例子中一個要點: https://gist.github.com/mwallner/b10bcd6ccd1f7b3d65a56a06c8c8aa0a

爲你的第二個問題,我不知道這是否是可能的有選擇地忽略依賴,也許ferventcoder可以在這裏幫助。

+0

因此,從'getign-depdendencies'安裝,然後打開'useRememberedArgumentsForUpgrades'功能。那麼當你升級時,它會繼續忽略依賴關係(也許?) – ferventcoder

+0

@ferventcoder:你可以把它變成一個答案嗎? – antonio