4

我的. _ /usr/bin我认为 Haskell 平台最初是把它放在那里的(虽然我不是 100% 确定......)。

不幸的是,版本 3.0.1 存在错误,因此我需要将其升级到 3.0.5。我尝试使用 cabal 安装最新版本的 Alex,但cabal install alex-3.0.5它将可执行文件安装.cabal/bin在我的主文件夹而不是/usr/bin

我只是手动将可执行文件复制到/usr/bin吗?(这听起来总是很麻烦)

我是否更改了我的 PATH 环境变量,以便在此.cabal/bin之前出现/usr/bin(我担心 cabal 文件夹上的“ls”可执行文件或类似文件可能最终会弄乱我的系统)

或者一般来说有没有更简单的方法?

4

2 回答 2

3

我想首先指出适合我的布局,然后建议您在特定情况下如何进行。

什么对我有用

一般来说,我认为更好的布局是具有以下搜索路径:

  1. 具有重要的非 Haskell 相关二进制文件的目录
  2. cabal install安装到的目录
  3. 来自 Haskell 平台的二进制文件所在的目录

这样,您可以使用cabal install从 Haskell 平台更新二进制文件,但它们不会意外地影响一些非 Haskell 相关的二进制文件。

(在我的Windows机器上,这种布局很容易实现,因为Haskell平台的二进制文件默认安装在单独的目录中。所以我只是手动调整搜索路径就可以了。我不知道如何实现它在其他平台上)。

针对您的特殊情况的建议

在您已经安装了 Haskell 平台二进制文件和非 Haskell 相关二进制文件的特定情况下,也许您可​​以对搜索路径使用以下布局:

  1. 包含指向 3 中某些二进制文件的链接的目录
  2. 包含重要的非 Haskell 相关二进制文件和 Haskell 平台二进制文件的目录
  3. cabal install安装到的目录。

这样,来自的二进制文件cabal install就不会意外隐藏 2 中的重要内容。但是如果您决定要从 Haskell 平台中隐藏某些内容,您可以手动添加一个指向 1 的链接。如果它是软链接,我认为您只需要这样做每个程序名称一次,然后您可以调用cabal install该程序来更新它。您甚至可以查找与 Haskell 平台捆绑在一起的可执行文件,并一劳永逸地完成这项工作。

于 2013-08-27T08:47:01.267 回答
1

不过,在第二个方面,将 /.cabal/bin 放在 PATH 中的 /usr/bin 前面更简单,并且大多数人已经这样做了。

这也没什么大不了的,因为只有 cabal 会将文件放在 .cabal/bin 中,因此它应该是可预测的并且几乎没有覆盖东西的风险。

于 2014-07-29T14:45:59.533 回答