管理 Chocolatey 包依赖项
Manage Chocolatey package dependencies
我是 Chocolatey 的新手,我安装了 zulu 作为 Oracle Java (choco install zulu
) 的替代品。
然后我安装了一个需要 Java choco install pdfsam.install
的应用程序,它安装了 Oracle JRE 作为依赖项。我自以为聪明,后来,我尝试choco uninstall javaruntime
。但是我得到一个错误 "because 'pdfsam.install 3.3.2' depends on it.".
通过阅读命令的帮助,我看到了安装开关 --ignore-dependencies
和卸载开关 --force-dependencies
和 --force
.
前两个很清楚。所以我可以:
choco uninstall pdfsam.install --force-dependencies
choco install pdfsam.install --ignore-dependencies
至于 --force
,它的作用尚不清楚,因此不鼓励使用它:
--force
Force - force the behaviour. Do not use force during normal operation - it subverts some of the smart behaviour for commands.
这可能意味着卸载一个包,即使另一个包依赖它。 (谁知道?)
我的问题是:
- 如果我 运行 例程
choco upgrade all
删除依赖项怎么办?
- 我的应用只是一个例子。除了 JRE 之外,应用程序可能还有其他不可忽略的依赖项。我可以选择性地忽略依赖项吗?
当你强制卸载一个依赖项目时,一旦依赖项目更新,这个依赖将被重新安装。
例如:
一个包'foo'依赖于一个包'bar'
您决定安装 foo,因此也会安装 bar。
现在您可以强制卸载 bar,但 foo 仍保持安装状态 (choco uninstall bar --force)。
一旦你更新 foo,如果它仍然依赖于 bar,bar 将再次安装。
示例命令序列:
choco install foo
- 安装 foo 和 bar
choco uninstall bar
- bar 不会卸载并打印消息 foo 取决于它
choco uninstall bar --force
- 强制卸载(foo 是否仍然正常工作取决于包,无法判断某些未知包)
choco upgrade foo
- 这将升级 foo(如果存在更新版本)并确保满足所有依赖项 - 因此 bar 将再次安装
我已经将一个要点与此示例所需的 nuspec 和输出放在一起:
https://gist.github.com/mwallner/b10bcd6ccd1f7b3d65a56a06c8c8aa0a
关于你的第二个问题,我不知道是否可以选择性地忽略依赖项,也许 ferventcoder 可以提供帮助。
首次安装时,您将希望使用 --ignore-depdendencies
(或明确指定的升级),然后打开 useRememberedArgumentsForUpgrades
功能。然后,当您升级时,它可能会继续忽略依赖项(只要那不是被忽略的开关之一)。
如果您发现它不是被忽略的,请在 https://github.com/chocolatey/choco/issues/new 提交一张票,让我们将其添加为增强功能。
我是 Chocolatey 的新手,我安装了 zulu 作为 Oracle Java (choco install zulu
) 的替代品。
然后我安装了一个需要 Java choco install pdfsam.install
的应用程序,它安装了 Oracle JRE 作为依赖项。我自以为聪明,后来,我尝试choco uninstall javaruntime
。但是我得到一个错误 "because 'pdfsam.install 3.3.2' depends on it.".
通过阅读命令的帮助,我看到了安装开关 --ignore-dependencies
和卸载开关 --force-dependencies
和 --force
.
前两个很清楚。所以我可以:
choco uninstall pdfsam.install --force-dependencies
choco install pdfsam.install --ignore-dependencies
至于 --force
,它的作用尚不清楚,因此不鼓励使用它:
--force
Force - force the behaviour. Do not use force during normal operation - it subverts some of the smart behaviour for commands.
这可能意味着卸载一个包,即使另一个包依赖它。 (谁知道?)
我的问题是:
- 如果我 运行 例程
choco upgrade all
删除依赖项怎么办? - 我的应用只是一个例子。除了 JRE 之外,应用程序可能还有其他不可忽略的依赖项。我可以选择性地忽略依赖项吗?
当你强制卸载一个依赖项目时,一旦依赖项目更新,这个依赖将被重新安装。
例如:
一个包'foo'依赖于一个包'bar' 您决定安装 foo,因此也会安装 bar。
现在您可以强制卸载 bar,但 foo 仍保持安装状态 (choco uninstall bar --force)。 一旦你更新 foo,如果它仍然依赖于 bar,bar 将再次安装。
示例命令序列:
choco install foo
- 安装 foo 和 bar
choco uninstall bar
- bar 不会卸载并打印消息 foo 取决于它
choco uninstall bar --force
- 强制卸载(foo 是否仍然正常工作取决于包,无法判断某些未知包)
choco upgrade foo
- 这将升级 foo(如果存在更新版本)并确保满足所有依赖项 - 因此 bar 将再次安装
我已经将一个要点与此示例所需的 nuspec 和输出放在一起: https://gist.github.com/mwallner/b10bcd6ccd1f7b3d65a56a06c8c8aa0a
关于你的第二个问题,我不知道是否可以选择性地忽略依赖项,也许 ferventcoder 可以提供帮助。
首次安装时,您将希望使用 --ignore-depdendencies
(或明确指定的升级),然后打开 useRememberedArgumentsForUpgrades
功能。然后,当您升级时,它可能会继续忽略依赖项(只要那不是被忽略的开关之一)。
如果您发现它不是被忽略的,请在 https://github.com/chocolatey/choco/issues/new 提交一张票,让我们将其添加为增强功能。