我想使用haste-compiler包来执行haskell-to-javascript的事情:
jsnavely@beefy:~/project$ cabal install haste-compiler
Resolving dependencies...
...
Configuring zip-archive-0.2.3...
Building zip-archive-0.2.3...
Preprocessing library zip-archive-0.2.3...
[1 of 1] Compiling Codec.Archive.Zip ( src/Codec/Archive/Zip.hs, dist/build/Codec/Archive/Zip.o )
src/Codec/Archive/Zip.hs:163:27: Not in scope: `decodeOrFail'
Failed to install zip-archive-0.2.3
cabal: Error: some packages failed to install:
haste-compiler-0.3 depends on zip-archive-0.2.3 which failed to install.
zip-archive-0.2.3 failed during the building phase. The exception was:
ExitFailure 1
我注意到有一个较新版本的zip-archive将二进制版本提升为> = 0.7,它提供decodeOrFail
功能。所以我尝试检查haste-compiler repo并将zip-archive版本提升到新的zip-archive 0.2.3.2。但这没有帮助:
jsnavely@beefy:~/project/haste-compiler$ cabal install
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: haste-compiler-0.3 (user goal)
trying: zip-archive-0.2.3.2/installed-208... (dependency of
haste-compiler-0.3)
trying: ghc-7.6.3/installed-0d1... (dependency of haste-compiler-0.3)
next goal: bin-package-db (dependency of ghc-7.6.3/installed-0d1...)
rejecting: bin-package-db-0.0.0.0/installed-837... (conflict: zip-archive =>
binary==0.7.1.0/installed-961..., bin-package-db =>
binary==0.5.1.1/installed-5b8...)
Dependency tree exhaustively searched.
我还尝试手动安装zip-archive和binary,并在沙盒中完成所有这些操作。我不知道该怎么做 - 我真的很想用良好类型的haskelly goodness替换我的所有javascript。我在我的macbookpro和我的linux盒子上遇到同样的问题,两者都运行最新的haskell-platform,ghc version 7.6.3
答案 0 :(得分:8)
你的依赖树看起来像这样:
┌────────────────────┐
┌─────────┤ haste─compiler─0.3 │
│ depends └─────────────────┬──┘
V │
┌───────────┐ │ depends
│ ghc─7.6.3 │ │
└─────┬─────┘ V
│ depends ┌─────────────────────┐
V │ zip─archive─0.2.3.2 │
┌────────────────────────┐ └───────────┬─────────┘
│ bin─package─db─0.0.0.0 │ │
└───────────┬────────────┘ │ depends
│ depends │
V V
┌────────────────┐ conflicts with ┌────────────────┐
│ binary─0.5.1.1 │<────────────────>│ binary─0.7.1.0 │
└────────────────┘ └────────────────┘
由于您可能无法重新安装GHC,因此它及其下方的所有内容都已为我们“修复”,我们将不得不尝试更改zip-archive-0.2.3.2
和binary-0.7.1.0
。让我们看看haste-compiler-0.3
:
zip-archive
因此它根本没有指定版本。任何会做的。如果我们查看以前版本的zip-archive
,我们会发现版本0.2.2.1是最早版本,其binary
约束与已构建在Hackage上的已安装binary-0.5.1.1
兼容。所以这是你应该如何解决它:
按顺序取消注册zip-archive-0.2.3.2
和binary-0.7.1.0
:
% ghc-pkg unregister zip-archive-0.2.3.2
% ghc-pkg unregister binary-0.7.1.0
从GHC库目录中删除这两个包。这取决于您的安装,但请查看~/.ghc
,~/.cabal
和~/Library/Haskell
以查找lib
目录(可能在一个或两个子目录中),看看您是否可以在某处找到包裹。
使用haste-compiler-0.3
版本的约束安装zip-archive
:
% cabal install --constraint='zip-archive==0.2.2.1' haste-compiler==0.3
这应该有用,但我自己没试过,所以可能会出错。