为Haskell开发选择Linux发行版

12

哪个Linux版本最适合Haskell开发?我想安装ghc并在其中编译Leksah。

我现在使用的是CentOS,但其软件仓库不够丰富和更新。

12个回答

28

我目前使用的发行版是Arch Linux,该版本对Haskell有广泛的支持。

你可以在这里查看直接可用的Haskell软件包的状态(截至目前为止,可用的软件包数量为1370个)。此外,还有一个关于Arch Linux中Haskell软件包的维基页面


2
在 Arch 上支持 Haskell 真是太棒了!但请注意,Arch 不适合新手,通常需要更多地调整配置文件,而不像更加用户友好的发行版(如 Redhat、Ubuntu、SUSE)那样简单。 - nimrodm
2
+1 最佳的Haskell支持发行版。甚至在irc.freenode.net上有一个#archhaskell的IRC频道! - davidbe
3
Haskell 也不是适合新手的语言! - Abdulsattar Mohammed

8
我计划查看NixOS。它有一个纯函数式的包管理器(支持多个版本和回滚),由Haskell程序员开发,并且有一些Haskell包。
从包数量上来看,它可能不是最完整的,但对于Haskeller来说似乎非常有趣。

6

在 Fedora 11 中可以找到 Haskell 平台 2009.2.0.1。
在 Fedora 12 中可以找到 Haskell 平台 2009.2.0.2。
在 Debian 不稳定版中可以找到 Haskell 平台 2009.2.0.2.1,它应该在一周左右迁移到测试版。
在 Gentoo testing 中,Haskell 平台 2009.2.0.2 被屏蔽了。
Arch Linux 可能是最全面的,几乎有 Hackage 的 90% 打包在 AUR 中。


4
这正是评估使用Haskell发行版的正确方法。首先,询问是否提供了任何版本的Haskell平台。其次,询问提供了多少额外的Hackage包。对于初学者来说,唯一的关注点就是平台是否得到支持 - 而现在它已经得到广泛支持。 - Don Stewart
在 Gentoo 上,从 2012 年到 2014 年的所有 Haskell 平台都可用。我不知道为什么一个过时的平台还有相关性。 - Turion

6
我正在使用Arch Linux,虽然Haskell得到了很好的支持,并且有大量的包,大多数都是最新版本和更新版本,但版本和依赖关系存在问题。
一个典型的Haskell包依赖于几个其他包。例如,它可能依赖于1.0.1版本。另一个包依赖的一个或多个包已经更新为“1.0.2”,从而破坏了对“1.0.1”版本的依赖关系,这种情况非常普遍。
如果您正在尝试安装一个在金字塔状依赖树中较高的Haskell包,例如GUI应用程序或游戏,您可以相当确定,只能每隔几天才能安装一次,直到安装失败,因为一个模糊的用于转换单子的包已从3.0.4版本更新为3.0.5版本。
此外,“arch-haskell”团队拥有所有Haskell包的整个想法,而不是AUR的受信任用户或常规用户,这是一个可怕的想法,因为与替代方案相比,他们更新包的速度较慢。我不知道为什么会对如何处理Haskell包进行例外处理,因为这在Arch Linux中是不常见的。
我遇到过这样的情况,即修复Haskell包的神秘编译问题的唯一方法是卸载然后重新安装所有Haskell依赖项,包括ghc。
总的来说,Arch对于Haskell开发非常棒,但是一旦您不只是在安装依赖金字塔中低的软件包时,很容易陷入破损软件包的海洋。这通常是由于不兼容的小版本号而不是不兼容的代码。
我喜欢Arch Linux和Haskell,但仍然认为这是一个问题。
更新#1:Arch已停止拥有“arch-haskell”团队,该团队拥有所有haskell包,并且现在应成为Haskell开发人员的首选。
更新#2:我认为版本问题并不是Arch特有的问题,而是Haskell包如何相互依赖的问题。一个可以依赖于特定函数的特定版本而不是依赖于库的系统可能会有所帮助。

5

关于Haskell,我不太确定,但我发现Ubuntu保持了良好的最新更新,更重要的是他们强调稳定性。如果你正在进行Haskell开发,我认为你会选择稳定性而不是使用最新软件。


我尝试了一下Haskell(不过没什么严肃的内容),Ubuntu也很流畅。 - leonm

2

尽管发布链接通常是可以的,但最好避免这样做,以防目标网站无法访问或永久下线。这并没有错,只是说在这里发布答案比重定向到其他地方更好。 - Akshay Hazari

2
实际上,只要您使用的编程环境提供至少一个可用的Haskell解释器/编译器(如Hugs、GHC等)和cabal/darcs(您需要其中之一从庞大的HackageDB或darcs代码库中选择一些有用的库/工具),您就不必选择特定的编程环境。我曾经也考虑过同样的问题,但后来当我学会了如何使用cabal/darcs找到我所需的内容时,我发现您的选择几乎无关紧要。虽然我更喜欢Arch,但Ubuntu、Fedora(或其他人提到的发行版)也可以。

0

这取决于您的计算机有多少内存。 在512MB RAM和小交换分区(例如EeePC或VPS/VDS机器(由host1free.com等提供))上,人们可能会遇到GHC的问题。

如果您的RAM少于1GB,则建议您在Gentoo上使用splitobjs=NO编译GHC(对于RAM小于512Mb的机器,Gentoo会自动执行此操作)。否则,您可以选择Archlinux或其他任何Linux发行版。

HaskellWiki有一个专门介绍常见Linux发行版及其Haskell支持渠道的页面。


0

我在 Gentoo 上发现了对 Haskell 的出色支持。

无论这里发布了关于 Gentoo 的过时信息,但当前的 Gentoo 树包括了 2014.2 版本的 Haskell 平台。

  • 有一个Gentoo wiki上的页面,其中有非常清晰的说明。相比之下,我觉得Arch wiki页面很令人困惑。
  • Haskell软件包的安装是使用Gentoo软件包管理器Portage完成的。它比cabal更方便使用,并且可以避免出现cabal hell
  • 如果您激活了Haskell Overlay,您将能够从Hackage安装大多数软件包。
  • 使用Hackport安装不在Gentoo树或Haskell overlay中的软件包非常简单。它可以从Haskell软件包创建一个Gentoo软件包,然后像任何其他软件包一样在系统上安装。
  • 一个名为haskell-updater的工具确保所有Haskell软件包具有兼容版本。
  • 有一个IRC频道,#gentoo-haskell,在这里您可以获得有关所有特定于Gentoo的Haskell问题的帮助。

0
  • Fedora 通常包含更为更新的[前沿]软件。它包含与CentOS相同的工具(yum、rpms等),因此如果您熟悉CentOS,那么使用Fedora可能会更自然。
  • MintUbuntu的一个非常好的衍生版。这是我目前最喜欢的发行版。

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