全局安装一个在沙盒中构建的程序

5

我在构建Haskell程序和库时经常使用沙盒。但偶尔会有一些想要系统范围内安装的程序。似乎没有一种简单的方法可以将在沙盒中构建的程序安装到沙盒之外。

2个回答

3

Idris 链接到 PATH 文件夹

如果你使用的是 Linux,只需要在路径中放置一个符号链接即可 - 我通常会在 ~/bin 中创建。所以这与 bheklilr 提到的方法相同,只是我通常从 Github 获取开发版本:

git clone git://github.com/idris-lang/Idris-dev idris
cd idris
cabal sandbox init
cabal update
cabal install --dependencies only
make

接下来,我进入~/bin目录,使用ln -s [idris路径]/.cabal-sandbox/bin/idris命令。如果您需要,也可以链接其他可执行文件,但只链接此文件就足以使用idris了。


谢谢。这是一个非常简单和实用的解决方案。虽然我仍然希望Cabal提供一种解决问题的方法。 - svenningsson

1
如果二进制文件是静态链接的(大多数情况下都是这样),则您可以执行以下操作。
> mkdir tools
> cd tools
> cabal sandbox init
> cabal install tool1 tool2
# Wait a long time
> cp .cabal-sandbox/bin/tool1 ~/.cabal/bin
> cp .cabal-sandbox/bin/tool2 ~/.cabal/bin

在Windows上,你需要执行:
> cp .cabal-sandbox\bin\tool1.exe %APPDATA%\Roaming\cabal\bin
> cp .cabal-sandbox\bin\tool2.exe %APPDATA%\Roaming\cabal\bin

显然,你应该将用户cabal目录加入到你的路径中。

经验表明,这个方法非常有效。但是,它也取决于正在构建的可执行文件,因此对于某些文件来说做到这一点可能更加困难。你可能会有所不同。我使用它来运行ghc-mod、hlint、pointfree等工具。


1
我目前想安装的程序是idris,它带有大量额外的东西,如库。我想避免手动复制所有这些数据的麻烦。 - svenningsson

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