等同于 "pip install -U -r requirements.txt" 的 Cabal?

Equivalent of "pip install -U -r requirements.txt" for Cabal?

在 Python 中有一个 pip install -U -r requirements.txt 咒语来安装文件 requirements.txt 中列出的版本中的所有包,通常在 virtualenv 中。

Cabal/Haskell中有类似的东西吗?毕竟,cabal 似乎有 cabal list --installed 这使得理论上可以为 cabal 沙箱做类似的事情。

要安装 your-package.cabal 中指定的所有依赖项,您可以 运行

cabal install --only-dependencies

如果您创建了沙箱,依赖项将安装在那里。

提示:我通常运行 cabal install --only-dependencies --enable-tests也会安装测试依赖项。


cabal list --installed 列出沙箱中的包。

If there is a sandbox in the current directory and config:ignore-sandbox is False, use the sandbox package database. Otherwise, use the package database specified with --package-db. If not specified, use the user package database.

例如

~/range-set-list % cabal list --installed|grep -c lens
0
~ % cabal list --installed|grep -c lens
2
~ % cabal list --installed|grep lens   
* lens
    Homepage: http://github.com/ekmett/lens/

或者您可以采用较低级别的方法:

~/range-set-list % ll .cabal-sandbox/lib/x86_64-osx-ghc-7.8.3
total 0
drwxr-xr-x@  6 ogre  staff  204 Dec 23 16:50 ansi-terminal-0.6.2.1
drwxr-xr-x@  6 ogre  staff  204 Dec 23 16:50 ansi-wl-pprint-0.6.7.1
drwxr-xr-x@  6 ogre  staff  204 Dec 23 16:50 mtl-2.2.1
drwxr-xr-x@  6 ogre  staff  204 Dec 23 16:51 optparse-applicative-0.11.0.1
drwxr-xr-x@  6 ogre  staff  204 Dec 23 16:51 parsec-3.1.7
...

看起来并不是所有的东西都安装在沙盒中。仍然从全局数据库中获取某些内容?