我可以轻松制作一个主机“镜像”来缓存下载的 Debian 软件包吗?

我可以轻松制作一个主机“镜像”来缓存下载的 Debian 软件包吗?

我们设置了一个 Squid Web 缓存,用于缓存包下载,这样这里的所有机器就不必独立重新下载所有内容。安装程序会提示输入镜像和代理。只要每台机器都使用完全相同的镜像(此处为http.us.debian.org)和代理,那么它就可以工作。

这有点烦人,因为它涉及到“手动输入信息”并每次都输入(就像安装程序所做的ftp.us.debian.org那样,Squid 并没有意识到这是相同的)。

安装程序默认只是mirror,有什么方法可以使其工作吗?所以我可以偷懒,直接输入一堆吗?

答案1

为了拥有本地 deb 缓存来为我的 Debian 服务器场提供服务,我实际上更喜欢使用apt-cacher-ng(软件存储库的缓存代理服务器)

它是一个专门支持 APT/deb 的代理,非常可定制,并且可以缓存您的 deb 文件相当长一段时间(可配置)。

您可以使用以下命令安装它:

apt-get install apt-cacher-ng

默认情况下,它将存储库/debs 缓存到/home/apt-cacher-ng.在此目录下,它为 Debian/Ubuntu 服务器中使用的每个存储库创建一个目录,然后使用发行版,与镜像结构非常相似。作为一个额外的好处,从这里手动从缓存中获取 deb 比从 Squid 服务器中获取要容易得多。

要在所有服务器中使用它,请将包含以下内容的/etc/apt/apt.conf.d文件添加到目录中:02proxy

Acquire::http { Proxy "http://your_proxy_APT_server:3142"; };

添加该文件后,Debian 软件包管理器将通过配置的 http APT 代理代理所有配置的存储库。

它还具有一个有趣的静态页面,用于咨询其活动。

您可能还需要在防火墙中打开 3142/TCP,以允许服务器与新的代理 APT 服务器通信。

这种设置的优点是,除了为一桶服务器只下载一个 deb 副本之外,还可以节省带宽和公共存储库的使用,还允许您更新不需要 Internet 访问的内部服务器(例如:DHCP 服务器)。

如记录在官方安装指南附录 B,您可以通过在 DHCP 服务器的配置中添加如下内容来发出预置文件:

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

然后使用这些预置选项,您可以自动配置镜像和代理:

d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string http://your_proxy_APT_server:3128/

也可以看看:如何在 Ubuntu 或 Debian 上设置 Apt 缓存服务器

答案2

编辑:我编辑的预置方法鲁伊·F·里贝罗的回答也可以与 Squid 或任何其他代理一起使用,并且(只要您使用 DHCP)可能是更好的方法。


首先,mirror将完成系统域名,因此添加一个 DNS 条目mirror.yourdomain.com。将其指向运行 Apache 的服务器;在此示例中,同一服务器还运行 Squid。

确保 Apache 启用了 mod_proxy 和 mod_proxy_http(例如,a2enmod proxy; a2enmod proxy_http在 Debian 上)。然后添加一个新的虚拟主机:

<VirtualHost *:80>
    ServerName mirror.yourdomain.com
    ServerAlias mirror

    ProxyPass /debian http://http.us.debian.org/debian
    ProxyRemote http http://localhost:3128/
    ProxyVia off
</VirtualHost>

重新启动 Apache 后,从 Debian 镜像“mirror”下载的软件包应该会通过缓存。

相关内容