【问题标题】:How can one make a private copy of Hackage如何制作 Hackage 的私人副本
【发布时间】:2013-02-07 18:33:19
【问题描述】:

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

【问题讨论】:

  • 查看yackage,这是一个简单的类似服务器的hackage。 Hackage trac 是复制所有 hackage 的说明,但它目前已关闭,我不记得有关如何进行部分镜像的明确指示。
  • 首页上有一个链接可以下载 Hackage 上所有软件包的最新版本的存档。够了吗?
  • 我想有效地获得我想在生产中使用的库的快照,以便开发人员和构建框都可以从该源安装。 Yackage 可能会起作用。

标签: haskell hackage


【解决方案1】:

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

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

【讨论】:

  • 非常酷。 mirror-hackage 可能就够了,但我从来没有想过要通过 Hackage2 代码来尝试使用它。现在 Hackage2 的稳定性如何?
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多