我想安装 GHC 7.8.1,但想为其分配不同的命令,以免与 7.6.3 发生冲突。例如:
runghc
与runghc7.8.1
ghci
与ghci7.8.1
- 等等...
或类似的。 (对于键入的孔,ghci 将是最重要的。) 基本上,我希望能够使用 GHC 7.8 和 7.6,所以如果有更直接的方法来做到这一点请告诉我(A-B 问题。)
注意:Ubuntu 13.10
最佳答案
因为您使用的是类 UNIX 系统 (Ubuntu),所以您可以执行以下操作:
- 选择您喜欢安装 ghc 的文件夹(例如,在主目录的子文件夹中,如
$HOME/ghc7.8.1
或在/opt
的子文件夹中,如/opt/ghc7.8.1
– 如果您是计算机的唯一用户,我更喜欢后者,如果不是这种情况,我更喜欢第一个)。请参阅this wikipedia article有关 unix 目录结构的说明。 将源代码下载到该文件夹中并按照 installation instructions 进行操作:
- 另请参阅 https://ghc.haskell.org/trac/ghc/wiki/Building/Using#Runtheconfigurescript
在配置 setp 中,重要的是您将
--prefix
设置为您在上面选择的文件夹(如果您不这样做,ghc 将安装在/usr/local/
你不想要的)!例如:./configure --prefix=/opt/ghc7.8.1
安装后,查找包含所创建的二进制文件的文件夹(如果您没有使用
bindir
的其他名称,则该文件夹将被称为bin
)。让我们假设这个文件夹是/opt/ghc7.8.1/bin
。
现在你有两种可能性:
创建 symlinks 的解决方案:在 $PATH
中的文件夹中创建符号链接(symbolic link),指向创建的二进制文件(例如 /usr/local/bin
或 $HOME/bin
– 如果您是计算机上的唯一用户,我会使用第一个,如果您不是,我会使用第二个)。因此你必须使用命令行工具ln
。例如:
sudo ln -s -T /opt/ghc7.8.1/bin/runghc /usr/local/bin/runghc7.8.1
此命令之后有一个文件 /usr/local/bin/runghc7.8.1
指向二进制文件 /opt/ghc7.8.1/bin/runghc
。通过输入 runghc7.8.1
执行 /usr/local/bin/runghc7.8.1
现在将执行在 /opt 中创建的
(注意:如果您在 runghc
二进制文件$HOME/bin
中创建符号链接(symbolic link),则不需要 sudo
- 它只是需要的,因为 root
可以在 /usr
下创建文件)
解决方案 bash aliases :写入您的$HOME/.bash_aliases
(@Others:您也可以选择$HOME/.bashrc
或$HOME/.profile
取决于您的系统/偏好)以下行:
alias runghc7.8.1='/opt/ghc7.8.1/bin/runghc'
现在在终端中输入 runghc7.8.1
是输入 /opt/ghc7.8.1/bin/runghc
的快捷方式(别名),并将执行此二进制文件。
请注意,使用此解决方案,当您在终端中输入 runghc7.8.1
时,它就会起作用。在某些情况下,它不起作用(例如在脚本中调用 runghc7.8.1
)。
关于unix - 如何安装 GHC 7.8.1 并为其分配不同的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001192/