安装 Haskell 依赖项,例如 `pip -r requirements.pip`

Installing Haskell dependencies like `pip -r requirements.pip`

我是 Haskell 的新手,在使用 cabal 时遇到问题。

执行以下操作,

$ cabal sandbox init
$ cabal install parsec alex happy haddock mtl

其次是

$ cabal configure --enable-tests
Resolving dependencies...
Configuring Scheme-0.1.0.0...
cabal: At least the following dependencies are missing:
alex >=2.3, cabal >=1.22, haddock >=2.15, happy >=1.18

我正在使用

$ cabal --version                        
cabal-install version 1.22.8.0
using version 1.22.7.0 of the Cabal library 

我删除了沙盒并创建了一个新的

$ cabal sandbox remove
$ cabal sandbox init

这样我就可以使用:

$ cabal install --dependencies-only
$ cabal configure --enable-tests

但是我遇到了同样的问题,就是两者都产生了同样的错误,即

Resolving dependencies...
Configuring Scheme-0.1.0.0...
cabal: At least the following dependencies are missing:
alex >=2.3,
cabal >=1.22,
doctest >=0.8,
haddock >=2.15,
happy >=1.18

这是我的 .cabal 文件,

name:                       Scheme
version:                    0.1.0.0
license:                    MIT
license-file:               LICENSE
category:                   Language
build-type:                 Simple
cabal-version:              >=1.10

executable Scheme
  main-is:             Main.hs
  ghc-options:         -Wall
  hs-source-dirs:      src/
  default-language:    Haskell2010
  build-depends:       base >=4.6 && <4.9
                       , cabal >=1.22
                       , parsec >=3.1 && <3.2
                       , alex >=2.3
                       , happy >=1.18
                       , haddock >=2.15
                       , mtl >=2.2.1

test-suite doctests
  default-language:   Haskell2010
  type:               exitcode-stdio-1.0
  ghc-options:        -threaded
  main-is:            doctests.hs
  build-depends:      base >=4.6 && <4.9
                       , alex >=2.3
                       , happy >=1.18
                       , haddock >=2.13
                       , doctest >= 0.8

即使没有沙箱,我也会遇到同样的问题。

在 Python 和 pip 中,这只是使用 virtualenv 并执行 pip install -r requirements.pip 的问题,如果有这样一个指定依赖关系的文件的话。我想经历一个类似的过程,但是 cabal.

我的方法有什么问题?

所以你的问题是

cabal: At least the following dependencies are missing:
alex >=2.3, cabal >=1.22, haddock >=2.15, happy >=1.18

这里缺少的部分是不是库而是程序。你有 运行 cabal install,但是这会将它们安装到一个特殊的 cabal bin 文件夹中,通常在 ~/.cabal/bin 的 unix 下供用户安装。 (在 mac 和 windows 的不同位置)。

因此您需要确保 bin 目录在您的路径中, 您需要将这些可执行文件移动到 /usr/bin 或类似的已经在你的路上了。