使用 apt-mirror 建立Debian Linux 本地仓库

在网络上管理多台 Linux 机器,为每台系统单独下载更新和软件包确实很耗时费力,应对网络不稳定、离线环境或是内部隔离环境,自建本地仓库,让所有 Linux 系统从自建仓库本地安装是一件值得做的事。

apt-mirror搭建Debian Linux本地仓库_linux系统下载软件_配置apt-mirror同步镜像目录

本文介绍 apt-mirror 自建本地仓库的方法。当然,需要准备好大容量硬盘。

安装 apt-mirror

sudo apt update && sudo apt install apt-mirror

默认情况下,所有内容保存到目录 /var/spool/apt-mirror

还需要在 /var/www/html/debian 创建另一个目录,该目录将作为可供公共访问的文件夹,允许网络上的客户端可以通过 Nginx 搭建的 Web 服务器访问镜像仓库。

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

将从镜像目录同步内容到这个可通过 Web 访问的路径。之后linux培训班,内部计算机就不需要连接到互联网,可以通过 HTTP 直接从本地镜像获取 Linux 系统更新。

配置 apt-mirror

安装完 apt-mirror 后,需要配置明确要下载哪些内容、存储位置以及同步过程中出现问题的处理方式。通过配置文件/etc/apt/mirror.list进行控制:

sudo vim /etc/apt/mirror.list
编辑配置文件

这里以 Debian 12 (Bookworm) 系统配置为例:

############# config ###############
# 设置镜像文件存储的本地根目录
set base_path    /var/spool/apt-mirror
#
# 设置镜像下载的并行线程数
set nthreads     20
#
# 设置默认下载的架构 (例如 amd64, i386, arm64)
set default_arch  amd64
#
# 是否执行清理脚本 (1 为开启,同步完后会自动运行 clean.sh)
set _cleanup 1
####################################
## --- Debian 12 (Bookworm) 官方源 ---
# 建议使用离你最近的镜像站,比如阿里云、清华源或华为源
# 核心二进制库
deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
# 安全更新库
deb http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
## --- 源码库 (可选) ---
# 如果不需要编译软件,可以注释掉以节省空间
# deb-src http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
############# cleanup ###############
# 这里的地址必须与上面 deb 声明的地址一致,用于清理过期包
clean http://mirrors.ustc.edu.cn/debian

开始镜像 APT 软件包

配置apt-mirror同步镜像目录_linux系统下载软件_apt-mirror搭建Debian Linux本地仓库

一旦正确配置了包含想要镜像的仓库和组件的 mirror.list 文件,就可以运行 apt-mirror 命令将 Linux 软件包下载到自建本地仓库了。

sudo apt-mirror
连接到官方镜像服务器,获取配置文件指定的元数据和软件包,并保存到本地硬盘 /var/spool/apt-mirror 目录下。

注意: 根据包含的组件数量(如 main、universe 等)以及架构数量(如 amd64 或 i386),自建本地仓库可能需要几个小时,并可能占用超过 100 GB 的磁盘空间。因此,在开始之前,确保有足够的可用存储空间。

强烈建议 在 tmux 会话中运行上述命令,因为大文件下载需要时间,如果SSH 会话断开连接或终端关闭,下载会停止。

使用 tmux 可以确保进程在后台继续运行,即使失去连接,还可以再次连接会话。

使用 nginx 提供 WEB 镜像

一旦使用 apt-mirror 完成所有软件包的下载,接下来就是使这些软件包对网络上的其他机器可访问。

linux系统下载软件_配置apt-mirror同步镜像目录_apt-mirror搭建Debian Linux本地仓库

为此,需要通过 HTTP 提供镜像文件,这正是搭建 Web 服务器的目的。

sudo apt install nginx
安装 nginx WEB服务器

将本地镜像目录设置为默认的 Web 根目录linux系统下载软件,该目录通常位于 /var/www/html

可以从镜像目录创建符号链接到 Web 根目录。例如,使用以下命令链接 Linux 存档和安全镜像:

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

链接完成后,测试一下镜像是否正常工作,打开浏览器访问:

。将 your-server-ip 替换为镜像服务器的实际 IP 地址。

配置apt-mirror同步镜像目录_apt-mirror搭建Debian Linux本地仓库_linux系统下载软件

配置本地网络客户端使用自建本地仓库

本地 APT 镜像设置完成并通过 HTTP 提供服务后,配置客户端机器使用本地自建仓库,而不是从互联网获取软件包,需要编辑每个客户端上的 sources.list 文件,告诉系统从哪里获取更新和软件。

sudo nano /etc/apt/sources.list
# 编辑本地客户端 apt 下载更新源

假设自建本地仓库的服务器IP是linux系统下载软件,则sources.list文件内容修改如下:

# 本地局域网镜像源
deb http://192.168.1.100/debian bookworm main contrib non-free non-free-firmware
deb http://192.168.1.100/debian bookworm-updates main contrib non-free non-free-firmware
deb http://192.168.1.100/debian bookworm-backports main contrib non-free non-free-firmware
# 安全更新(如果在 mirror.list 中配置了 debian-security)
deb http://192.168.1.100/debian-security bookworm-security main contrib non-free non-free-firmware

注意路径问题

客户端能否成功访问,取决于你在服务器上的 Web 服务器(如 Nginx)配置。

如果 Nginx 配置中root 指向
/var/spool/apt-mirror/mirror/mirrors.ustc.edu.cn/
客户端地址直接写 http://192.168.1.100/debian
如果 root 指向 /var/spool/apt-mirror/mirror/
客户端地址必须包含完整的域名路径:
http://192.168.1.100/mirrors.ustc.edu.cn/debian

本地自建仓库及时更新

配置apt-mirror同步镜像目录_apt-mirror搭建Debian Linux本地仓库_linux系统下载软件

使用 apt-mirror 完成本地镜像的首次同步后linux手机,重要的是定期保持其更新。

Linux 仓库会频繁更新新软件包、安全补丁和错误修复。如果本地镜像过时,客户端系统将无法得到这些更新,也就失去了维护镜像的初衷。

可以安排任务(称为 cron 作业 )在特定时间或间隔运行。

sudo crontab -e
# 编辑定时作业计划

设置crontab任务计划:

0 1 * * * /usr/bin/apt-mirror > /var/log/apt-mirror.log
每天凌晨1点更新本地自建仓库,并将结果存为日志以方便检查同步结果

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复