如何更改 cabal 配置文件的路径?

8

我在Win7上使用HaskellPlatform-2012.4.0.0,它是便携安装的。路径是通过 .bat 文件管理,以便 ghcighc 可以正常工作。
但是,cabal默认会安装在C:\Users\name\AppData\Roaming\cabal\
为了避免这个问题,我进行了以下操作:

cabal update
edit config file
delete all files except config

修改的路径:

remote-repo-cache: d:\h1\cabal\packages 
world-file: d:\h1\cabal\world
build-summary: d:\h1\cabal\logs\build.log

它可以工作,但距离真正的可移植性还有很远。

Cabal配置是更大的问题。看起来它必须留在C:\Users\name\AppData\Roaming\cabal中,这根本不具备可移植性。
第一次运行 cabal update 会显示 Config file path source is default config file.

问题:
1. 默认配置文件在哪里?
2. remote-repo-cache、world-file 和其他路径是否可以为相对路径?
3. 是否有一种方法设置默认的cabal路径,以便它永远不会转到 C:\Users\name\AppData\Roaming\cabal


2
看起来可以使用CABAL_CONFIG环境变量进行设置,参见:https://github.com/haskell/cabal/commit/1dc46087064845ab4942687e79f182e28e89332c - Nathan Howell
2
令我惊讶的是 SET CABAL_CONFIG=%~dp0cabal\bin\config 能够正常工作 :) 需要注意的是 config 是文件名。配置文件中的路径仍然不正确,但可以在 cabal 第一次启动之前嵌入配置文件来解决这个问题。 - CoR
我不是100%确定,但似乎配置文件中的路径需要是绝对路径。相对路径会在当前目录下创建Haskell\cabal文件夹,而你启动cabal install xxx的目录就是当前目录。绝对路径\Haskell\cabal可以用于cabal update,但无法用于cabal install xxx。只有纯粹的绝对路径D:\Haskell\cabal才有效。附言:请将您的评论作为答案。它涵盖了问题1和3。到目前为止,似乎没有办法解决问题2。 - CoR
@Nathan Howell:现在随时都可以的 ;) - CoR
1个回答

4

使用以下命令运行cabal:

cabal --config-file="path/to/config"

这会给出 cabal: no command given (try --help) 或者 cabal: unrecognized option '--config-file=d:\h1\cabal\bin\config' - CoR
你肯定需要提供一个命令 :) 你使用的 cabal-install 版本是什么? - singpolyma
cabal-install 版本为 0.14.0,无法通过 cabal install cabal-install 进行更新。应该使用什么命令?是 cabal update 还是带有选项的 cabal install?使用 cabal install 带有选项后会显示 cabal: unrecognized option '--config-file=d:\cfg' - CoR
2
@CoR 我和你使用的是同一个版本,你需要在任何命令之前加上开关。例如 cabal --config-file=... install ... - singpolyma
cabal --config-file="D:\HaskellStack\cabal\config" update - Larynx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接