给一台老服务器升级软件,敲了 apt update,满屏 404 Not Found,末尾一句 E: Some index files failed to download。查了半天,是 /etc/apt/sources.list 里的版本代号还写着 focal,而系统其实早升到 jammy 了。

文件在哪,先看清楚

Ubuntu 的源配置分两处:老式的 /etc/apt/sources.list 单文件,和 20.04 之后流行的 /etc/apt/sources.list.d/ 目录,里面是 ubuntu.sources 或多个 .list 文件。两边可能同时存在,改之前先 ls 一遍目录,以后再看就知道是谁在生效。

一行源里每个字段的含义

deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse

deb 表示二进制包,deb-src 是源码包;第二部分是镜像地址;第三部分是版本代号,比如 jammy、noble;后面是组件,main 是官方支持的自由软件,universe 是社区维护,multiverse 涉及版权限制,restricted 是专有驱动。

换国内镜像的注意点

  • 代号要对:用 lsb_release -cs 或 /etc/os-release 里的 VERSION_CODENAME 确认。
  • 路径要对:镜像地址后面要跟 ubuntu 这段路径,少写或多一个斜杠都会 404。
  • 证书问题:老系统缺 ca-certificates 时先用 http,装完证书再换回来。
  • 别删旧的:把原文件备份成 sources.list.bak,出问题能一把换回。

改完必做两步

先 apt clean 清掉基于旧源下载的索引,再 apt update 重新拉。只 update 不 clean,偶尔还会报哈希校验失败。之后 apt upgrade 前用 apt list --upgradable 看一眼要升多少包,生产机器上别顺手按回车把内核也一起升了。