可行性与总体思路
可以。Cobbler 支持为 Debian/Ubuntu 构建和管理本地的 APT 镜像仓库,并通过 debmirror 将上游仓库镜像到内网,再在 profile 中把该仓库发布给客户端使用,实现完全离线与可控的软件源。Cobbler 自身具备镜像/仓库管理能力,且对 Debian 系列使用 debmirror 进行管理;debmirror 可镜像 Ubuntu/Debian 并可配置只同步指定发行版、组件与架构,适合内网定制源。
实现步骤
- 安装与检查
- 安装必要组件:cobbler、debmirror、apache(或其他 Web 服务)。执行 cobbler check,按提示完善环境(如获取引导加载器、安装 debmirror)。
- 配置 debmirror
- 复制示例配置:cp /usr/share/doc/debmirror/examples/debmirror.conf /etc/debmirror.conf
- 按需编辑 /etc/debmirror.conf,常见做法是注释掉 @dists 与 @arches 以使用命令行参数控制同步范围(避免被配置文件默认值限制)。
- 同步上游镜像到本地
- 示例(以 Ubuntu 20.04 为例,仅 amd64,含安全与更新组件):
nohup /usr/bin/debmirror
–progress --nocleanup --ignore-release-gpg
-e rsync
–host=mirrors.tuna.tsinghua.edu.cn --root=/ubuntu
–dist=focal,focal-backports,focal-security,focal-updates
–section=main,restricted,universe,multiverse
/mirror/ubuntu/ubuntu20 --nosource -a amd64 \
/mirror/ubuntu/ubuntu20.log 2>&1 &
- 说明:–nocleanup 可避免每次清理已下载内容;如网络或版本较新,可改用 https;日志与进度便于排错与监控。
- 在 Cobbler 中注册为本地仓库
- 将本地镜像目录通过 Web 发布(例如 DocumentRoot 指向 /var/www 或 /srv,确保 /mirror 可访问),然后在 Cobbler 中新增 repository,指向该本地 APT 根目录(如 http://<cobbler_ip>/mirror/ubuntu/ubuntu20/)。
- 关联到安装用的 profile
- 在对应 Debian/Ubuntu 的 profile 中,添加或修改 repositories,使其包含上一步创建的本地仓库;安装时客户端将使用内网源进行软件包获取。
- 同步与验证
- 执行 cobbler sync 使配置生效;在客户端检查 /etc/apt/sources.list 是否包含指向内网源的条目,并执行 apt update 验证连通与元数据可用性。
关键配置与参数建议
- 镜像粒度与范围
- 仅同步需要的发行版与组件(如 focal、focal-updates、focal-security),减少体积与同步时间;必要时再补充 backports。
- 架构控制
- 明确指定 -a amd64(或 arm64 等),避免拉取不需要的架构包。
- 协议与证书
- 默认常用 rsync;若上游支持且环境允许,可改用 https 提升可靠性与安全性。
- 清理策略
- 初次或带宽充足环境可用 --nocleanup 累积包;稳定后去掉该参数或定期清理以减少磁盘占用。
- 定时更新
- 将 debmirror 命令放入定时任务(如每日/每小时)自动增量同步,保持内网源与上游一致。
常见问题与排查
- 执行 cobbler check 提示 “debmirror package is not installed”
- 安装 debmirror 后再次检查:apt-get install debmirror(或 yum/dnf 对应包)。
- 同步时报 GPG 或签名相关错误
- 临时可使用 --ignore-release-gpg;生产环境建议配置可信 GPG 并校验签名,确保仓库完整性与安全性。
- 客户端无法访问内网源
- 确认 Web 服务已暴露本地目录(DocumentRoot 与目录权限)、防火墙策略放行、Cobbler 中 repository 的 URL 与客户端可解析一致;必要时在客户端用 curl/wget 测试访问与索引文件下载。