gpt4 book ai didi

haskell - cabal 的依赖 hell 。真的是 hell

转载 作者:行者123 更新时间:2023-12-04 15:10:21 26 4
gpt4 key购买 nike

不同的编程语言使用不同的打包系统。

Java 的 Maven 采用各种不同的方法。对我来说似乎是最好的选择,因为它在不同版本的文件夹中维护不同版本的 jar 文件,因此,没有办法最终导致库的版本冲突。

接下来是 python 。 Python的pip将其包裹放入/usr/local/lib/python/dist-packages/site-packages .当有版本冲突时,可以使用它的virtualenv和它一起生活。

Nodejs 支持在本地文件夹和全局文件夹中安装包。到目前为止,我从未在全局库中遇到过依赖冲突。

然后我被haskell的风格迷住了,开始使用cabal .首先,我在 /home/user1/.cabal 中安装了我的库。 .然后当包系统崩溃时,一位 friend 建议我删除两个文件夹 - /home/user1/.cabal && /home/user1/.ghc .现在,我的第一个困惑出现了,为什么 cabal 的库文件位于两个文件夹中 .cabal && .ghc .我清理了库文件夹,~/.ghc and ~/.cabal并做了cabal install来自 cabal-db-0.1.12 的包源.现在,出现了一个新错误,我很惊讶,因为我已经清理了所有本地存储库。错误是,

Configuring Cabal-1.22.2.0...
Building Cabal-1.22.2.0...
Installed Cabal-1.22.2.0
cabal: Error: some packages failed to install:
ansi-terminal-0.6.2.1 failed during the configure step. The exception was:
user error (The package 'ansi-terminal' requires Cabal library version -any &&
>=1.6 but no suitable version is installed.)

然后我尝试了最安全的赌注—— sandbox对于 cabal-db .有效。然后我对另一个包 ghc-pkg-autofix 重复沙盒。我做到了,
cd ghc-pkg-autofix-0.2.0.1
cabal sandbox init
cabal install

而对于绝对没有外部依赖的沙箱,又会出现错误,
cabal: Could not resolve dependencies:
trying: ghc-pkg-autofix-0.2.0.1 (user goal)
trying: Cabal-1.22.2.0 (dependency of ghc-pkg-autofix-0.2.0.1)
next goal: process (dependency of ghc-pkg-autofix-0.2.0.1)
rejecting: process-1.2.0.0/installed-06c..., 1.2.3.0, 1.2.2.0, 1.2.1.0,
1.2.0.0, 1.1.0.2, 1.1.0.1, 1.1.0.0 (conflict: ghc-pkg-autofix => process>=1.0
&& <1.1)
rejecting: process-1.0.1.5, 1.0.1.4, 1.0.1.3, 1.0.1.2, 1.0.1.1, 1.0.0.0
(conflict: Cabal => process>=1.1.0.1 && <1.3)
Dependency tree exhaustively searched.

Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.

我做错了什么(或)这种依赖冲突在 cabal 中很常见吗?我明白了,用其他语言管理依赖项要简单得多。

注意:我使用 cabal-install version 1.22.0.0 && The Glorious Glasgow Haskell Compilation System, version 7.8.4

最佳答案

“对于绝对没有外部依赖的沙箱”,这是不正确的。沙盒仍然依赖于全局包数据库。诸如 Cabal、GHC、进程之类的东西通常安装在全局包数据库中。在这里,您要安装需要进程 1.0 的 ghc-pkg-autofix,但您已经安装了更新版本的进程。你确定你需要 ghc-pkg-autofix,它似乎很老了。

关于haskell - cabal 的依赖 hell 。真的是 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com