在Ubuntu和Debian系统中使用‘apt-mirror’设置本地仓库

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

Setup Local Repositories in Ubuntu

其中一个原因是减少互联网带宽,在本地缓存中拉取软件包的高速度。但是,另一个主要原因应该是隐私保护。让我们想象一下,您组织中的客户端受到互联网访问限制,但他们的Linux系统需要定期进行软件和安全系统更新,或者只需获取新的软件包。更进一步,假设有一台服务器在私有网络上运行,包含并服务于仅限于受限网络段的机密敏感信息,绝不应暴露于公共互联网。

这只是建立局域网本地存储库镜像的一些原因,要委派一台边缘服务器来完成此任务,并配置内部客户端从其缓存镜像中获取软件。

Ubuntu提供了apt-mirror软件包,用于将本地缓存与官方的Ubuntu存储库同步,可以通过HTTPFTP服务器配置镜像,与本地系统客户端共享其软件包。

要完成一个完整的镜像缓存,您的服务器至少需要120G的可用空间用于本地存储库。

要求

  1. 至少120G的可用空间
  2. 已安装并配置匿名模式的Proftpd服务器。

步骤1:配置服务器

1. 您可能想做的第一件事是通过访问Ubuntu存档镜像页面并选择您的国家,来确定离您位置最近和最快的Ubuntu镜像。

Ubuntu Archive Mirror

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

Select Mirror Location

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

$ sudo apt-get install apt-mirror proftpd-basic
Install apt-mirror Proftpd
ProFTPD Configuration

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
Configure apt-mirror Server.

您还可以在清除指令之前取消注释或添加其他来源列表——包括Debian来源——取决于您的客户使用的Ubuntu版本。您可以添加从12.04的来源,如果您愿意,但请注意添加更多来源需要更多的空间。

对于Debian源列表,请访问Debian WikiDebian Sources列表生成器。

4.现在您需要做的是,只需创建路径目录并运行apt-mirror命令,将官方Ubuntu 仓库与我们的本地镜像同步。

$ sudo mkdir -p /opt/apt-mirror
$ sudo apt-mirror
Create apt-mirror Paths

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

您可以运行ls命令查看目录内容。

Verify apt-mirror Paths

一旦初始下载完成,未来的下载将会很小。

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>
Configure ProFTPD

6. 下一步是通过执行绑定操作,将apt-mirror路径链接到proftpd路径,发出以下命令。

$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/  /srv/ftp/
Mount apt-mirror to ProFTP Path

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

$ mount
Verify Paths

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/
Auto Mount Apt Mirrors

如果您从Debian软件源拉取软件包,请运行以下命令,并确保已启用上述rc.local文件的适当设置。

$ sudo mkdir /srv/ftp/debian
$ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/
Debian Repository Setup

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

$ sudo crontab –e
Daily apt-mirror Synchronization

在最后一行添加以下行。

0  2  *  *  *  /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log
Add Cron Entry for Synchronization

现在每天在凌晨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….
Configure Clients

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

View Local Repositories

对于Debian客户端和服务器,同样适用该系统,唯一需要更改的是Debian 镜像源列表

此外,如果您安装新的UbuntuDebian系统,请在安装程序询问要使用哪个仓库时手动提供您的本地镜像地址,使用ftp协议。

拥有自己的本地镜像仓库的好处在于,您始终保持最新,您的本地客户端无需连接到互联网即可安装更新或软件。

Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/