升级/ usr / bin上安装的Haskell程序版本的正确方法是什么?

时间:2013-08-27 03:41:28

标签: haskell cabal haskell-platform cabal-install

我的/usr/bin上安装了Alex的3.0.1版本。我认为Haskell平台原本就把它放在那里(虽然我不是100%肯定......)。

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

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

我是否更改了我的PATH环境变量,以便.cabal/bin出现在/usr/bin之前?(我担心cabal文件夹中的“ls”可执行文件或类似内容可能会搞砸我的系统)

或者是否有更简单的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:3)

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

什么对我有用

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

  1. 包含重要的非Haskell相关二进制文件的目录
  2. cabal install安装到
  3. 的目录
  4. 来自Haskell平台的二进制文件所在的目录
  5. 这样,您可以使用cabal install从Haskell平台更新二进制文件,但是它们不会无意中隐藏一些非Haskell相关的二进制文件。

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

    针对您的具体情况的建议

    在您的Haskell平台二进制文件已与非Haskell相关二进制文件一起安装的特定情况下,您可以使用以下布局作为搜索路径:

    1. 包含3
    2. 中某些二进制文件的链接的目录
    3. 包含重要的非Haskell相关二进制文件和Haskell平台二进制文件的目录
    4. cabal install安装到的目录。
    5. 这样,来自cabal install的二进制文件不会意外地影响2中的重要内容。但是如果你决定想要从Haskell平台中隐藏某些东西,你可以手动添加一个链接到1.如果它是一个软链接,我认为您只需要为每个程序名称执行一次,然后您可以为该程序调用{​​{1}}来更新它。您甚至可以查找与Haskell平台捆绑在一起的可执行文件,并一劳永逸地完成。

答案 1 :(得分:1)

第二,虽然将/.cabal/bin放在PATH中的/ usr / bin前面比较简单,这是大多数人已经做过的事情。

它也不是什么大问题,因为只有cabal会将文件放在.cabal / bin中,所以它应该是可预测的,几乎不会有覆盖内容的风险。