Apt-Cacher-NG是基Debian发行版(例如Ubuntu、Kubuntu、Xubuntu、Edubuntu、Linux Mint等)的缓存代理服务器(或apt代理),它主要用于将下载的包缓存在本地服务器上。
假设你有一个小型网络,连接了几台计算机,并且你希望在每个系统上手动安装和更新软件包。那么,这将是一项艰巨且耗时的任务。那么,这时候在任何系统上配置apt-cacher-ng是一个不错的方法,因为它会将从互联网下载的所有软件包缓存到apt-cache服务器上,然后其它Debian和Ubuntu机器可以从apt-cache服务器获取,这样可以节省时间和互联网带宽。
在这里,小编在Ubuntu 24.04上设置一个缓存服务器,在该局域网内,同时使用30多个Ubuntu桌面客户端、28个Ubuntu服务器虚拟机(包括版本24.04、22.04和20.04)以及4个Linux Mint桌面。
我们使用一台运行Ubuntu 24.04 LTS Server Edition的单独缓存服务器,到目前为止,软件包没有任何冲突。接下来,让我们开始设置apt-cache服务器。
我的服务器设置
Apt Cache Server OS : Ubuntu 22.04 LTS Server Apt Cache IP Address : 192.168.0.125 Apt Cache Hostname : aptcacher.ecscoupon.lan Default Port : 3142
我的客户端设置
Client OS : Ubuntu 20.04 LTS Client IP Address : 192.168.0.3 Client Hostname : client.ecscoupon.lan
第一步:在Ubuntu服务器上安装Apt-Cacher-NG
首先,登录服务器并使用“Ctr+Alt+T
”打开终端,并使用以下apt命令安装apt-cacher-ng软件包:
sudo apt-get install apt-cacher-ng
安装完成后,apt-cacher-ng将自动启动。现在打开并编辑位于“ /etc/apt-cacher-ng ”目录下的cache-ng配置文件。
sudo vim /etc/apt-cacher-ng/acng.conf
接下来,需要按照建议取消注释以下行,如果注释了,请从开头删除“#
”。在该目录中,所有的dpkg软件包在安装或更新时都会被存储。
CacheDir: /var/cache/apt-cacher-ng
要启用日志,我们需要启用此行,默认情况下它将启用:
LogDir: /var/log/apt-cacher-ng
apt -cacher会监听3142端口,如果需要更改端口,也是可以更改的:
Port:3142
接下来,在该行下方添加行“ BindAddress: 0.0.0.0 ”条目:
# BindAddress: localhost 192.168.7.254 publicNameOnMainInterface BindAddress: 0.0.0.0
这里我们可以定义Ubuntu、Debian等都需要缓存的发行版,具体如下:
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol # Debian Volatile Archives
如果我们需要在Web界面中获取apt-cache的报告,我们需要启用以下行,但默认情况下,它是被启用的:
ReportPage: acng-report.html
要获取有关“ log ”的更多信息,我们必须取消以下行注释,如果我们将其设置为0,则只会记录包传输的活动类型、时间和大小。
VerboseLog: 1
要运行apt-cacher服务,需要在配置中启用pid文件:
PidFile: /var/run/apt-cacher-ng/pid
然后删除未引用的文件:
ExTreshold: 4
最后完成了配置,保存并关闭文件。现在可以使用以下命令重新启动apt-cacher-ng服务。
$ sudo /etc/init.d/apt-cacher-ng restart
使用以下URL在Web界面中访问apt-cacher-ng的报告页面:
http://192.168.0.125:3142/
在这里我们可以看到apt-cacher-ng的报告页面,在页面底部点击静态报告和配置页面,以获取下载命中和未命中的情况。
注意,需要从报告主页复制代理URL供以后使用。甚至可以通过apt-cache在该服务器中安装软件包,这些软件包可以在本地配置,只需在/etc/apt/apt.conf.d/02proxy中添加以下条目即可。
Acquire::http { Proxy "http://192.168.0.125:3142"; };
第2步:Ubuntu客户端配置
首先登录客户端计算机(Ubuntu/Debian)并在“ /etc/apt/apt.conf.d/ ”目录下创建“ 02proxy ”文件。
sudo vim /etc/apt/apt.conf.d/02proxy
现在复制获取URL并将其附加到02proxy文件中。你将从apt-cacher-ng访问报告页面获取以下URL: http://192.168.0.125:3142/。
Acquire::http { Proxy "http://192.168.0.125:3142"; };
使用wq!保存并退出。这里,如果客户端机器上下载了任何包,都会缓存到apt-cache服务器上。
在小编的客户端机器中,可以更新92个软件包,其中有43个更新可用于安全更新。我们已经对缓存服务器应用了相同的更新。因此,这些包现在将缓存在apt-cacher中。如果我更新这台客户端计算机,那么从互联网获取软件包不会花费太多时间。
现在更新存储库并升级软件包。
$ sudo apt-get update $ sudo apt-get upgrade
在上面的截图中,它显示我们需要更新85个软件包,其大小为104MB,让我们看看获取该软件包需要多长时间。
实际上,我只是使用256Kbps的互联网连接,下载速度仅为50Kbps到60Kbps。但请看下图,它可以在3秒内获取104MB,这是因为它已经缓存在apt-cacher-ng服务器中。
如果我们需要查看已下载的缓存计数数据,可以在任何网络浏览器中访问ip:port(本文是:192.168.0.125:3142)来查看统计信息,正如上面内容所介绍的那样:
总结
通过上面的使用示例可以知道,当我们下载任何软件包以安装在任何Debian/Ubuntu计算机中时,如果该软件包在apt-cache中可用,它将从apt-cache-ng服务器获取,如果没有,它将从互联网获取到本地存储库以供将来使用,相当的方便的智能。
总之,本文主要介绍了如何使用apt-cacher-ng为apt软件包设置本地缓存服务器,这种设置可以节省时间和带宽,希望对所有使用Debian/Ubuntu机器的人有所帮助。