分享最新优惠信息
购买主机更加划算

Ubuntu系统使用apt-mirror设置本地存储库详细示例演示

如果你在网络中管理多台Ubuntu服务器,则为每个系统单独下载更新和软件包会很麻烦,因为它不但会占用大量带宽,而且还会花费很多时间。

遇到这种情况,如果你只需下载一次所有必需的软件包并让所有系统从你自己的存储库本地安装它们,那就比较省事了?这正是apt-mirror帮助你做的事情。

本文小编将简单介绍使用apt-mirror设置本地Ubuntu存储库,如果你有这方面的烦恼,不妨一起来看看。

apt-mirror

什么是apt-mirror?

apt-mirror是一个小工具,它可以从Ubuntu镜像下载整个APT仓库(或其子集),并将其保存到你的本地服务器,这样你就可以通过HTTP协议提供这个本地仓库,并将你的客户端指向它。大多数情况下apt-mirror可以帮你:

  • 创建Ubuntu软件包的本地镜像
  • 减少互联网带宽使用(非常适合有限带宽设置)
  • 加快包的安装和更新
  • 在离线或隔离环境中工作

前期准备工作

在开始镜像Ubuntu存储库之前,需要准备以下内容。以下是要点的细分以及每个要点的重要性。

  • 需要一台专用的Ubuntu机器,最好运行最新的LTS长期支持)版本,例如Ubuntu 24.04Ubuntu 22.04Ubuntu 20.04
  • 需要150GB250GB可用磁盘空间,具体取决于你计划镜像的Ubuntu存储库的大小。
  • 能够熟练使用命令行:编辑文件、使用sudo运行命令、安装软件包以及设置基本服务(如ApacheNginx)
  • 第一次同步时,需要稳定且速度相当快的互联网连接,因为它可以下载数十甚至数百GB的数据,如果你想要镜像包含多个组件的整个Ubuntu版本,这一点尤为重要

步骤1、在Ubuntu中安装apt-mirror

要开始设置本地存储库,第一步是安装apt-mirror软件包,该软件包专门用于帮助你创建Ubuntu官方APT存储库的完整或部分镜像。

首先更新系统的软件包索引,以确保获得可用软件的最新版本。

sudo apt update

更新完成后,使用以下命令安装apt-mirror工具:

sudo apt install apt-mirror

安装之后,apt-mirror即可根据你的特定镜像需求进行配置。

步骤2、为本地Ubuntu存储库创建必要的文件夹

当你使用apt-mirror,它需要在你的系统上有一个地方来下载和存储所有存储库,例如数据包、元数据和结构。默认情况下,它将所有内容保存在目录下/var/spool/apt-mirror,该目录会成为你所镜像的Ubuntu仓库的本地副本。

虽然可以通过修改配置文件来更改此位置(将在后面步骤中介绍),但首先要确保该目录存在并且可以使用:

sudo mkdir -p /var/spool/apt-mirror

除此之外,还要创建另一个目录/var/www/html/ubuntu,该目录将成为面向公众的文件夹,网络上的客户端计算机可以通过ApacheNginx等Web服务器访问镜像存储库。

sudo mkdir -p /var/www/html/ubuntu

在此过程的后续阶段,需要将镜像目录中的内容同步到这个可通过Web访问的路径。这样,你的内部计算机就无需连接到互联网,它们将通过HTTP直接从你的本地镜像中提取更新。

步骤3、配置apt-mirror

安装apt-mirror完成后,需要指定下载内容、存储位置以及同步期间的操作,所有这些都通过位于以下位置的主配置文件进行控制:

/etc/apt/mirror.list

使用你喜欢的编辑器中打开该文件:

sudo nano /etc/apt/mirror.list

接下来让我们看一个用于为amd64(64 位)系统镜像Ubuntu 24.04Noble Numbat )的示例配置:

############# apt-mirror config #############

# Directory to store the mirrored files
set base_path    /var/spool/apt-mirror

# Internal structure directories
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript  $var_path/clean.sh

# Architecture you want to mirror
set defaultarch  amd64

# Number of download threads (10–20 is good for most)
set nthreads     10

# Tilde files control (leave as is)
set _tilde 0

############# Repositories to Mirror ###########

# Base Ubuntu 24.04 repositories
deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse

# Security updates
deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse

############# Clean Instructions ##############

clean http://archive.ubuntu.com/ubuntu
clean http://security.ubuntu.com/ubuntu

##############################################

步骤4、开始镜像APT包

一旦在mirror.list文件中正确配置了想要镜像的仓库和组件,就可以运行apt-mirror命令将Ubuntu软件包下载到本地服务器了:

