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

der*_*ert 6 cache debian squid apache-httpd

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

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

安装程序默认为 just mirror,有没有办法让它工作?所以我可以偷懒,直接输入一堆?

Rui*_*iro 9

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

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

你安装它:

apt-get install apt-cacher-ng
Run Code Online (Sandbox Code Playgroud)

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

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

Acquire::http { Proxy "http://your_proxy_APT_server:3142"; };
Run Code Online (Sandbox Code Playgroud)

添加该文件后,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";
}
Run Code Online (Sandbox Code Playgroud)

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

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/
Run Code Online (Sandbox Code Playgroud)

另请参阅:如何在 Ubuntu 或 Debian 上设置 Apt 缓存服务器