You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Debian 11中不使用已弃用的gpg --keyserver选项添加Ubuntu PPA

如何在Debian 11中不使用已弃用的gpg --keyserver选项添加Ubuntu PPA

背景

最近不少朋友在Debian 11上添加Ubuntu PPA时会遇到双重困境:先是apt-key工具被官方标记为弃用,大家转而用gpg直接处理密钥;结果没多久,发现gpg的--keyserver选项也被标了弃用提示——这可把依赖脚本或自动化工具(比如Ansible)的用户愁坏了。

之前我们替换apt-key add的常用写法是这样的:

curl -sS https://example.com/key/repo-key.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/<repo>-archive-keyring.gpg

但添加Ubuntu PPA时,原来依赖gpg --recv-keys --keyserver的命令现在行不通了,得找个新路子。

解决方案

其实我们可以绕开gpg --keyserver选项,直接通过HTTPS从Ubuntu密钥服务器下载密钥,再导入到合规的密钥环中。全程都是命令行操作,完美适配自动化场景,步骤如下:

1. 获取PPA的密钥指纹

首先你得拿到目标PPA的密钥指纹,这个信息通常可以在PPA的Launchpad页面找到,或者从你原来使用的sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com XXXXXX命令里的XXXXXX部分获取。比如假设指纹是ABCDEF1234567890。

2. 下载并导入密钥到专属密钥环

执行下面的命令,把密钥通过HTTPS直接下载,转成gpg兼容的格式后,写入到/usr/share/keyrings目录下的专属密钥文件里(记得替换<PPA_KEY_FINGERPRINT>和<ppa-name>为你的实际信息):

curl -sS https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x<PPA_KEY_FINGERPRINT> | gpg --dearmor | sudo tee /usr/share/keyrings/<ppa-name>-archive-keyring.gpg > /dev/null

这个命令完全避开了gpg --keyserver选项,用curl直接请求密钥服务器的HTTPS接口,符合当前的安全规范。

3. 添加PPA的源配置

接下来把PPA的源信息添加到/etc/apt/sources.list.d目录下,同时一定要加上signed-by参数指向刚才导入的密钥环,这样apt才能正确验证源的签名。示例命令如下(替换<ppa-owner>、<ppa-name>和Ubuntu版本代号,Debian 11一般兼容focal或jammy版本):

echo "deb [signed-by=/usr/share/keyrings/<ppa-name>-archive-keyring.gpg] http://ppa.launchpad.net/<ppa-owner>/<ppa-name>/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/<ppa-name>.list

4. 更新apt缓存并使用PPA

最后执行apt更新命令,就可以正常从这个PPA安装软件了:

sudo apt update
# 安装目标软件
sudo apt install <package-name>

补充说明

  • 整个流程完全无手动或GUI操作,所有命令都可以直接集成到Shell脚本或Ansible Playbook中,满足自动化需求。
  • 如果你想验证密钥是否正确导入,可以用下面的命令查看密钥环内容:
gpg --no-default-keyring --keyring /usr/share/keyrings/<ppa-name>-archive-keyring.gpg --list-keys

备注:内容来源于stack exchange,提问作者4wk_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:37:48