【问题标题】:Manage Chocolatey package dependencies管理 Chocolatey 包依赖项
【发布时间】:2017-12-24 13:34:23
【问题描述】:

我是 Chocolatey 的新手,我安装了 zulu 作为 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,目前还不清楚它的作用,也不鼓励使用它:

--强制
强制 - 强制行为。在正常操作期间不要使用武力 - 它会破坏命令的一些智能行为。

这可能意味着卸载一个包,即使另一个包依赖于它。 (谁知道?)

我的问题是:

  1. 如果我运行例程 choco upgrade all 以删除依赖项怎么办?
  2. 我的应用程序只是一个示例。除了 JRE,应用程序可能还有其他不可忽略的依赖项。我可以选择性地忽略依赖项吗?

【问题讨论】:

    标签: java dependencies package chocolatey


    【解决方案1】:

    当你强制卸载一个依赖项目时,一旦依赖项目得到更新,这个依赖将被重新安装。

    例如:

    一个包'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

    • 强制 bar 卸载(如果 foo 仍然正常工作或不能正常工作取决于包,无法判断某些未知包)

    choco upgrade foo

    • 这将升级 foo(如果存在更新的版本)并确保满足所有依赖项 - 因此 bar 将再次安装

    我已经将一个要点与所需的 nuspecs 和此示例的输出放在一起: https://gist.github.com/mwallner/b10bcd6ccd1f7b3d65a56a06c8c8aa0a

    关于你的第二个问题,我不知道是否可以选择性地忽略依赖项,也许 ferventcoder 可以在这里提供帮助。

    【讨论】:

    • 所以从一开始就使用--ignore-depdendencies 安装,然后打开useRememberedArgumentsForUpgrades 功能。那么当你升级的时候,它会继续忽略依赖(也许?)
    【解决方案2】:

    当您第一次安装时,您会想要使用--ignore-depdendencies(或在明确指定的升级上),然后打开useRememberedArgumentsForUpgrades 功能。然后,当您升级时,它可能会继续忽略依赖项(只要它不是被忽略的开关之一)。

    如果您发现它不是被忽略的,请在https://github.com/chocolatey/choco/issues/new 提交工单,让我们将其添加为增强功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多