问题描述
如何为Ubuntu 13.04安装Haskell平台?当我键入sudo apt-get install haskell-platform
时出现以下错误:
E: Unable to locate package haskell-platform error
最佳解决方案
对于Haskell Platform 2012.4.0.0来说,GHC太新了,而2013.2.0.0太旧了,Raring陷入了困境。这个山谷可以通过一些疼痛和胶带来弥补。
如果已经安装了GHC,则可以从源代码安装Haskell Platform 2013.2.0.0。这是一个过程,但确实有效。
首先,安装GHC 7.6.2:
sudo apt-get install ghc
现在你需要GHC 7.6.3,因为它是Haskell Platform 2013.2.0.0的pre-req。
CAUTION:
You might think installing from the unknown-linux archives of GHC will work. It won’t. The GHC in those archives is dynamically linked against /usr/lib/libgmp.so.3 which is unavailable on Raring which has libgmp.so.10. Do NOT be tempted to symlink this library to it’s earlier version’s name and location to fake out the linker. I went there and it is a path to very confusing failures and is a very bad practice so I mended my ways and built GHC from source.
接下来,您需要从源代码获取并构建GHC 7.6.3(GHC是一个self-hosted编译器,因此需要GHC来构建它):
wget http://www.haskell.org/ghc/dist/7.6.3/ghc-7.6.3-src.tar.bz2
tar xjvf ghc-7.6.3-src.tar.bz2
cd ghc-7.6.3
./configure
make
sudo make install
编译GHC对我来说花了相当长的时间(几个小时,铯同位素Cs-134m的半衰期),所以这可能是休息或睡眠的好时机。它经历了构建编译器的三个阶段(0,1和2),然后使用构建的编译器构建编译器的下一个阶段。
为了加快编译过程,您可以使用
make -j 8
在上面的步骤中利用multi-core CPU。
然后,从源代码获取并构建Haskell平台(我将使用2013.2.0.0作为示例):
wget http://lambda.haskell.org/platform/download/2013.2.0.0/haskell-platform-2013.2.0.0.tar.gz
tar xzvf haskell-platform-2013.2.0.0.tar.gz
cd haskell-platform-2013.2.0.0
./configure
make
sudo make install
编译Haskell平台花费了大约30分钟,所以这是休息的另一个好时机。
您现在应该有一个正常工作的Haskell Platform 2013.2.0.0,其中GHC 7.6.3与libgmp.so.10正确链接。
次佳解决方案
Ubuntu 13.04 repo包含GHC 7.6.2,遗憾的是还没有适用于GHC 7.6.x的Haskell平台。所以你最好现在从源代码构建一个GHC(即7.4.x)和Haskell平台的初级版本。
有关更多信息,请参阅此处:https://launchpad.net/ubuntu/raring/i386/haskell-platform
第三种解决方案
作为Alain O’Dea以上细节的优秀答案,这个问题不易修复,同时Ubuntu 13.04没有haskell-platform。
您可以通过在此列表中安装软件包来排序’fake’:http://packages.ubuntu.com/precise/haskell-platform
这是为您执行此操作的命令:
sudo apt-get install ghc alex cabal-install happy libghc-cgi-dev libghc-fgl-dev libghc-glut-dev libghc-haskell-src-dev libghc-html-dev libghc-http-dev libghc-hunit-dev libghc-mtl-dev libghc-network-dev libghc-opengl-dev libghc-parallel-dev libghc-parsec3-dev libghc-quickcheck2-dev libghc-regex-base-dev libghc-regex-compat-dev libghc-regex-posix-dev libghc-stm-dev libghc-syb-dev libghc-text-dev libghc-transformers-dev libghc-xhtml-dev libghc-zlib-dev
由于显而易见的原因,这两个项目缺少的是haskell-platform-doc和haskell-platform-prof软件包。
希望Ubuntu开发人员能够尽快修复不兼容问题。
在那个说明:
此外:遗憾的是,我没有声称将此作为对此StackExchange网站的评论,但这是最合适的地方。
Launchpad上有一个错误,但是没有引起太多关注。如果你登陆这个页面,请访问这个并将其标记为影响你,因为Ubuntu 13.04的Haskell软件包被软管:
https://bugs.launchpad.net/ubuntu/+source/haskell-platform/+bug/1047678
希望mod能够接受这个答案并将其变成一个评论,它属于它。对不起 – 我还没有在askubuntu上声名鹊起!