银河麒麟服务器版应配置yum本地源:挂载iso至/mnt/kylin,baseurl设为file:///mnt/kylin/,gpgcheck=0,并确认repodata/repomd.xml存在。

能直接用 ISO 挂载配本地源,就别折腾 rsync 或 Nginx 同步——除非你要服务几十台内网机器。单机或小规模内网,file:// 方式最稳、最快、零依赖。
怎么判断该配 APT 还是 YUM 源
别猜,看包管理器是否存在:
- 运行
apt list --installed | grep apt成功返回 → 是 APT 系(Ubuntu、Debian、银河麒麟桌面版) - 运行
yum repolist或dnf repolist成功返回 → 是 YUM/DNF 系(CentOS、RHEL、银河麒麟服务器版、Fedora) - 银河麒麟要特别注意:桌面版用 APT,服务器版用 YUM,混用命令必报错
挂载 ISO 后怎么写本地源配置
核心就三件事:挂对路径、写对 baseurl、关掉 GPG 校验。常见错误是路径多一个斜杠、少一个斜杠,或把 /mnt/cdrom 写成 /mnt/iso 却没创建该目录。
- 挂载前先确认 ISO 实际结构:
ls /mnt/cdrom/dists/(APT)或ls /mnt/cdrom/Packages/(YUM),否则baseurl一定失效 - APT 本地源示例(银河麒麟桌面版):
deb [trusted=yes] file:///mnt/cdrom/ v101 main restricted universe multiverse
- YUM 本地源示例(CentOS 7):
[local]
name=local-centos7
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=0
-
gpgcheck=0必须设,ISO 自带的 GPG 密钥通常不被系统信任,硬开gpgcheck=1会直接卡在Retrieving key...
为什么 yum makecache 或 apt update 总失败
不是网络问题,是元数据缺失或路径不可读。YUM 要求 repodata/repomd.xml 存在,APT 要求 dists/<codename>/InRelease</codename> 或 Release 可访问。
- 挂载 ISO 后立刻检查:
ls /mnt/cdrom/repodata/repomd.xml(YUM)或ls /mnt/cdrom/dists/v101/InRelease(APT),不存在就说明 ISO 不完整或挂载错目录 - 权限问题常被忽略:确保
root能读取挂载点,普通用户执行apt update时若挂载用的是user选项,会因权限不足跳过该源 - 缓存清理要彻底:
yum clean all比yum clean metadata更可靠;apt clean后再apt update,别只靠apt update -o Acquire::ForceIPv4=true硬扛
什么时候必须上 HTTP 服务(Nginx/Apache)
只有两个真实场景绕不开:多台机器共享同一份源,或ISO 目录结构不标准(比如自定义打包的 RPM 包集合,无 repodata)。
- 用 Nginx 时,
baseurl改成http://192.168.x.x/centos7/,但必须确保index.html关闭、目录浏览开启,且repodata/在根下可直访 - 自己生成 repodata?别手写:
createrepo -v /path/to/rpms/(YUM),dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz(APT),漏一步元数据就无效 - 同步整站镜像(如清华源)需用
rsync,但注意--delete会清空目标,首次同步建议去掉该参数;rsync -avz --exclude="isos/" rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/ /var/www/html/centos7/
最容易被忽略的点:YUM 的 baseurl 结尾不加 / 会导致 repodata 路径拼接错误;APT 的 deb 行末尾不能有多余空格,否则 apt update 会静默跳过该行。这些细节不报错,只让你以为“源配置好了”,实际根本没生效。











