2017-07-19 91 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