如何将GHC与不在当前工作目录中的阴谋集团沙箱一起使用?

泽塔

如果我使用创建了一个综合沙箱cabal sandbox init,则可以在不创建项目的情况下使用cabal replcabal exec ghc(i)使用这些包:

$ mkdir /tmp/example && cd /tmp/example
$ cabal sandbox init
$ cabal install QuickCheck
$ cabal exec ghci
Prelude> :m Test.QuickCheck
Prelude Test.QuickCheck>

但是,如果我将路径更改为其他路径,甚至更改为子目录,那么我将无法再访问软件包:

$ mkdir -p /tmp/example/sub && cd /tmp/example/sub
$ cabal exec ghci
Prelude> :m Test.QuickCheck
<no location info>:
    Could not find module ‘Test.QuickCheck’
    It is not a module in the current program, or in any known package.

有什么方法可以使用沙箱中的内容,而无需复制其内容?

泽塔

问题在于,cabal它将仅尊重当前工作目录中的沙箱。但是,有几个选项可以为Cabal指定沙箱位置,也可以为GHC指定包装数据库。

使用阴谋特征

您可以使用cabal--sandbox-config-file选项来指定沙箱配置,例如

$ cabal --sandbox-config-file=/tmp/example/cabal.sandbox.config exec ghci
Prelude> :m Test.QuickCheck
Prelude Test.QuickCheck>   

这也使您能够从其他位置更改沙箱,如果您只想将随机内容安装到临时位置,这将很方便:

$ cabal --sandbox-config-file=/tmp/example/cabal.sandbox.config install lens
$ cabal --sandbox-config-file=/tmp/example/cabal.sandbox.config repl
Prelude> :m Control.Lens
Prelude Control.Lens> :m Test.QuickCheck
Prelude Control.Lens Test.QuickCheck>

由于过一会儿这很麻烦,您可能应该添加一个别名

$ alias sandboxed-cabal="cabal --sandbox-config-file=/tmp/example/cabal.sandbox.config"
$ sandboxed-cabal repl
Prelude>

使用 ghc -package-db

另外,将GHC与-package-db以下命令配合使用时,您可以直接指定软件包数据库

$ ghci -package-db /tmp/example/.cabal-sandbox/<ARCH>-packages.conf.d
Prelude> :m Test.QuickCheck
Prelude Test.QuickCheck>

具体<ARCH>取决于您的系统和使用的GHC,例如在64位Linux和GHC 7.10.3上x86_64-linux-ghc-7.10.3-packages.conf.d然后,您可以使用该数据库中的所有软件包:

$ ghci -package-db /tmp/example/.cabal-sandbox/<ARCH>-packages.conf.d
Prelude> :m Control.Lens
Prelude Control.Lens> 

同样,别名应该派上用场。

使用 GHC_PACKAGE_PATH

最后但并非最不重要的一点是,您可以调整环境变量。但是,如果环境变量GHC_PACKAGE_PATH存在,它将覆盖GHC的常规软件包数据库,因此您也需要检查ghc-pkg list并添加它们

$ GHC_PACKAGE_PATH=/opt/ghc/7.10.3/lib/ghc-7.10.3/package.conf.d/:/tmp/example/.cabal-sandbox/x86_64-linux-ghc-7.10.3-packages.conf.d ghci

或使用-global-package-db-user-package-db重新启用它们:

$ GHC_PACKAGE_PATH=/tmp/example/.cabal-sandbox/x86_64-linux-ghc-7.10.3-packages.conf.d ghci -global-package-db -user-package-db

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将GHC与不在当前工作目录中的阴谋集团沙箱一起使用?

来自分类Dev

Jupyter Notebook如何导入不在当前工作目录中的模块?

来自分类Dev

如何在当前工作目录中为 atom 包创建一个新文件?

来自分类Dev

使用Python在当前工作目录中打印对象的路径

来自分类Dev

如何将 Python 程序的当前工作目录更改为用户的主目录?

