首页 > 解决方案 > Haskell:安装 pureMD5 包

问题描述

我试图判断两个文件是否可能相同,并发现我可以从这个 StackOverflow 线程在 Haskell 中创建一个 MD5 哈希:Compute MD5 digest of file in Haskell

当我尝试安装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 的新手。

标签: haskellmd5cabal

解决方案


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

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


推荐阅读