我的/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”可执行文件或类似内容可能会搞砸我的系统)
或者是否有更简单的方法可以解决这个问题?
答案 0 :(得分:3)
我想首先指出适合我的布局,然后建议您如何在特定情况下继续。
一般来说,我认为更好的布局是拥有以下搜索路径:
cabal install
安装到这样,您可以使用cabal install
从Haskell平台更新二进制文件,但是它们不会无意中隐藏一些非Haskell相关的二进制文件。
(在我的Windows机器上,这种布局很容易实现,因为Haskell平台的二进制文件默认安装在一个单独的目录中。所以我只是手动调整搜索路径就是这样。我不知道如何在其他平台上实现它。)
在您的Haskell平台二进制文件已与非Haskell相关二进制文件一起安装的特定情况下,您可以使用以下布局作为搜索路径:
cabal install
安装到的目录。这样,来自cabal install
的二进制文件不会意外地影响2中的重要内容。但是如果你决定想要从Haskell平台中隐藏某些东西,你可以手动添加一个链接到1.如果它是一个软链接,我认为您只需要为每个程序名称执行一次,然后您可以为该程序调用{{1}}来更新它。您甚至可以查找与Haskell平台捆绑在一起的可执行文件,并一劳永逸地完成。
答案 1 :(得分:1)
第二,虽然将/.cabal/bin放在PATH中的/ usr / bin前面比较简单,这是大多数人已经做过的事情。
它也不是什么大问题,因为只有cabal会将文件放在.cabal / bin中,所以它应该是可预测的,几乎不会有覆盖内容的风险。