3

作为在我的计算机上安装 Ubuntu 的一部分,我apt-get安装了cabal. 运行后cabal update,我运行cabal install darcs,发现我需要curses,安装libncurses5-dev,发现我需要curl,安装它,当它仍然不起作用时,运行cabal install darcs -f-curl

这行得通,但 darcs 在运行时不会从 shell 运行darcs。它是安装在的~/.cabal/bin/darcs,所以我link从那里做了一个到/bin. Darcs 现在可以在 shell 中工作,但我想知道是否有更好的方法可以做到这一点,也许cabal install在 sudo 下运行?

4

3 回答 3

6

cabal默认情况下无需管理员权限即可安装。因此,它不能安装到例如/usr/bin. 由于$HOME/bin不是标准,折衷方案是将可执行文件放入~/.cabal/bin.

然后,您可以添加~/.cabal/bin到您的路径以查看这些可执行文件(例如,通过将以下内容附加到您的.bashrc:

 export $PATH=$PATH:~/.cabal/bin

如果您的机器有管理员权限,请务必使用该--global标志。

于 2012-12-26T14:44:02.933 回答
4

首先,不要使用sudo. 即使在 root 下运行,也会cabal在你的主目录中构建东西,所以sudo不加选择地使用会导致你的~/.cabal. 相反,root-cmd: sudo在您的, 中设置/.cabal/config,然后cabal使用该--global选项将根据需要调用该命令。

其次,使用本地安装通常比使用全局安装更方便、更安全,因为您将包管理器cabal分开。因此,您也可以将其添加到您的~/.bashrc

export PATH=$HOME/.cabal/bin:$PATH

然后继续安装东西而不使用sudo

另请参阅:关于 cabal 包管理的稍微过于悲观但内容丰富的文章。

于 2012-12-26T17:50:12.850 回答
1

在这种--global情况下需要标志。运行sudo cabal install darcs -f-curl --global-f-curl因为 cabal 找不到 curl,--global使其安装到usr/local/bin中,并且sudo可以肯定的是,可以正常工作。

于 2012-12-26T14:34:47.810 回答