如何创建按需 RPM 镜像

Yev*_*niy 6 fedora rpm squid

我想在我的本地网络上为 Fedora 软件包创建一个 RPM 存储库。由于存储限制,我希望存储库最初为空,并在访问后下载包。

背景

我经常使用本地虚拟机。每当我创建一个新的VM并安装Fedora时,都会从互联网上下载很多软件包,并且大多数下载的软件包都是相同的。为了加快这个过程,我希望将 RPM 缓存在位于同一网络上的服务器上。

类似的问题已经用createrepo&的组合回答了reposync。我不喜欢这reposync部分,因为当我只需要一些包时,我不想预先克隆整个存储库。

理想的解决方案

我希望本地网络上的服务器充当我的 Fedora 安装的 RPM 存储库。它应该从/etc/yum.repo.d/*. 如果请求的 RPM 存在于本地缓存中,则服务器应该传送它,否则下载它然后传送它。

一种不那么雄心勃勃的方法是配置单个 RPM 存储库,而不是https://mirrors.fedoraproject.org/...仅使用 http 代理。

更新:2015 年 11 月 2 日

我已经在网络上运行Nginx上,所以我打得四处的组合proxy_passproxy_cache。它有点工作,但恕我直言,它弊大于利:

  • 中配置的每个 repo 的单独配置/etc/yum.repo.d/*
  • 由于备用镜像,无法使用metadatafrom https://mirrors.fedoraproject.org/

我删除了 nginx 的东西并安装了squid,正如评论中所建议的那样。squid对我很有用。通过store_id_program配置,我什至可以使用备用镜像并且仍然命中缓存,无论 RPM 最初来自何处。

msu*_*chy 4

在这里您可以找到针对 rpm 缓存进行微调的squid.conf:

https://github.com/spacewalkproject/spacewalk/blob/master/proxy/installer/squid.conf

您只需修改内存和端口设置即可。