Linux apt 更新失败问题解决

5次阅读

linux apt update 失败通常因源不可达、gpg密钥过期、代理干扰或源配置错误;应依次检查网络连通性、更换国内镜像源、修复gpg密钥、清理缓存及校准系统时间。

Linux apt 更新失败问题解决

Linux 使用 apt update 失败,通常是因为源地址不可达、GPG 密钥过期、网络代理干扰或软件源配置错误。先别急着重装系统,多数情况能快速定位并修复。

检查网络连通性与基础访问

确保系统能正常访问互联网,尤其验证是否能到达默认源服务器:

  • 运行 ping -c 3 archive.ubuntu.com(Ubuntu)或 ping -c 3 deb.debian.org(Debian),看是否丢包或超时
  • 若 ping 不通但网页能打开,可能是 ICMP 被屏蔽,改用 curl -I http://archive.ubuntu.com/ubuntu/dists/$(lsb_release -sc)/InRelease 测试 HTTP 可达性
  • 如使用公司网络或校园网,确认是否需配置 HTTP 代理;临时取消代理可执行:
    unset http_proxy https_proxy && export HTTP_PROXY="" HTTPS_PROXY=""

更换为可用的软件源镜像

官方源在国内常不稳定,换国内镜像(如清华、阿里云、中科大)可显著提升成功率:

  • 备份原配置:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 根据系统版本编辑源列表,例如 Ubuntu 22.04(jammy)替换为清华源:
    sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
    再替换安全更新源:
    sudo sed -i 's|http://security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
  • 执行 sudo apt update 验证是否恢复

修复 GPG 密钥错误(NO_PUBKEY / EXPKEYSIG)

提示类似 NO_PUBKEY ABCDEF1234567890EXPKEYSIG,说明本地缺少或密钥已过期:

  • 自动尝试更新密钥库:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABCDEF1234567890(把末尾密钥替换成报错中的值)
  • 若提示 apt-key is deprecated(新系统常见),改用:
    sudo gpg --dearmor -o /usr/share/keyrings/ubuntu-archive-keyring.gpg /tmp/ubuntu-keyring.asc(需先下载对应 keyring)
  • 更稳妥方式是重装官方密钥包:
    Ubuntu:sudo apt install --reinstall ubuntu-keyring
    Debian:sudo apt install --reinstall debian-keyring debian-archive-keyring

清理缓存与临时文件

损坏的 InReleaseRelease.gpg 文件会导致反复失败:

  • 清空 APT 缓存:sudo rm -rf /var/lib/apt/lists/*
  • 重建空列表目录:sudo mkdir -p /var/lib/apt/lists/partial
  • 再次运行 sudo apt update

不复杂但容易忽略:有时只是时间不同步导致 HTTPS 证书校验失败,可运行 sudo timedatectl set-ntp true 同步系统时间后再试。

text=ZqhQzanResources