sudo apt-mirror

上述命令连接到官方Ubuntu镜像服务器,获取你之前指定的元数据和包文件,并将它们保存到您的本地磁盘下的/var/spool/apt-mirror

根据你添加的组件数量(例如mainuniverse等)以及架构数量(例如amd64或i386),此过程可能需要数小时,并且可能占用超过100GB的磁盘空间。因此,在开始之前,请确保你的Ubuntu服务器有足够的可用存储空间。

个人强烈建议在screen或tmux会话中运行上述命令,因为大型下载需要耗费时间,而且如果你的SSH会话断开连接或者终端关闭,下载就会停止。使用screen或tmux可以确保该进程在后台继续运行,即便你失去了连接。

步骤5、通过Apache或Nginx提供镜像服务

一旦你系统使用apt-mirror下载完所有Ubuntu软件包,下一步就是让网络上的其它机器可以访问这些软件包。为此,需要通过HTTP提供镜像文件,这时ApacheNginx等Web服务器就可以发挥作用了。

为了简单起见,本文将使用Apache,因此首先使用以下命令安装Apache :

sudo apt install apache2

安装完成后,你需要让本地镜像目录能够被Apache的默认网站根目录访问,该目录通常位于/var/www/html为此,你可以创建从镜像目录到Web根目录的符号链接。例如,使用以下命令链接Ubuntu存档和安全镜像:

sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu
sudo ln -s /var/spool/apt-mirror/mirror/security.ubuntu.com/ubuntu /var/www/html/ubuntu-security

链接完成后就可以测试镜像是否正常工作了。打开浏览器并访问http://server-ip/ubuntu/dists/noble/。将server-ip替换为你自己镜像服务器的实际IP地址。如果一切设置正确,应该会看到Noble发行版的目录列表或发行文件。

步骤6、配置客户端使用本地镜像

一旦你的本地APT镜像设置完毕并通过HTTP提供服务,下一步就是配置你的客户端机器来使用它,而不是访问互联网获取软件包,这意味着你需要在每个客户端上编辑sources.list文件,告诉系统从哪里获取更新和软件。

首先备份现有sources.list文件,以防以后需要恢复到原始设置。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

之后,使用自己喜欢的文本编辑器中打开该文件:

sudo nano /etc/apt/sources.list

现在到了重要的部分,也就是将默认的Ubuntu镜像URL替换为本地镜像服务器的IP地址(或主机名)。例如,如果你的本地服务器IP是192.168.2.100,则你的源列表应如下所示:

deb http://192.168.2.100/ubuntu noble main restricted universe multiverse
deb http://192.168.2.100/ubuntu noble-updates main restricted universe multiverse
deb http://192.168.2.100/ubuntu-security noble-security main restricted universe multiverse

这些行告诉客户端机器直接从本地镜像获取基本系统包、更新和安全补丁,而不是转到archive.ubuntu.comsecurity.ubuntu.com

完成这些更改后,保存并运行以下命令:

sudo apt update

这将使用你的本地存储库刷新软件包索引。如果所有配置正确且本地镜像可以访问,客户端现在应该会直接从你的Ubuntu服务器拉取更新并安装软件包,从而加快安装速度并减少互联网使用量。

步骤7、自动镜像同步

一旦您使用apt-mirror完成本地Ubuntu镜像的初始同步,下一个重要步骤就是定期更新它。

Ubuntu仓库会频繁更新,包含新的软件包、安全补丁和错误修复。如果你的本地镜像过期,那么客户端系统将无法从这些更新中受益,这也就违背了创建镜像的初衷。

为了自动处理这个问题,这里使用了一个简单但功能强大的Linux功能,称为cron,它允许你安排任务(称为cron 作业)在特定时间或间隔运行。

为此,请通过运行以下命令打开root用户的crontab文件:

sudo crontab -e

现在将以下行添加到文件底部:

0 2 * * * /usr/bin/apt-mirror > /var/log/apt-mirror.log

这行代码告诉系统每天凌晨2:00运行apt-mirror命令。> /var/log/apt-mirror.log部分会将命令的输出发送到日志文件,以便你后期需要排除故障时可以查看。

小结

可用看出,使用apt-mirror搭建本地Ubuntu APT仓库,对于管理网络中多台机器的人来说是个很棒的解决方案。它不仅能节省时间和带宽,还能确保更快的软件包安装和更简便的维护,尤其在网络访问受限或无网络的环境中表现突出。

未经允许不得转载:惠主机 » Ubuntu系统使用apt-mirror设置本地存储库详细示例演示