Haskell: 安装 pureMD5 包

Haskell: Install pureMD5 package

我试图判断两个文件是否可能相同,发现我可以从这个 Whosebug 线程 Haskell 中生成 MD5 散列:

当我尝试安装 pureMD5 时,出现错误:

$ cabal install --lib pureMD5
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: base-4.12.0.0/installed-4.1... (user goal)
[__1] trying: ghc-8.6.5/installed-8.6... (user goal)
[__2] next goal: process (user goal)
[__2] rejecting: process-1.6.6.0 (conflict: ghc =>
process==1.6.5.0/installed-1.6...)
[__2] rejecting: process-1.6.5.1, process-1.6.5.0/installed-1.6...,
process-1.6.5.0, process-1.6.4.0, process-1.6.3.0, process-1.6.2.0,
process-1.6.1.0, process-1.6.0.0, process-1.5.0.0, process-1.4.3.0,
process-1.4.2.0, process-1.4.1.0, process-1.4.0.0, process-1.3.0.0,
process-1.2.3.0, process-1.2.2.0, process-1.2.1.0, process-1.2.0.0,
process-1.1.0.2, process-1.1.0.1, process-1.1.0.0, process-1.0.1.5,
process-1.0.1.4, process-1.0.1.3, process-1.0.1.2, process-1.0.1.1,
process-1.0.0.0 (constraint from user target requires ==1.6.6.0)
[__2] fail (backjumping, conflict set: ghc, process)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: process, base, ghc

我不知道从这里到哪里去,我是 Haskell 的新手。

这是一个与 pureMD5 无关的 cabal 问题(我相信)。您可以尝试使用不同的环境进行安装:

cabal new-install --package-env=SomeNewEnv --lib pureMD5

这应该行得通。但为什么?好吧,您当前安装包的环境看起来像这样:

cat ~/.ghc/x86_64-darwin-8.6.4/environments/default | tail
package-id rts
package-id terminfo-0.4.1.2
package-id transformers-0.5.6.2
package-id deepseq-1.4.4.0
package-id ghc-boot-th-8.6.4
package-id pretty-1.1.3.6
package-id template-haskell-2.14.0.0
package-id directory-1.3.3.0
package-id txt-1.2.4.0-09ee5c37
package-id mtl-2.2.2

所以你看到它修复了一个特定的包版本 - 对你来说它可能保留 process-1.6.5.0。如果您删除此文件,那么 process-1.6.6.0 的尝试安装将成功,并且安装将在没有 --package-env.

的情况下进行

再次强调,这是基于错误的猜测以及我认为您的系统状态 - 请进行测试并报告。

编辑:出于好奇,错误是 https://github.com/haskell/cabal/issues/5559