【问题标题】:How can I change the directory where cabal stores the documentation如何更改 cabal 存储文档的目录
【发布时间】:2014-03-23 02:51:31
【问题描述】:

我安装了一个带有前缀 $HOME/usr 的自定义 Haskell 工具链,因此编译器位于 $HOME/usr/bin/ghc 中,文档位于 $HOME/usr/share/doc/ghc/... 中。该工具链包含一个ghc 安装、一个cabal 安装以及您需要的所有库。我以某种方式设置了$PATH,所有这些程序都在其中。我的系统上没有安装这些工具。

现在我尝试安装一些其他库。但是当 cabal 尝试安装文档时,我总是遇到同样的错误:

~$ cabal install --global 二进制 解决依赖关系... 配置二进制 0.5.0.2... 预处理库 binary-0.5.0.2... 构建二进制 0.5.0.2... ...剪断... 正在注册 binary-0.5.0.2... 阴谋集团:/usr/local/share/doc:权限被拒绝

我如何告诉 cabal 文档应该放在哪里?我不想在 shell 中一次又一次地提供这些信息,所以最好是一个配置文件。我想在我的 home 树中拥有所有与 haskell 相关的东西,以避免使用错误的命令破坏我的系统。

【问题讨论】:

    标签: haskell configuration-files cabal


    【解决方案1】:

    为什么要使用“--global”安装?默认情况下,这会将所有内容放在 /usr/local/ 中。如果您执行标准的每用户安装,文档将安装到您的主目录中,它应该可以正常工作。

    话虽如此,这可以通过文件进行配置。 cabal 配置文件通常位于~/.cabal/config/。这是我的相关部分:

    install-dirs global
      -- prefix: /usr/local
      -- bindir: $prefix/bin
      -- libdir: $prefix/lib
      -- libsubdir: $pkgid/$compiler
      -- libexecdir: $prefix/libexec
      -- datadir: $prefix/share
      -- datasubdir: $pkgid
      -- docdir: $datadir/doc/$pkgid
      -- htmldir: $docdir/html
      -- haddockdir: $htmldir
    

    您可以进行任何您喜欢的更改,只需确保取消注释行。还有一个“install-dirs user”部分,用于按用户安装。

    【讨论】:

    • 只取消第一行的注释就足够了吗?
    • 我应该将 -- prefix:/usr/local 更改为 --prefix:~/mydir 还是 prefix:~/mydir 省略 2 个破折号 (--) ?另外,我可以剪切/usr/local/.cabal 文件夹以将其粘贴到~/mydir 中吗?
    【解决方案2】:

    我同意海报。为什么没有明确的文档说明如何做 cabal 安装包 --global 在需要许可时提示输​​入 sudo? 正在做 sudo cabal 安装包 是个坏主意,因为那时您正在以 root 身份构建包。而且您必须允许互联网连接写入 root 拥有的文件(您必须填充 /root/.cabal 或类似的东西)。

    这是人们想要这样做的一个很好的理由: 如果我通过我的 linux 包管理器安装 ghc 和 haskell 平台(这是有充分理由的;),那么如果我执行 cabal install package 它不会识别全球认可的包。

    【讨论】:

      【解决方案3】:

      好吧,实际上有人发布了(n 几乎令人讨厌的)关于如何进行全局安装(使用 --global 或 install-dirs global)的详细描述,而不会遇到权限错误。诀窍是在 cabal 配置文件中使用 root-cmd sudo。 看, http://jdgallag.wordpress.com/2011/05/14/cabal-install-to-global-using-sudo-but-do-not-build-as-root/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 2013-12-04
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        相关资源
        最近更新 更多