替代已弃用的`add-apt-repository ppa:<username>/<package>`的具体GPG、curl等命令方案
add-apt-repository ppa:<username>/<package>的具体GPG、curl等命令方案 我完全懂你的困扰——以前用add-apt-repository一键添加PPA的方式,因为会全局导入密钥不符合安全规范被弃用了,而网上的例子大多没讲清楚怎么处理ppa:<username>/<package>这种格式的源。下面我就以你用到的ppa:dwmw2/openconnect为例,一步步拆解成合规的命令,这个方案完全可以套用到其他PPA上:
步骤1:安装必备工具
首先确保系统有处理密钥和证书的工具:
apt update apt install -y gpg ca-certificates
步骤2:单独导入PPA的GPG密钥(非全局)
你需要从PPA的官方详情页(比如Launchpad对应PPA页面)获取密钥ID,比如ppa:dwmw2/openconnect的密钥ID是DBBE5FF954B458D1A0875E8A9FCCDFFB8838752F。然后用下面的命令把密钥导入专门的密钥环文件,避免全局生效:
gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/openconnect.gpg --keyserver keyserver.ubuntu.com --recv-keys DBBE5FF954B458D1A0875E8A9FCCDFFB8838752F
小说明:
--homedir /tmp避免干扰用户默认密钥环,--keyring指定专属密钥文件,确保密钥只对这个源生效,更安全。
步骤3:添加PPA源并关联密钥
创建单独的源配置文件,通过signed-by参数绑定刚才生成的密钥环,让APT明确用这个密钥验证该源的包:
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/openconnect.gpg] https://ppa.launchpadcontent.net/dwmw2/openconnect/ubuntu bionic main' > /etc/apt/sources.list.d/openconnect.list
注意:把
bionic换成你自己Ubuntu系统的版本代号(比如focal、jammy等)。
步骤4:解决证书验证问题(如果遇到)
如果执行apt update时出现类似“Certificate verification failed”或者“No system certificates available”的错误,我们已经在步骤1安装了ca-certificates,重新执行更新即可:
apt update
步骤5:安装所需软件
现在源配置完成,可以正常安装需要的包了:
apt install -y vpnc openconnect
关于你的子问题:add-apt-repository并不是通过网页爬取的方式获取PPA信息,它是通过Launchpad提供的标准化接口来获取源地址和密钥的,不过我们手动操作时,只需要从PPA官方页面拿到密钥ID和源地址就足够了。
备注:内容来源于stack exchange,提问作者GlenPeterson

