如何从源代码完全引导GHC和cabal

4
我想安装,但由于公司IT政策的限制,我有一些限制:
  1. 我无法下载任何二进制文件。
  2. 每个可执行文件都必须从源代码构建。
  3. 只有Google Chrome可以访问互联网(代理限制)。

因此,我下载了Pandoc源代码,但它依赖于。因此,我下载了ghc-7.8.4-src.tar.bz2

不幸的是,我发现我需要GHC来构建GHC。我下载了ghc-7.4.1-i386-unknown-linux.tar.bz2,但出现了以下错误:

$ ./configure
checking for path to top of build tree... ./configure: line 2113: utils/ghc-pwd/dist-install/build/tmp/ghc-pwd: cannot execute binary file: Exec format error
configure: error: cannot determine current directory

"/usr/src/ghc-7.4.1/utils/ghc-pwd/dist-install/build/tmp/usr/src/ghc-7.4.1/utils/ghc-pwd/dist-install/build/tmp"中,我发现了一个不应该存在的二进制文件。我无法执行二进制文件。
我还发现我需要,而我需要先安装Haskell。
这似乎是一只咬自己尾巴的蛇......
有没有一种方法可以用来构建Pandod、Haskell、Cabal和所有其他依赖项?
通常,如果我需要一个程序,我只需下载源代码,执行./configure,解决依赖问题,最终运行make install。但在这种情况下,似乎我需要花费整个生命才能理解我需要构建Pandoc的内容......

获取 GHC 二进制文件并构建或下载 Cabal 二进制文件 - 最好是 Haskell 平台,其中包括 Cabal - 然后使用 cabal install pandoc 安装 Pandoc。 - user2407038
2
如果你不知道,有一个网络界面:http://pandoc.org/try/ - Sibi
2
要编译 GHC,你需要 GHC。看起来你在这里遇到了一个鸡生蛋的问题... - MathematicalOrchid
你能通过软件包管理器安装 GHC(或 pandoc)吗? - Reid Barton
@MathematicalOrchid 通过 .hc 进行移植似乎出现了问题(该错误已关闭,建议使用交叉编译)。 - Stefan
显示剩余6条评论
1个回答

1

我会尝试使用新发布的(beta版)stack工具[1]

GHC和pandoc构建的操作步骤:

  1. 获取stack可执行文件[2]
  2. 运行:

    $ stack setup

  3. 将推荐目录添加到您的PATH中(将类似于$HOME/.stack/progams/...arch.../ghc-7.8.4/bin)

  4. 运行:

    $ stack install pandoc

  5. $HOME/.local/bin中查找pandoc可执行文件。

链接:

[1]: https://www.fpcomplete.com/blog/2015/06/announcing-first-public-beta-stack
[2]: https://github.com/commercialhaskell/stack/wiki/Downloads

1
很不错的尝试,但是这样行不通。我无法下载任何可执行文件。因此,我无法完成第一个步骤“获取堆栈可执行文件”。我天真地尝试从GitHub下载版本,但是出现了错误:“docker:找不到命令”。 - nowox
你到底做了什么导致出现 docker: ... 错误? - ErikR
1
我无法从互联网上获取任何可执行文件。如果我想使用stack,我需要从源代码构建它。 - nowox
4
我建议你和你们公司的IT部门沟通你的问题。显然他们并不需要你从源代码构建gcc(或任何你使用的C编译器)。如果他们不允许使用stack,也许他们会允许你使用“ghc bindist”,你可以在这里下载https://www.haskell.org/ghc/download_ghc_7_8_4#x86_64linux。这些二进制文件是由GHC编译器团队生成的,因此它们是权威的构建版本。 - ErikR
大多数编译器都是用它们所编译的语言编写的,GHC也不例外。因此,从源代码构建 GHC 对你来说不是一个可行的选项。你最好的选择是让有权威的人批准使用 GHC bandits,并从那里引导自己。或者像 @Sibi 提到的那样使用 pandoc 网络服务。 - ErikR
显示剩余2条评论

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