作为在我的电脑上安装Ubuntu的一部分,我apt-get安装了cabal。在运行cabal update之后,我运行了cabal install darcs,发现我需要诅咒,安装了libncurses5-dev,发现我需要curl,安装了它,当它仍然不起作用时,运行cabal install darcs -f-curl。
这是可行的,但是在只运行darcs时,darcs不能从外壳运行。它是安装在~/.cabal/bin/darcs中的,所以我创建了一个从那里到/bin的link。Darcs现在可以在shell中工作,但我想知道是否有更好的方法,也许是在sudo下运行cabal install?
发布于 2012-12-27 01:50:13
首先,不要使用sudo。即使在根目录下运行,cabal也会在您的主目录中构建内容,因此不加区别地使用sudo可能会在您的~/.cabal中生成根用户拥有的文件。相反,可以在/.cabal/config中设置root-cmd: sudo,然后使用--global选项的cabal将根据需要调用该命令。
其次,使用本地安装通常比使用全局安装更方便、更安全,因为您将包管理器和cabal分开。所以你也可以把这个代码添加到你的~/.bashrc中
export PATH=$HOME/.cabal/bin:$PATH然后继续安装东西,根本不使用sudo。
另请参阅:一个略显悲观但信息丰富的article on cabal package management。
发布于 2012-12-26 22:44:03
默认情况下,cabal不需要管理员权限即可安装。因此,它不能安装到例如/usr/bin中。由于$HOME/bin不是标准,折衷的办法是将可执行文件放入~/.cabal/bin中。
然后,您可以将~/.cabal/bin添加到path中以查看这些可执行文件(例如,通过在.bashrc中附加以下内容:
export $PATH=$PATH:~/.cabal/bin如果您的计算机中有管理员权限,请务必使用--global标志。
发布于 2012-12-26 22:34:48
在这种情况下,需要使用--global标志。使用-f-curl运行sudo cabal install darcs -f-curl --global,因为cabal找不到curl,运行--global使其安装到usr/local/bin中,然后运行sudo以确保它可以正常工作。
https://stackoverflow.com/questions/14042035
复制相似问题