来自分类Dev

如何将工作目录设置为当前工作空间?

来自分类Dev

将文件从一个目录复制并粘贴到当前工作目录中

来自分类Dev

如何将当前工作目录挂载到Docker容器上?

来自分类Dev

如何将数据框的csv写入当前工作目录python

来自分类Dev

AutoHotKey:如何将当前工作目录的“修改日期”放入剪贴板?

来自分类Dev

阴谋集团沙箱+ Haskeline

来自分类Dev

如何使用位于当前工作目录之外的目录中的图像文件创建新的Image()

来自分类Dev

在当前工作目录中导入模块

来自分类Dev

为什么select.files()在当前工作目录中没有打开?

来自分类Dev

在当前工作目录的最近祖先中查找特定文件

来自分类Dev

从Windows CMD在当前工作目录中启动ubuntu.exe

来自分类Dev

在当前工作目录中打开 Cygwin.bat 文件 (Windows 10)

来自分类Dev

如何在Cmdlet中获取当前工作目录

来自分类Dev

如何在Xquery中获取当前工作目录?

来自分类Dev

如何在Git中更改当前工作目录?

来自分类常见问题

如何使用python 3获取当前工作目录?

来自分类Dev

如何使用AppleScript更改当前工作目录

来自分类Dev

如何使用vba获取当前工作目录?

来自分类Dev

当宏在当前工作簿上时使用另一个工作簿

来自分类Dev

如何使用`gedit admin://`打开当前工作目录中的文本文件?

来自分类Dev

GHC在阴谋沙箱中找不到模块

来自分类Dev

如何更改当前工作目录

来自分类Dev

如何更改当前工作目录?

来自分类Dev

Xcode:如何将当前工作目录设置为可执行文件的相对路径?

Related 相关文章

  1. 1

    如何将GHC与不在当前工作目录中的阴谋集团沙箱一起使用?

  2. 2

    Jupyter Notebook如何导入不在当前工作目录中的模块?

  3. 3

    如何在当前工作目录中为 atom 包创建一个新文件?

  4. 4

    使用Python在当前工作目录中打印对象的路径

  5. 5

    如何将 Python 程序的当前工作目录更改为用户的主目录?

  6. 6

    如何将工作目录设置为当前工作空间?

  7. 7

    将文件从一个目录复制并粘贴到当前工作目录中

  8. 8

    如何将当前工作目录挂载到Docker容器上?

  9. 9

    如何将数据框的csv写入当前工作目录python

  10. 10

    AutoHotKey:如何将当前工作目录的“修改日期”放入剪贴板?

  11. 11

    阴谋集团沙箱+ Haskeline

  12. 12

    如何使用位于当前工作目录之外的目录中的图像文件创建新的Image()

  13. 13

    在当前工作目录中导入模块

  14. 14

    为什么select.files()在当前工作目录中没有打开?

  15. 15

    在当前工作目录的最近祖先中查找特定文件

  16. 16

    从Windows CMD在当前工作目录中启动ubuntu.exe

  17. 17

    在当前工作目录中打开 Cygwin.bat 文件 (Windows 10)

  18. 18

    如何在Cmdlet中获取当前工作目录

  19. 19

    如何在Xquery中获取当前工作目录?

  20. 20

    如何在Git中更改当前工作目录?

  21. 21

    如何使用python 3获取当前工作目录?

  22. 22

    如何使用AppleScript更改当前工作目录

  23. 23

    如何使用vba获取当前工作目录?

  24. 24

    当宏在当前工作簿上时使用另一个工作簿

  25. 25

    如何使用`gedit admin://`打开当前工作目录中的文本文件?

  26. 26

    GHC在阴谋沙箱中找不到模块

  27. 27

    如何更改当前工作目录

  28. 28

    如何更改当前工作目录?

  29. 29

    Xcode:如何将当前工作目录设置为可执行文件的相对路径?

热门标签

归档