4

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

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

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

4

2 回答 2

1

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

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

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

于 2015-08-28T20:43:22.730 回答
0

在过去,我这样做是为了让 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”可以在本地存储库中运行。

于 2015-08-28T20:43:01.830 回答