基于debian 11的apt错误 Key is stored in legacy trusted.gpg keyring

背景

使用阿里云的镜像安装k8s软件时,执行了如下命令

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update

添加了一个key,然后添加了一个下载源,最后update更新一下.

接下来在执行apt-get update的时候,遇到错误:

root@debian:~# apt-get update 
Hit:1 http://mirrors.huaweicloud.com/debian bookworm InRelease
Hit:2 http://mirrors.huaweicloud.com/debian bookworm-updates InRelease
Hit:3 http://security.debian.org/debian-security bookworm-security InRelease
Hit:4 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease
Reading package lists... Done
W: https://mirrors.aliyun.com/kubernetes/apt/dists/kubernetes-xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

解决方案

出现的原因是因为apt-get update命令使用了过时的 apt-key 工具导致的,这实际是一条警告.在新版本的apt中不再使用apt-key来管理软件源的密钥了.

前面curl和请求地址不变.
管道后面的命令修改为使用gpg命令 -o 指定一个路径

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg

接下来修改对应的apt源文件:
vim /etc/apt/sources.list.d/kubernetes.list

注释内容为原有内容.
在原来的基础上,deb后面新增了 [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg]
这里的路径就是上面-o保存的文件的路径

#deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
<think>好的,用户遇到了关于Docker镜像源的警告信息,提示Key存储在legacy trusted.gpg keyring中。我需要解释这个问题,并给出解决办法。 首先,我得确认这个警告的具体原因。根据用户提供的错误信息,看起来是apt-key的使用已经被弃用,现在推荐将GPG密钥存放在单独的目录中,而不是旧的trusted.gpg文件里。用户可能是在添加Docker的APT源时,使用了过时的方法,导致密钥被添加到传统的位置。 接下来,我需要回忆一下处理这类问题的步骤。通常,正确的做法是将密钥添加到/etc/apt/trusted.gpg.d/目录下的单独文件中,而不是直接使用apt-key add。因此,用户需要先导出原有的密钥,然后将其移动到正确的目录,并更新APT源。 然后,考虑用户可能的操作步骤。用户可能之前按照旧的教程使用curl和apt-key add来添加密钥,但现在需要调整方法。我需要给出具体的命令,比如如何导出密钥,如何移动,并修改sources.list中的条目,确保使用signed-by参数指向新的密钥位置。 另外,可能需要提醒用户检查密钥的指纹是否正确,以确保安全性。同时,处理完成后,用户需要运行apt update来验证是否解决问题,确保警告消失。 还要注意,用户可能对Linux系统管理不太熟悉,所以步骤需要详细,命令要准确,避免出错。例如,使用gpg --export导出密钥时,要确保正确指定指纹,可能需要先找到对应的密钥ID。 最后,总结整个解决流程,确保用户能够一步步操作,并确认问题是否解决。可能还需要提到如果用户之前添加了多个密钥,需要针对每个密钥进行类似处理,避免遗漏。</think>这个提示信息说明您当前使用的APT软件源密钥存储方式已过时,需要迁移到新的密钥管理方式。以下是详细解释和解决方法: 1️⃣ **问题原因**: - 旧版Debian/Ubuntu系统使用`/etc/apt/trusted.gpg`集中管理所有密钥 - 新版apt(>= v1.1)推荐使用`/etc/apt/trusted.gpg.d/`目录存放独立密钥文件 - 您添加Docker源时使用了旧的`apt-key add`方式 2️⃣ **解决方法**: ```bash # 步骤1:找到对应密钥指纹(替换为实际密钥ID) sudo apt-key list # 步骤2:导出密钥到独立文件(示例密钥ID为9DC858229FC7DD38854AE2D88D81803C0EBFCD88) sudo apt-key export 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg # 步骤3:修改sources.list条目(示例路径) sudo sed -i 's/deb \[arch=/deb [signed-by=/etc/apt/trusted.gpg.d/docker.gpg arch=/' /etc/apt/sources.list.d/docker.list # 步骤4:删除旧密钥 sudo apt-key del 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 # 步骤5:更新验证 sudo apt update ``` 3️⃣ **预防措施**: ✅ 添加新源时使用推荐方式: ```bash curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list ``` 4️⃣ **验证结果**: 执行`sudo apt update`后,原有的警告信息应不再出现,同时能正常获取Docker软件包列表。 💡 提示:不同发行版的密钥存储路径可能略有不同,Ubuntu系统建议使用`/usr/share/keyrings/`目录存放密钥文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值