最近装 Ubuntu 26.04 的朋友肯定发现了,以前常用的 apt-key 命令直接提示找不到,老教程里添加第三方软件源的方法一跑就报错。其实不只是 26.04,从 22.04 开始 apt-key 就被标记废弃,只是到了新版本彻底移除,连带旧的全局密钥方式也失效了。
简单说原因:原来的 apt-key 是把所有软件源的密钥放在一起,全局信任,安全风险很大。现在的规范是,一个源对应一个独立密钥,只信任自己的仓库,更安全也更规范。
现在正确的添加源方式(全版本通用,含 26.04)
先安装必要工具,并创建密钥目录:
sudo apt update
sudo apt install curl gnupg
sudo mkdir -p /etc/apt/keyrings
以后添加第三方源,统一用这一套流程,以 Docker 为例:
# 下载密钥并转换成 apt 支持的格式
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 给密钥加上可读权限(Ubuntu 26.04 必须加)
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加软件源
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
然后正常更新安装就行:
sudo apt update
sudo apt install docker-ce
重点就是 signed-by= 这一段,把源和密钥绑定,不混用、不全局信任,Ubuntu 20.04 到 26.04 都兼容。
老系统升级到 26.04 会遇到什么问题?
如果你是从旧版本升级上来,之前用 apt-key 添加的源,大概率会报错 NO_PUBKEY,因为 26.04 不再信任旧的全局密钥目录。
解决办法也很简单:把旧密钥导出来,放到 /etc/apt/keyrings,再给对应的源文件加上 signed-by 指向新密钥文件,更新一下就正常了。
几个小坑提醒一下
- Ubuntu 26.04 里
apt-key真的没了,别再折腾旧命令 - 密钥文件一定要设权限
chmod a+r,不然签名验证失败 - 不要再往
/etc/apt/trusted.gpg.d放密钥,已经不推荐 - 写脚本、做 Dockerfile 直接用上面这套新写法,一次到位
其实整个变化不难理解,就是从 “全局一把钥匙” 改成 “一个仓库一把钥匙”。记住 gpg --dearmor + /etc/apt/keyrings + signed-by 这三个关键点,以后不管是 22.04、24.04 还是最新的 26.04,添加第三方源都不会再出问题。