如何使用带有apt-cacher-ng的Raspberry PI创建APT代理?

如果您在互联网速度较慢的地方生活和工作,并且需要更新一堆Debian和/或Ubuntu系统,则此apt代理将使您的生活更加轻松和快捷.


易于 是Debian和Ubuntu Linux发行版用于安装和更新其软件的程序。在开箱即用的配置中,当您使用apt安装程序时,例如:

sudo apt安装inkscape

APT将从分发存储库服务器下载软件档案并进行安装。当软件包很小,只需要下载几个文件并且您的Internet连接速度很快时,这非常有用.

但是,如果您要安装很多软件,并且办公室里到处都是需要更新的计算机,并且您的互联网连接速度很慢,则可能需要很长时间才能在每台计算机上下载并安装所有内容.

代理服务器,特别是缓存代理,例如 apt-cacher-ng 是位于您要更新的计算机和包含要下载的软件的存储库服务器之间的程序。您要更新的计算机将向代理服务器而不是存储库请求软件,然后代理将请求转发到存储库,下载软件并将其交还给更新计算机.

聪明的部分是,代理将保留其下载的所有软件文件的副本。当本地网络上的另一台计算机尝试下载相同的文件时,即它想安装或更新相同的软件时,该代理已经具有一个副本,可以将其提供给请求的计算机而无需下载它.

首次下载后,所有后续下载将以您本地网络的速度压缩.

要求

要完成本指南,您将需要以下内容:

  • 屏幕和键盘可插入Raspberry Pi。如果可以通过SSH连接到Raspberry Pi,则这些是可选的.
  • Raspberry Pi上的非root用户,启用了sudo的用户.
  • 本地网络上的Debian或Ubuntu系统.

满足所有这些要求后,以sudo用户身份登录Raspberry PI上的终端,然后继续进行下一部分.

安装apt-cacher-ng

在Linux上安装任何新软件包之前,执行系统更新始终是一个好主意。这将确保您的系统运行的软件包版本与分发存储库中可用的软件包版本相同,并且可以确保本地软件包版本列表是最新的。这样做将确保您在安装apt-cacher-ng时不会遇到任何错误。.

以下命令将更新您的系统:

$ sudo apt更新
$ sudo apt升级

现在,您的Raspberry PI是最新的,安装apt-cacher-ng:

$ sudo apt安装apt-cacher-ng

安装程序将询问您是否要通过apt-cacher-ng启用HTTPS隧道。您应该对这个问题回答“否”。我们将配置APT以通过apt-cacher-ng代理HTTPS连接,而不需要隧道。另外,如果需要,您可以稍后在apt-cacher-ng配置文件中更改这些选项。.

与现代软件约定保持一致,在安装apt-cacher-ng时会创建并启用systemd服务文件。这意味着apt-cacher-ng将在启动时自动启动,并且您还可以使用常规的systemd service命令管理apt-cacher-ng:

$ sudo systemctl启动apt-cacher-ng.service
$ sudo systemctl stop apt-cacher-ng.service
$ sudo systemctl重新启动apt-cacher-ng.service

apt-cacher-ng现在作为系统守护程序运行,侦听端口3142并准备接受来自apt的连接.

在Raspberry PI上配置apt

我们将配置为使用apt-cacher-ng代理的第一个系统将是Raspberry PI上的apt。我们将apt配置为使用apt-cacher-ng代理的方式将是在apt的源文件中重写URL。源文件包含可下载发行版软件的存储库URL列表.

您可以在/etc/apt/sources.list中找到Raspbian的主要源文件,并且在全新安装中如下所示:

deb http://raspbian.raspberrypi.org/raspbian/ buster主要贡献者非自由rpi
#取消注释行,然后单击“ apt-get update”以启用“ apt-get source”
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster主要贡献者非自由rpi

这里唯一的活动(未注释)行是第一行,即:

deb http://raspbian.raspberrypi.org/raspbian/ buster主要贡献者非自由rpi

我们需要修改此行,以便使用文本编辑器打开文件,这里我们使用nano:

$ sudo nano /etc/apt/sources.list

修改第一行,使其如下所示:

deb http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

您在此处所做的是将127.0.0.1:3142插入URL.

IP地址127.0.0.1始终是本地计算机的IP,通常称为“本地主机”。 :3142部分指示端口.

通过按CTRL + o,ENTER,CTRL + x保存和退出nano.

现在,您需要对/etc/apt/sources.list.d/raspi.list中的源文件进行相同的更改.

apt和apt-cacher-ng现在可以进行测试了.

使用apt-cacher-ng测试apt

每当您运行apt时,它都会缓存它下载的所有文件的副本。 apt这样做是为了避免不做任何不必要的下载,并保留安装档案的本地副本,以防万一需要重新安装软件包并且没有互联网的情况。.

此本地缓存意味着如果存储库未更改,则在运行apt更新或apt升级时apt将不会与代理联系。因此,为了测试代理,我们将需要手动清除apt缓存。以下命令将清除所有apt的缓存程序包:

$ sudo rm -rf / var / lib / apt / lists /
$ sudo rm -rf / var / cache / apt / *

现在,通过运行更新并检查是否有错误来测试apt:

$ sudo apt更新

您应该看到几行输出,如下所示:

获取:1 http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]

以http://127.0.0.1:3142/开头的URL表示apt正在从apt-cacher-ng接收更新文件.

您还可以通过运行以下命令来查看apt-cacher-ng日志文件中的错误:

$ tail -f /var/log/apt-cacher-ng/apt-cacher.log

在第二个终端。如果您没有遇到任何错误,则可以继续在本地网络上配置Debian或Ubuntu系统.

