管理巧克力包依赖项
我是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
力 - 强制行为。正常操作时不要使用强制 - 它会颠覆一些命令的智能行为。
这可能意味着卸载程序包,即使其他程序包依赖于它。 (谁知道?)
我的问题是:
- ,如果我跑什么程序
choco upgrade all
以去除依赖呢? - 我的应用程序只是一个例子。除JRE之外,应用程序可能还有其他不可忽略的依赖关系。我可以选择性地忽略依赖性吗?
当您第一次安装时,您将需要使用--ignore-depdendencies
(或明确指定的升级),然后打开useRememberedArgumentsForUpgrades
功能。然后,当你升级时,它可能会继续忽略依赖关系(只要这不是被忽略的开关之一)。
如果不是你发现的不存在的话,请在https://github.com/chocolatey/choco/issues/new处提交一张票以让我们将其作为增强添加。
当你强制卸载一个依赖项目时,一旦依赖项目得到更新,这个依赖将被重新安装。
为例:
包“富”取决于包“酒吧” 您决定安装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可以在这里帮助。
因此,从'getign-depdendencies'安装,然后打开'useRememberedArgumentsForUpgrades'功能。那么当你升级时,它会继续忽略依赖关系(也许?) – ferventcoder
@ferventcoder:你可以把它变成一个答案吗? – antonio