配置本地YUM/APT离线仓库的核心是同步元数据(repodata/Packages.gz)并发布HTTP服务,而非仅拷贝.rpm/.deb包;缺少元数据则依赖解析失败。需按体系选择ISO挂载或createrepo(YUM)、apt-mirror或dpkg-scanpackages(APT),多机共享必须用HTTP,禁用NFS/FTP。

配置本地 yum 或 apt 局域网离线仓库,核心是“同步元数据 + 发布服务 + 客户端指向”。不是简单拷几个 .rpm 或 .deb 就能用,关键在 repodata(yum) 或 Packages.gz / Release(apt) 这类索引文件。没它们,包管理器根本不知道依赖关系,安装必然失败。
一、YUM 系统(CentOS/RHEL/银河麒麟服务器版)
适合单机快速启用或小规模内网(≤10台)。优先推荐 ISO 挂载方式,零工具、零网络、最稳。
- 挂载官方 ISO 到
/mnt/cdrom,确认里面有Packages/和repodata/repomd.xml - 新建
/etc/yum.repos.d/local.repo,内容写死路径:
[local]
name=Local CentOS DVD
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0 - 执行
yum clean all && yum makecache,再yum repolist看是否列出几百个可用包
若需长期维护或自定义 RPM 包(比如内部编译的 nginx、定制脚本),则走 createrepo 流程:
- 把所有 .rpm 放进统一目录,如
/opt/myrepo - 装工具:
yum install -y createrepo - 生成元数据:
createrepo -v /opt/myrepo(首次);后续加包用createrepo --update /opt/myrepo - 配置 repo 文件,
baseurl=file:///opt/myrepo,其余同上
二、APT 系统(Ubuntu/Debian/银河麒麟桌面版)
不能用 createrepo,得用 apt-mirror(同步)或 dpkg-scanpackages(手动建源)。
- 先在有网机器装
apt-mirror:sudo apt install apt-mirror - 编辑
/etc/apt/mirror.list,指定上游源和本地存储路径,例如:
set base_path /opt/apt-mirror
deb http://archive.ubuntu.com/ubuntu focal main restricted - 运行
apt-mirror同步(耗时长、占空间大,focal 全量约 200GB+) - 同步完后,用
ln -sf /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu暴露 HTTP 路径 - 客户端改
/etc/apt/sources.list:
deb [trusted=yes] http://192.168.10.100/ubuntu focal main restricted
若只同步少量软件(比如就装 vim + curl),更轻量的方式是:
用 apt download 下载主包及全部依赖 → 拷到离线机 → 在该目录下运行:dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz → 配置 sources.list 指向 file:///path/to/dir。
三、多机共享必须上 HTTP 服务
file:// 协议只能本机用。只要超过一台机器要访问,就得部署 web 服务:
- YUM 侧:装
httpd或nginx,把/var/www/html/localrepo或/opt/myrepo目录设为根路径,确保repodata/可被 curl 直接访问 - APT 侧:同样用 httpd/nginx,暴露
/var/www/html/ubuntu或你存放Packages.gz的目录 - 防火墙放行 80 端口,SELinux 若开启需执行
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" && restorecon -Rv /var/www/html
四、验证与排错要点
-
curl http://仓库IP/repodata/repomd.xml(YUM)或curl http://仓库IP/dists/focal/InRelease(APT)必须返回 XML 或文本内容,否则客户端一定失败 - 客户端执行
yum makecache或apt update前,先yum clean all或apt clean,避免缓存干扰 - 常见错误:baseurl 多/少斜杠、挂载点权限不足(
ls -ld /mnt/cdrom确认 root 可读)、gpgcheck=1 但没导入密钥、repodata 目录被误删 - 别用 NFS/FTP 替代 HTTP —— YUM 和 APT 对 NFS 支持不稳定,FTP 缺少 HTTPS 和缓存友好性,HTTP 是唯一通用可靠方案


















