19

我想将全球 Hackage 数据库快照成一个冻结的、较小的数据库,以供我公司部署。怎样才能最轻松地将 Hackage 的某些片段复制到私人服务器上?

4

4 回答 4

6

这是一个以最简单的方式执行此操作的脚本:https ://github.com/jamwt/mirror-hackage

您还可以直接从 hackage2 存储库中使用 MirrorClient:http ://code.haskell.org/hackage-server/

于 2013-02-07T21:57:14.320 回答
3

这不是标题中问题的两个答案,而是对我对 OP 希望实现的目标的解释的答案。

根据您对生产圈稳定性水平的要求,您可以通过多种方式解决问题。

我将依赖项分为两部分,我可以在 haskell 平台中使用的东西(保留生产中使用的每个平台),然后只使用少量的包,不要让任何人(包括你自己)添加只是因为懒惰(作为开发人员),更多的包进入你的依赖树。这些额外的包你使用某种脚本,并通过使用 cabal fetch 从 hackage(锁定到版本)中收集。保证他们的安全。创建一个使用您的安全包的安装脚本,如果将新机器(开发人员)添加到您的团队,请使用该脚本。

yackage 很棒,但这一切都取决于你如何运送你的产品。如果您在生产中有较旧的版本,则需要为每个版本进行 yackage 设置,几年后这可能会很烦人。

于 2013-02-08T08:19:58.670 回答
2

您可以使用 Voker57 的 hackage-mirror.sh 下载Hackage。你需要'curl'才能运行。如果您使用的是基于 Debian 的 Linux 发行版,则可以通过键入apt-get install curl 来安装 curl

于 2013-12-21T01:27:26.497 回答
1

虽然它不是 Hackage 的一部分,但我已经编写了一个bash 脚本,它可以下载整个 Hackage,可以使用 HTTP 服务器进一步轻松地将其设置为镜像。此外,它还下载了所有必需的东西,例如准备好与Stack一起使用的 GHC 编译器。

目前,一个完整的 Hackage 镜像占用约 10GiB(约 100000 个所有版本的包)和 Stack 相关的东西,如 GHC 编译器约 21GiB(约 200 个文件)。脚本的后续运行会跳过已经下载的内容,因此它只会下载新的内容。因此,这是一种非常方便的“离线直播”和在线同步的方式。

于 2018-09-29T16:08:11.343 回答