配置Ubuntu或Debian系统以使用apt-cacher-ng

您想从apt-cacher-ng代理中受益的本地网络上的Debian或Ubuntu系统不需要安装任何其他软件。您需要做的就是重新编写其源文件,以便他们从apt-cacher-ng收集所有更新,而不是直接联系存储库。.

对源文件进行的更改与对Raspberry PI对源进行的编辑完全相同,只是需要使用Raspberry PI的IP地址代替127.0.0.1。.

这意味着您首先需要获取Raspberry Pi的IP地址。获取Raspberry PI IP地址的最简单方法是在Raspberry PI的终端中运行以下命令:

$主机名-I

这将打印出Raspberry PI具有的IP地址。使用第一个IPv4 IP地址。在这里,我将使用示例地址192.168.0.2。您将需要替换Raspberry PI的IP地址.

回到客户端计算机上,使用文本编辑器打开主要源文件,这里我们使用nano:

$ sudo nano /etc/apt/sources.list

该文件将包含与Raspberry PI的/etc/apt/sources.list相同格式的行。这是Debian Buster安装中的示例行:

deb http://ftp.debian.org/debian buster main

您需要使用Raspberry PI的IP如下编辑这些行:

deb http://192.168.0.2:3142/ftp.debian.org/debian buster main

编辑/etc/apt/sources.list和/etc/apt/sources.list.d/下任何其他源文件中的所有行。然后删除任何本地缓存的文件以进行测试:

$ sudo rm -rf / var / lib / apt / lists / *
$ sudo rm -rf / var / cache / apt / *

再次更新系统:

$ sudo apt更新
$ sudo apt升级

apt的输出应通过打印如下包含代理IP的行来指示更新文件来自apt-cacher-ng代理:

点击数:1 http://192.168.0.2:3142/ftp.debian.org/debian buster InRelease

现在,此计算机已完全配置为可以使用新的apt代理。您将需要编辑以后添加到此计算机的任何新的源文件,包括为发行版升级而添加的任何新行。.

通过HTTPS的APT

到目前为止,我们查看的源文件都使用了HTTP连接。这是Debian和Ubuntu的蓄意设计决定,因为安装档案具有内置的内部加密签名,可以阻止恶意篡改。因此,HTTPS不会增加很多额外的安全性,同时会大大增加拥有大量不同地理位置的镜像的工程负担.

但是,使用HTTPS有一些优点,这意味着某些非官方存储库使用HTTPS。 apt-cacher-ng支持两种处理HTTPS存储库的方法.

首先是将客户端直接连接到存储库服务器。不幸的结果是,apt-cacher-ng不会缓存软件包。如果您希望以这种模式运行apt-cacher-ng,请使用文本编辑器打开/etc/apt-cacher-ng/acng.conf:

$ sudo nano /etc/apt-cacher-ng/acng.conf

并添加以下行:

PassThroughPattern:。*

这将apt-cacher-ng配置为允许HTTPS连接从客户端传递到存储库.

第二种方法是修改客户端源文件中的存储库行,以便客户端通过HTTP连接到apt-cacher-ng,但是apt-cacher-ng随后将通过HTTPS连接到存储库。这些软件包将通过HTTPS下载到apt-cacher-ng,然后通过HTTP发送到客户端计算机。 apt-cacher-ng可以缓存程序包,我们不会失去HTTPS的好处.

以下源代码行用于通过HTTPS访问Docker存储库:

deb [arch = amd64] https://download.docker.com/linux/debian buster稳定

当您编辑HTTP行时,您将192.168.0.2:3142添加到了URL中。当您编辑HTTPS行时,您需要添加192.168.0.2:3142/HTTPS///例如:

deb [arch = amd64] http://192.168.1.67:3142/HTTPS////download.docker.com/linux/debian buster稳定

现在客户端计算机将通过HTTP从apt-cacher-ng请求软件包,而apt-cacher-ng将通过HTTPS从Docker下载并缓存软件包.

管理apt-cacher-ng

Web GUI可用于管理本地网络上的apt-cacher-ng。为了访问此GUI,您需要将浏览器指向:

http://:3142 / acng-report.html

替换示例本地网络IP 192.168.0.2,我们得到:

http://192.168.0.2:3142/acng-report.html

GUI的第一个也是最重要的部分,“传输统计信息”,为您提供了从存储库中下载的数据量与从缓存中提供的数据相比的信息。下图显示了GUI的这一部分:

“缓存效率”部分会告诉您apt-cacher-ng从其缓存V中提供了多少文件,绕过了缓存。 “命中”表示代理从缓存提供的文件,“未命中”表示代理计算机从存储库下载并添加到缓存的文件.

管理缓存

当开发人员向存储库添加新版本时,apt-cacher-ng下载并提供给本地网络上的客户端计算机的文件将变得过时。发生这种情况时,这些陈旧的apt-cacher-ng必须将它们从高速缓存中删除,因为它们不再需要,并且会占用驱动器上的空间。 Raspberry PI审查缓存并自动删除陈旧的文件.

当您安装apt-cacher-ng时,还在以下位置安装了cron文件:

/etc/cron.daily/apt-cacher-ng

每天都会由cron运行,这会为您清除缓存.

如果您希望手动查看并清除缓存,则应登录Web GUI并单击标记为“开始扫描和/或到期”的按钮。通常不需要这样做,但是如果要从快速更新的存储库中进行更新,则可能需要这样做。.

您现在有了一个高效的apt代理,它将减轻办公室或家庭中大型重复性系统更新的网络负担。.

有兴趣探索Raspberry Pi, 查看此在线课程.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map