将已安装的ghc和所有包复制到另一台计算机

时间:2015-08-28 13:17:25

标签: haskell ghc gloss

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

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

我希望展示儿童图表和光泽包,因为它既愉快又有趣。 我受到了gentleman Smith的启发 我该怎么做?除了图表和光泽之外,是否有其他包装的方法? 谢谢,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

默认情况下,cabal会将其下载的每个程序包缓存到~/.cabal/packages(并且除非您明确请求重新获取,否则更喜欢其缓存重新获取程序包)。所以它应该很简单,只需在计算机之间复制该目录。

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

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

答案 1 :(得分:0)

在过去,我这样做是为了让GHC和Cabal在防火墙后面的机器上工作,然后安装" cabal安装"无法透视。

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

安装GHC,cabal和cabal-install,然后找到cabal-install配置文件并将其指向包含index.tar.gz软件包的本地存储库以及您下载的软件包的存档。希望你能找到" cabal install"将从本地存储库工作。