【问题标题】:Copy installed ghc and all packages to another machine将已安装的 ghc 和所有软件包复制到另一台机器
【发布时间】:2015-08-28 13:17:24
【问题描述】:

我面临一个特殊的问题。在高中时,我捐赠了大约 10 台计算机(都是相同类型的、相同类型的 cpu、相同类型的内存等),这些计算机在重新安装后正在运行 Debian。我试图教学生一些 Haskell,我自己学得很少。孩子们很感兴趣。问题是我们的国家是第三世界,互联网非常缓慢且成本高昂。在使用有限时间的免费互联网连接仅在一台机器上下载所有 deb 文件后,我在所有机器上使用 deb 包(通过使用 apt-rdepends 找到)安装了基本的 ghc 和 ghci。下载所有缺失的 ghc deb 文件花了 10 多个小时。

我想知道阴谋集团是否可以使用这种伎俩?我将在一台计算机上下载所有必需的 tar 或其他文件一次,使用昂贵且缓慢的互联网,但我不想花我所有的钱从互联网上下载所有 10 台计算机。

我想向孩子们展示图表和光泽包,因为它既有趣又有趣。 我受到gentleman Smith的启发 我该怎么做?除了图表和光泽之外,还有其他包装的方法吗? 谢谢你,对不起我的英语不好。

【问题讨论】:

  • 谢谢。我看到了,它只是告诉下载一个包,但没有依赖项。有没有办法使用 cabal 了解图表的依赖关系?
  • 我想你要做的是将$HOME/.cabal/packages/hackage.haskell.org复制到其他机器上。

标签: haskell ghc gloss


【解决方案1】:

默认情况下,cabal 将它下载的每个包缓存到~/.cabal/packages(并且更喜欢它的缓存而不是重新获取包,除非您明确请求重新获取)。因此,在计算机之间复制该目录应该足够简单。

这仍然需要您在每台机器上构建所有包。如果您想跳过这一步,您可以考虑直接将 GHC 的包数据库复制到每台机器上。这有点微妙,但可以节省相当多的时间/精力。

默认情况下,全局包数据库(您应该在其中安装希望在用户之间共享的包)位于/usr/local/lib/ghc-$version,您也应该能够将该目录复制到所有计算机上。您可以使用ghc-pkg list 检查是否已将所需的包安装到全局数据库中,这将列出所有已安装的包/版本组合,并根据它们是安装在全局包数据库中还是用户包数据库中来区分它们。

【讨论】:

    【解决方案2】:

    过去,我这样做是为了让 GHC 和 Cabal 在“cabal install”无法穿透的防火墙后面的机器上工作。

    您可以使用“wget”下载每个 Hackage 包的最新版本。 (或者您可以尝试使用 Stack 做类似的事情,但我没有尝试过)。还要下载https://hackage.haskell.org/packages/index.tar.gz,也就是索引文件。

    安装 GHC、cabal 和 cabal-install,然后找到 cabal-install 配置文件并将其指向包含 index.tar.gz 包和您下载的包的存档的本地存储库。然后希望您会发现“cabal install”可以在本地存储库中运行。

    【讨论】:

      猜你喜欢
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2014-12-15
      • 1970-01-01
      相关资源
      最近更新 更多