企业级全版本离线软件库需完整保留历史deb包、元数据及gpg签名,核心工具apt-mirror须显式配置base_path、nthreads、_tilde0、cleanscript,并启用deb-src双协议同步全架构源;首次同步耗时长且需≥2tb存储,后续增量更新自动识别变更;通过nginx暴露http服务,客户端指向内网地址并导入官方gpg密钥以确保校验有效。

明确目标与前提条件
构建企业级全版本离线软件库,核心是完整保留所有历史包(含旧版 deb、dsc、pool 目录结构)、元数据(Release、InRelease、Packages.gz 等)及 GPG 签名验证能力。Apt-mirror 是专为此类镜像设计的工具,但默认配置仅同步最新包 —— 必须显式启用 “hardlinks” 和 “clean” 之外的关键选项,并合理规划存储路径与网络策略。
安装与基础配置 apt-mirror
在一台具备公网访问权限、大容量磁盘(建议 ≥2TB 起步)、稳定带宽的 Ubuntu/Debian 主机上操作:
- 执行 sudo apt update && sudo apt install apt-mirror -y 安装工具
- 主配置文件为 /etc/apt/mirror.list,需用 root 权限编辑
- 关键配置项必须包含:
set base_path /var/www/mirror
set nthreads 20(根据 CPU 核心数调整)
set _tilde 0(禁用波浪号路径替换,保障路径一致性)
set run_postmirror 0(先关闭自动脚本,避免干扰初始化)
配置镜像源 URL 并启用全版本同步
在 mirror.list 中添加目标仓库(如官方 Ubuntu 镜像),重点在于使用 deb-src + deb 双协议,并指定 all 和具体架构(amd64、arm64 等):
- 示例(同步 Ubuntu 22.04 全架构+源码+所有更新通道):
deb https://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb https://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb https://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb-src https://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse -
必须添加:
set cleanscript /var/www/mirror/clean.sh
并手动创建该脚本,内容为:
#!/bin/bash
find $1 -name "*.deb" -mmin +1440 -delete
# 不删除 Packages、Release 等元数据,只清理过期 .deb(可按需调整) - 若需保留所有历史版本(非仅当前 Release),需确认上游仓库本身提供完整 pool(Ubuntu 默认支持;部分私有仓需额外启用 archive mode)
首次同步与后续增量更新
首次运行耗时长(Ubuntu 22.04 全量约 1.2TB,需 12–48 小时),务必后台执行并监控磁盘与网络:
- 执行 sudo -u apt-mirror apt-mirror 启动同步(以 apt-mirror 用户身份运行,保障权限隔离)
- 同步完成后,检查 /var/www/mirror/mirror/archive.ubuntu.com/ubuntu/dists/jammy/ 下是否存在 Release、Packages.gz、Sources.gz 及对应 pool/ 目录结构
- 日常更新只需再次运行相同命令;apt-mirror 自动比对 checksum 和时间戳,仅下载变更内容
- 建议通过 cron 每日执行:
0 3 * * * /usr/bin/sudo -u apt-mirror /usr/bin/apt-mirror >> /var/log/apt-mirror.log 2>&1
对外提供 HTTP 服务与客户端配置
离线库需通过 Web 服务暴露,推荐使用 nginx(轻量、高并发、支持 range 请求):
- 安装 nginx:sudo apt install nginx -y
- 修改站点配置(/etc/nginx/sites-available/mirror),root 指向 /var/www/mirror/mirror
- 客户端配置:
编辑 /etc/apt/sources.list,将原地址替换为内网地址,例如:
deb http://mirror.internal.lan/archive.ubuntu.com/ubuntu jammy main - 导入 GPG 密钥(确保校验有效):
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXX
或更安全方式:下载 archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg 后本地导入











