关于apt-key弃用警告(关联AnyDesk软件源)的含义及修复方法咨询
嘿,我来给你掰扯清楚这个警告的来龙去脉,还有怎么解决它,顺便帮你补补Linux包管理的知识~
首先,咱们先拆解这个警告信息:
http://deb.anydesk.com/dists/all/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
这个警告到底是什么意思?
简单说,APT(就是你用的apt update这个工具)在提醒你:你把AnyDesk软件源的验证密钥存在了旧的全局密钥环/etc/apt/trusted.gpg里,而这种存储方式已经被官方弃用了。
为啥要弃用呢?因为全局密钥环里的密钥会被所有软件源信任——打个比方,就像你把家里所有门的钥匙都放在一个公共抽屉里,只要有人拿到这个抽屉的钥匙,就能开所有门。现在APT推荐的是按软件源单独存密钥,每个源对应自己的密钥文件,放在/etc/apt/trusted.gpg.d/目录下,这样每个源只能用自己的密钥验证,安全性大大提高,权限也更精细。
怎么修复这个警告?
针对AnyDesk的源,咱们一步步来:
先找到AnyDesk密钥的ID
运行下面的命令,从全局密钥环里筛选出AnyDesk的密钥信息:apt-key list | grep -A 2 "AnyDesk"你会看到类似这样的输出:
pub rsa2048 2019-03-12 [SC] 1EDD E2CD FC02 5D17 F6DA 9EC0 ADAE 6AD2 8A8F 901A uid [ unknown ] philandro Software GmbH <info@philandro.com>这里的长串
1EDDE2CDFC025D17F6DA9EC0ADAE6AD28A8F901A就是密钥的完整ID,你也可以用后面的8位短ID8A8F901A,都可以。把密钥导出到新的单独文件
用刚才拿到的密钥ID,把它导出到/etc/apt/trusted.gpg.d/目录(这是APT现在认可的密钥存储目录):apt-key export 8A8F901A | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/anydesk.gpg解释下:
gpg --dearmor是把导出的ASCII格式密钥转换成二进制格式,这是APT现在推荐的格式,兼容性更好。(可选但推荐)删除全局密钥环里的旧密钥
既然已经把密钥移到新位置了,咱们可以把旧的全局密钥删掉,避免以后再出警告:sudo apt-key del 8A8F901A验证修复结果
最后再跑一次更新命令,看看警告是不是消失了:sudo apt update
额外的Linux知识补充
- 软件源和密钥的关系:APT通过软件源(就是
/etc/apt/sources.list或者/etc/apt/sources.list.d/里的那些deb http://xxx配置)下载软件包,而密钥是用来验证这些包是不是官方发布的,防止被篡改或者注入恶意内容。 - 以后添加新软件源的正确姿势:别再用
apt-key add命令了,直接把密钥下载到/etc/apt/trusted.gpg.d/目录,比如AnyDesk现在官方推荐的添加方式应该是:
然后再把源配置写入wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/anydesk.gpg/etc/apt/sources.list.d/anydesk.list文件里,这样就完全符合新的规范了。
备注:内容来源于stack exchange,提问作者Kenneth Shibaba

