我想在我的本地网络上为 Fedora 软件包创建一个 RPM 存储库。由于存储限制,我希望存储库最初为空,并在访问后下载包。
我经常使用本地虚拟机。每当我创建一个新的VM并安装Fedora时,都会从互联网上下载很多软件包,并且大多数下载的软件包都是相同的。为了加快这个过程,我希望将 RPM 缓存在位于同一网络上的服务器上。
类似的问题已经用createrepo
&的组合回答了reposync
。我不喜欢这reposync
部分,因为当我只需要一些包时,我不想预先克隆整个存储库。
我希望本地网络上的服务器充当我的 Fedora 安装的 RPM 存储库。它应该从/etc/yum.repo.d/*
. 如果请求的 RPM 存在于本地缓存中,则服务器应该传送它,否则下载它然后传送它。
一种不那么雄心勃勃的方法是配置单个 RPM 存储库,而不是https://mirrors.fedoraproject.org/...
仅使用 http 代理。
我已经在网络上运行Nginx上,所以我打得四处的组合proxy_pass
和proxy_cache
。它有点工作,但恕我直言,它弊大于利:
/etc/yum.repo.d/*
。metadata
from https://mirrors.fedoraproject.org/
。我删除了 nginx 的东西并安装了squid
,正如评论中所建议的那样。squid
对我很有用。通过store_id_program
配置,我什至可以使用备用镜像并且仍然命中缓存,无论 RPM 最初来自何处。
在这里您可以找到针对 rpm 缓存进行微调的squid.conf:
https://github.com/spacewalkproject/spacewalk/blob/master/proxy/installer/squid.conf
您只需修改内存和端口设置即可。