Haskell “阴谋集团”说的是什么意思;以下软件包可能因重新安装而损坏;
我在运行Haskell “阴谋集团”说的是什么意思;以下软件包可能因重新安装而损坏;,haskell,cabal,Haskell,Cabal,我在运行cabal v1 install时看到过几次弹出此消息,并建议使用--强制重新安装进行安装。由于我对阴谋集团了解不多,我不知道为什么一个包会因为重新安装而损坏。有人能告诉我这条消息背后的背景吗?未来读者注意:这次讨论是关于历史问题的。出于实际目的,如果你使用的是阴谋集团3,你可以安全地忽略所有这些 这个问题与可传递依赖性有关。例如,假设我们在特定版本上安装了以下三个软件包: A-1.0 B-1.0,这取决于A;及 C-1.0,它依赖于B,但不明确依赖于A 然后,我们将安装A-1.1,
cabal v1 install
时看到过几次弹出此消息,并建议使用--强制重新安装
进行安装。由于我对阴谋集团了解不多,我不知道为什么一个包会因为重新安装而损坏。有人能告诉我这条消息背后的背景吗?未来读者注意:这次讨论是关于历史问题的。出于实际目的,如果你使用的是阴谋集团3,你可以安全地忽略所有这些
这个问题与可传递依赖性有关。例如,假设我们在特定版本上安装了以下三个软件包:
李>A-1.0
,这取决于B-1.0
;及A
,它依赖于C-1.0
,但不明确依赖于B
A
A-1.1
,它似乎可以正常工作:
- 将安装
,但将保留较旧的A-1.1
版本,仅用于使用它构建的其他软件包李>A-1.0
将继续使用B-1.0
;及A-1.0
将继续使用C-1.0
B-1.0
B-1.0
(而不是更新到B-1.1
),就会出现问题:
和A-1.1
仍可用于其他需要它们的软件包李>A-1.0
- 然而,
将根据B-1.0
进行重建,无法保持相同版本A-1.1
的第二次安装;及B
,它是根据被替换的C-1.0
(依赖于B-1.0
)构建的,现在将被破坏A-1.0
v1安装
提供了防止此类危险重新安装的保护措施。使用--强制重新安装将禁用该保护装置
有关周围问题的详细解释,请参见Albert Y.C.Lai的(特别是,我在这里使用的示例基本上是其推论的总结:鸽子下降Con部分)
尽管Cabal 1在其更高版本中能够在上述场景中检测到重新安装的B
发生了变化,即使版本号保持不变(这是使安全保护成为可能的原因),但它无法同时保留B-1.0
的两个变体。另一方面,阴谋集团3能够做到这一点,从而消除了问题 只要可能,应避免使用v1-
命令,而应使用v2-
命令。后者是cabal install 3.0及以后的默认版本。