执行 apt update 时若出现 The repository ... does not have a Release file,APT 会默认禁用该软件源。这是一项完整性保护:没有经过签名认证的 Release 或 InRelease 元数据,APT 无法确认索引来自可信仓库。
不要先加入 trusted=yes 或打开不安全仓库。大多数故障来自地址写错、发行版代号过期、组件不存在,或第三方仓库尚未支持当前系统版本。

记录完整报错并定位来源文件
先运行一次更新并保存完整输出:
sudo apt update
然后列出所有启用的源:
grep -RhsnE '^[[:space:]]*deb |^Types:|^URIs:|^Suites:|^Components:' \
/etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null
Debian 和 Ubuntu 新版本可能同时使用传统 .list 文件与 deb822 格式的 .sources 文件。报错 URL 中的主机名、路径、发行版代号和组件应逐项对应到配置。
先找出是哪一个源失败,不要删除整个 /etc/apt/sources.list.d/。 其他仓库可能正常工作,粗暴清空会破坏后续安全更新。
核对系统版本与仓库发行代号
确认当前系统真实身份:
. /etc/os-release
printf 'ID=%s VERSION_ID=%s CODENAME=%s\n' "$ID" "$VERSION_ID" "$VERSION_CODENAME"
dpkg --print-architecture
源配置中的 suite 或 codename 必须是仓库实际发布的目录。常见错误包括把 Ubuntu 代号写入 Debian 源、系统升级后仍使用旧代号,或第三方仓库只支持部分版本。
不要用 lsb_release 输出猜测仓库路径,也不要盲目把代号替换成 stable。滚动别名可能在大版本发布时指向新系统,带来意外升级。生产服务器应使用仓库官方文档明确支持的发行版代号,并在变更前确认升级边界。
验证Release或InRelease是否真的存在
根据报错中的 base URL 和 suite 构造元数据地址,只获取响应头:
curl -fsSIL https://example.invalid/debian/dists/bookworm/InRelease
curl -fsSIL https://example.invalid/debian/dists/bookworm/Release
404 通常表示路径、代号或组件配置错误;403 可能是权限、地区或认证问题;TLS 错误则应先修复证书与系统时间。被强制跳转到登录页或 HTML 首页也不是有效的仓库元数据。
镜像临时同步时,可以换用发行版公布的其他官方镜像后稍后重试。第三方仓库则应核对厂商的安装文档和支持矩阵。只有仓库维护方能发布并签名正确的 Release 文件,客户端无法安全地补一个文件。
修正或暂时禁用失效软件源
确认配置错误后,先备份具体文件:
sudo cp -a /etc/apt/sources.list.d/vendor.list \
/etc/apt/sources.list.d/vendor.list.bak
sudoedit /etc/apt/sources.list.d/vendor.list
对于 deb822 格式,可编辑对应 .sources 文件的 URIs、Suites 和 Components。如果第三方仓库尚未支持当前发行版,最安全的临时做法是禁用该条目,而不是假装它可信。
禁用传统格式可以注释 deb 行;deb822 格式可以加入:
Enabled: no
禁用前要确认该仓库是否提供正在运行的关键软件及安全更新。 如必须停用,应记录替代更新渠道和重新评估日期。
需要在相同发行版上验证仓库配置时,可使用 萤光云 建立隔离测试机,或用 LightNode 做临时验证。不要把生产仓库凭据复制到不受控环境。
不要用不安全选项绕过认证
Debian 的 apt-secure 文档说明,当前 APT 对没有 Release 文件或只有未签名 Release 文件的仓库默认拒绝下载。allow-insecure=yes、trusted=yes 或 Acquire::AllowInsecureRepositories=true 会削弱这项保护,而且官方明确不建议使用。
Release 文件包含索引校验和,签名后的 InRelease 或 Release.gpg 建立仓库到客户端的信任链。关闭验证后,网络中间人、被入侵镜像或错误 DNS 都可能投递被篡改的软件包索引。
即使为了应急,也不要在生产源上全局关闭签名校验。 正确方案是恢复仓库元数据、使用维护方提供的密钥环与 Signed-By,或暂时停用源。
清理索引并完成更新验收
修正配置后重新获取索引:
sudo rm -rf /var/lib/apt/lists/partial/*
sudo apt update
apt-cache policy
一般不需要删除整个 /var/lib/apt/lists;只清理不完整下载即可。如果曾切换镜像或发行代号,应检查 apt-cache policy 中候选版本的来源和优先级,避免从意外仓库升级关键包。
随后可先模拟升级:
sudo apt-get -s upgrade
合格的验收标准是 apt update 无 Release 文件与签名错误、所有启用源都属于预期发行版,并且模拟升级没有意外降级、跨发行版或来源切换。
FAQ
换一个DNS能解决吗?
只有域名解析错误时才可能有帮助。大多数该报错来自 HTTP 404、仓库结构或发行版代号不匹配,应根据实际响应判断。
可以从别的镜像复制Release文件吗?
不可以。Release 文件中的校验和必须与同一仓库的索引一致,并由可信密钥签名。混用元数据会破坏完整性验证。
为什么浏览器能打开仓库首页,APT仍然失败?
APT需要特定 dists/<suite>/InRelease 或 Release 路径及签名,不是普通首页。返回网页不代表仓库结构完整。
温馨提示
APT拒绝无Release文件的软件源是在阻止不可信更新,不是可以随手关闭的障碍。 修改前备份源文件,优先依据发行版或厂商官方安装说明修正,并在恢复后核对所有候选包的来源。


