当今的网络速度和普通互联网客户端一瞬间可以测量为几十吉字节,你可能会问,在局域网上设置本地存储库缓存的目的是什么?

其中一个原因是减少互联网带宽,在本地缓存中拉取软件包的高速度。但是,另一个主要原因应该是隐私保护。让我们想象一下,您组织中的客户端受到互联网访问限制,但他们的Linux系统需要定期进行软件和安全系统更新,或者只需获取新的软件包。更进一步,假设有一台服务器在私有网络上运行,包含并服务于仅限于受限网络段的机密敏感信息,绝不应暴露于公共互联网。
这只是建立局域网本地存储库镜像的一些原因,要委派一台边缘服务器来完成此任务,并配置内部客户端从其缓存镜像中获取软件。
Ubuntu提供了apt-mirror软件包,用于将本地缓存与官方的Ubuntu存储库同步,可以通过HTTP或FTP服务器配置镜像,与本地系统客户端共享其软件包。
要完成一个完整的镜像缓存,您的服务器至少需要120G的可用空间用于本地存储库。
要求
- 至少120G的可用空间
- 已安装并配置匿名模式的Proftpd服务器。
步骤1:配置服务器
1. 您可能想做的第一件事是通过访问Ubuntu存档镜像页面并选择您的国家,来确定离您位置最近和最快的Ubuntu镜像。

如果您的国家提供了更多镜像,您应该确定镜像地址并根据ping或traceroute结果进行一些测试。

2. 下一步是安装设置本地镜像库所需的软件。安装apt-mirror和proftpd软件包,并将proftpd配置为独立系统守护程序。
$ sudo apt-get install apt-mirror proftpd-basic


3. 现在是时候配置apt-mirror服务器了。通过添加最近位置(步骤1)来打开和编辑/etc/apt/mirror.list文件,——可选,如果默认镜像足够快,或者您不急——并选择您希望下载软件包的系统路径。默认情况下,apt-mirror使用/var/spool/apt-mirror位置作为本地缓存,但在本教程中,我们将使用更改系统路径并将set base_path指令指向/opt/apt-mirror位置。
$ sudo nano /etc/apt/mirror.list

您还可以在清除指令之前取消注释或添加其他来源列表——包括Debian来源——取决于您的客户使用的Ubuntu版本。您可以添加从12.04的来源,如果您愿意,但请注意添加更多来源需要更多的空间。
对于Debian源列表,请访问Debian Wiki或Debian Sources列表生成器。
4.现在您需要做的是,只需创建路径目录并运行apt-mirror命令,将官方Ubuntu 仓库与我们的本地镜像同步。
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

如您所见,apt-mirror在进行索引和下载存档,显示已下载软件包的总数和大小。正如我们可以想象的,110-120 GB已经足够大,需要一些时间来下载。
您可以运行ls命令查看目录内容。

一旦初始下载完成,未来的下载将会很小。
5. 当apt-mirror下载软件包时,您可以配置您的Proftpd服务器。您需要做的第一件事是,通过运行以下命令为proftpd创建匿名配置文件。
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
然后将以下内容添加到anonymous.conf文件中,并重新启动proftd服务。
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6. 下一步是通过执行绑定操作,将apt-mirror路径链接到proftpd路径,发出以下命令。
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

要验证它,请使用无参数或选项运行mount命令。
$ mount

7. 最后一步是确保Proftpd服务器在系统重新启动后会自动启动,并且mirror-cache目录也会自动挂载到ftp服务器路径。要自动启用proftpd,请运行以下命令。
$ sudo update-rc.d proftpd enable
要在proftpd上自动挂载apt-mirror缓存,请打开并编辑/etc/rc.local文件。
$ sudo nano /etc/rc.local
在exit 0指令前添加以下行。在尝试挂载前使用5秒延迟。
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

如果您从Debian软件源拉取软件包,请运行以下命令,并确保已启用上述rc.local文件的适当设置。
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8. 要进行每日apt-mirror同步,您还可以创建一个系统定时作业,每天在凌晨2点运行。运行crontab命令,选择您喜欢的编辑器,然后添加以下行语法。
$ sudo crontab –e

在最后一行添加以下行。
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

现在每天在凌晨2点时,您的系统存储库缓存将与Ubuntu官方镜像同步,并创建日志文件。
第二步:配置客户端
9. 要配置本地Ubuntu客户端,请在客户端计算机上编辑/etc/apt/source.list,将指向apt-mirror服务器的IP地址或主机名,将http协议替换为ftp,然后更新系统。
deb ftp://192.168.1.13/ubuntu trusty universe deb ftp://192.168.1.13/ubuntu trusty main restricted deb ftp://192.168.1.13/ubuntu trusty-updates main restricted ## Ad so on….

10. 要查看存储库,您实际上可以打开浏览器,使用FTP协议指向您的服务器IP地址或域名。

对于Debian客户端和服务器,同样适用该系统,唯一需要更改的是Debian 镜像和源列表。
此外,如果您安装新的Ubuntu或Debian系统,请在安装程序询问要使用哪个仓库时手动提供您的本地镜像地址,使用ftp协议。
拥有自己的本地镜像仓库的好处在于,您始终保持最新,您的本地客户端无需连接到互联网即可安装更新或软件。
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/