cat /etc/apt/sources.list当前配置的软件源地址,apt 从这里下载。
约 1321 字大约 4 分钟
2026-05-14
包管理器要从某个地方下载软件,这个“地方”就是软件源。它配在哪、指向哪、靠什么验证安全——理解这套机制,你才能解释“为什么 apt 下载这么慢”“为什么 apt update 报 GPG 错误”这类问题。
理解软件源告诉包管理器去哪里下载,镜像源是它的同步副本,GPG key 用于验证来源,以及索引为什么要定期更新。
cat /etc/apt/sources.list当前配置的软件源地址,apt 从这里下载。
ls /etc/apt/sources.list.d/第三方源通常单独放这个目录,一个文件一个源。
apt-cache policy 包名某个包的候选版本来自哪个源、优先级多少。
sudo apt update从所有源拉取最新清单,GPG 校验也在这步发生。
软件源(repository)就是包管理器去取软件的服务器地址。在 Debian/Ubuntu 上,它配置在:
/etc/apt/sources.list —— 主配置文件/etc/apt/sources.list.d/*.list —— 第三方源,一个文件放一个一行典型的源配置长这样:
deb https://archive.ubuntu.com/ubuntu jammy main restricted universe
# └─ 地址 └─发行版 └─ 组件分类apt install 能装到什么包,完全取决于这些源里有什么。装不到某个包,第一反应应该是“它在不在我配的源里”。
官方源的服务器往往在国外,下载慢。镜像源是官方源的同步副本——内容一模一样,只是服务器在离你更近的地方(比如国内的高校、云厂商镜像)。把 sources.list 里的地址换成镜像源,apt 速度能快很多。
换镜像源就是改 sources.list 里的域名部分,发行版(jammy、main 这些)保持不变。改完必须 apt update 重新拉索引。
你从一个网络地址下载软件,怎么知道它没被中间人篡改?靠 GPG 签名。软件源用私钥给包签名,你的系统用对应的公钥(GPG key)验证。apt update / apt install 时这个校验自动发生。
所以 apt update 报 NO_PUBKEY 或 GPG error,意思是“这个源的签名我验不了”——通常是新加了第三方源但没导入它的 key。不要用 [trusted=yes] 或 --allow-unauthenticated 去绕过校验,那等于关掉了防篡改保护;正确做法是按那个源的官方说明导入它的 GPG key。
apt 不会每次都去问服务器“你有啥”,而是把各个源的软件清单下载到本地缓存一份,这就是索引。apt update 干的就是刷新这份索引(见 apt 常用操作)。
索引会过期。常见现象“apt 装到的不是最新版”或“明明发布了新版却装不到”,往往就是索引太旧——先 apt update 再说。新加了软件源,也必须 apt update 一次,否则新源里的包 apt 还不知道。
改软件源前先备份,别为图方便关掉校验
/etc/apt/sources.list 改错(地址写错、发行版代号写错),会导致 apt update 大面积报错、装不了软件。改之前 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak,出错能立刻还原。遇到 GPG 错误时,正确做法是导入对应的 key,而不是用 trusted=yes 关掉签名校验——那会让这台机器接受任何来源的包,是实打实的安全风险。加第三方源更要确认来源可信。
| 误区 | 更稳妥的做法 |
|---|---|
| apt 慢就忍着 | 换成离你近的镜像源,改 sources.list 里的域名再 apt update |
遇到 GPG error 用 trusted=yes 绕过 | 按官方说明导入该源的 GPG key,别关掉防篡改校验 |
| 装不到包就以为软件不存在 | 先想它在不在你配的源里,必要时加对应的源 |
改完软件源不 apt update | 改源、加源后必须 update 刷新索引才生效 |
版权归属:Shuo Liu