如何创建按需 RPM 镜像

如何创建按需 RPM 镜像

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

背景

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

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

理想的解决方案

我希望本地网络上的服务器充当我的 Fedora 安装的 RPM 存储库。它应该传递来自 .config 中配置的任何元数据/etc/yum.repo.d/*。如果本地缓存中存在所请求的 RPM,服务器应传送该 RPM,否则下载并传送它。

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

更新:2015 年 11 月 2 日

我已经在网络上运行了 nginx,因此我尝试了proxy_pass和的组合proxy_cache。它有点有效,但恕我直言,它的缺点多于优点:

  • 为 中配置的每个存储库进行单独的配置/etc/yum.repo.d/*
  • 由于备用镜像而无法使用metadatafrom 。https://mirrors.fedoraproject.org/

我按照评论中的建议删除了 nginx 并安装了squidsquid对我来说效果很好。通过store_id_program配置,我什至可以使用备用镜像并仍然命中缓存,无论 RPM 最初来自何处。

答案1

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

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

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

答案2

我不确定你是否找到了一个好的解决方案,但我最终编写了一个快速的小 Go 程序。它充当缓存代理并保留 RPM,但代理上游到数据库文件,因此它始终是正确的。目前它已针对 CentOS、Fedora EPEL 和 Arch Linux 配置。

你可以在以下位置看到它:https://github.com/yobert/remirror

答案3

apt-cacher-ng效果很好。我们已经使用它一段时间了,效果很好。并且记住在使用它时只使用 http 镜像(而不是 https 镜像)以提高效率(当然,它无法查看和缓存 https 流量):

要将 fedora 官方存储库配置为仅使用 http 镜像,您可以&protocol=http在配置 url 末尾添加metalink,例如对于fedora存储库,它将变为:

metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&protocol=http

https://www.unix-ag.uni-kl.de/~bloch/acng/

缓存代理。专门用于来自 Linux 发行商的软件包文件,主要用于 Debian(以及基于 Debian 的)发行版,但不限于这些发行版。请参阅 Apt-Cacher 的文档以了解它的用途。

答案4

Yum wiki 包含页面缓存解决方案回顾

其中一些与主题相关的内容:

  • 安装 ”智能镜子“,并注册镜像管理器

    Pros
        Zero configuration, on the client side.
        Post setup it mostly just works and everything should be immediate.
        Only downloads what is required by the users.
        Fully automated server side, once setup/working. 
    Cons
        Requires setting up a local Squid + Apache-httpd + IntelligentMirror to serve the data.
        If the server is down then metalinks/MM will route you to an external mirror.
        Only intelligently caches packages, not metadata. 
    
  • (测试版)avahi-packages-server.py 和 yum avahi 支持(请参阅:http://james.fedorapeople.org/yum/avahi

    Pros
        Zero configuration client.
        Zero configuration server.
        Only downloads what is required by the users. 
    Cons
        Not upstream yet (still beta).
        A client that doesn't run the avahi server side doesn't share it's downloads (so all clients need to run the "server").
        Requires working avahi on the network. 
    

相关内容