背景介绍

Ubuntu 22.04 LTS 下更新源 apt-get update 遇到了Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. 这样的警告。

虽然说警告并不影响执行,但是作为有重度代码强迫症和代码洁癖的患者看着还是很难受,所以还是解决一下吧。

为了讲清楚这个问题我用安装 Docker 和安装 Kubernetes 这两个作为案例。

问题重现

一般情况下,Ubuntu 通过 apt-get 安装软件之前需要将系统的源改成本地源以达到加快下载速度的目的,比如改成:阿里、清华、网易这些源。

修改软件源之后就需要通过 apt-get update 命令更新软件源了,但是在 Ubuntu 22.04 LTS 下就出现问题了。

root@k8s-worker-01:/etc/apt# apt-get update
Hit:1 https://mirrors.aliyun.com/ubuntu-ports jammy InRelease
Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu-ports jammy-updates InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu-ports jammy-backports InRelease
Hit:5 https://mirrors.aliyun.com/ubuntu-ports jammy-security InRelease
Get:6 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [8993 B]
Fetched 8993 B in 3s (2909 B/s)
Reading package lists... Done
W: https://download.docker.com/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

这个警告大概的意思是我们把软件包的秘钥保存到了 /etc/apt/trusted.gpg 这个老版本系统的文件里。

这里系统提示只是告诉你新版系统不能把秘钥放在 /etc/apt/trusted.gpg 里,但是没告诉我们新版系统的秘钥究竟要放在那里。

解决方案

其实答案很简单,就在 /etc/apt/trusted.gpg.d 目录下。

root@k8s-worker-01:/etc/apt# ls trusted.gpg.d/
ubuntu-keyring-2012-cdimage.gpg  ubuntu-keyring-2018-archive.gpg

可以看到,已经有两个系统秘钥文件了。

现在我就以安装 DockerKubernetes 的整个过程来解决这个问题。

1. 添加秘钥

添加 Docker key

curl https://download.docker.com/linux/ubuntu/gpg | apt-key add -

添加 Kubernetes key:

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

添加完秘钥之后你会发现 /etc/apt 目录下多了一个 trusted.gpg 文件:

root@k8s-worker-01:/etc/apt# ls
apt.conf.d   keyrings       sources.list      sources.list.d  trusted.gpg.d
auth.conf.d  preferences.d  sources.list.bak  trusted.gpg

2. 添加软件源

添加 docker 软件源:

cat > /etc/apt/sources.list.d/docker.list << EOF
deb https://download.docker.com/linux/ubuntu jammy stable
EOF

添加 Kubernetes 软件源:

cat > /etc/apt/sources.list.d/kubernetes.list << EOF
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

3. 更新源

因为我们添加了两条秘钥,所以在更新源的时候就会出现两条警告:

root@k8s-worker-01:/etc/apt# apt-get update
Hit:1 https://mirrors.aliyun.com/ubuntu-ports jammy InRelease
Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu-ports jammy-updates InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu-ports jammy-backports InRelease
Hit:5 https://mirrors.aliyun.com/ubuntu-ports jammy-security InRelease
Get:6 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [8993 B]
Fetched 8993 B in 3s (2909 B/s)
Reading package lists... Done
W: https://download.docker.com/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
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.

4. 查询秘钥

通过 apt-key list 查询服务器上所有的秘钥:

root@k8s-worker-01:/etc/apt# apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa2048 2022-05-21 [SC]A362 B822 F6DE DC65 2817  EA46 B53D C80D 13ED EF05
uid           [ unknown] Rapture Automatic Signing Key (cloud-rapture-signing-key-2022-03-07-08_01_01.pub)
sub   rsa2048 2022-05-21 [E]pub   rsa4096 2017-02-22 [SCEA]9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com>

根据输出的信息可知,服务器上一共有 3 个文件和 4 个秘钥,其中最上面的两个是我们刚刚安装的秘钥,信息存储在 /etc/apt/trusted.gpg 这个文件中,系统自带秘钥不用去管它。

5. 导出秘钥

根据上诉输出的信息可知,每个秘钥的第二行都有一串十六进制的编码,这个编码就是这个秘钥的 id

A362 B822 F6DE DC65 2817  EA46 B53D C80D 13ED EF05
9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88

找到导致 apt-get update 警告的秘钥然后导出:

apt-key export 13EDEF05 | gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
apt-key export 0EBFCD88 | gpg --dearmour -o /etc/apt/trusted.gpg.d/kubernetes.gpg

注意:导出时的秘钥只需要后 8 位的 id 即可,而且 id 之间没有空格。

导出后你会发现在 /etc/apt/trusted.gpg.d 目录下多了两个二进制文件,这两个二进制文件就是我们刚刚导出的:

root@k8s-worker-01:/etc/apt/trusted.gpg.d# ls
ubuntu-keyring-2012-cdimage.gpg  ubuntu-keyring-2018-archive.gpg
root@k8s-worker-01:/etc/apt/trusted.gpg.d# apt-key export 13EDEF05 | gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
root@k8s-worker-01:/etc/apt/trusted.gpg.d# apt-key export 0EBFCD88 | gpg --dearmour -o /etc/apt/trusted.gpg.d/kubernetes.gpg
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
root@k8s-worker-01:/etc/apt/trusted.gpg.d# ls
docker.gpg  kubernetes.gpg  ubuntu-keyring-2012-cdimage.gpg  ubuntu-keyring-2018-archive.gpg

6. 删除秘钥

将秘钥导出后就可以把/etc/apt 目录下 trusted.gpg 文件删除了:

root@k8s-worker-01:/etc/apt# ls
apt.conf.d   keyrings       sources.list      sources.list.d  trusted.gpg.d
auth.conf.d  preferences.d  sources.list.bak  trusted.gpg  trusted.gpg~
root@k8s-worker-01:/etc/apt# rm trusted.gpg trusted.gpg~
root@k8s-worker-01:/etc/apt# ls
apt.conf.d  auth.conf.d  keyrings  preferences.d  sources.list  sources.list.bak  sources.list.d  trusted.gpg.d

最后再通过 apt-key list 查询一下服务器上所有的秘钥:

root@k8s-worker-01:/etc/apt# apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg.d/docker.gpg
---------------------------------
pub   rsa2048 2022-05-21 [SC]A362 B822 F6DE DC65 2817  EA46 B53D C80D 13ED EF05
uid           [ unknown] Rapture Automatic Signing Key (cloud-rapture-signing-key-2022-03-07-08_01_01.pub)
sub   rsa2048 2022-05-21 [E]/etc/apt/trusted.gpg.d/kubernetes.gpg
-------------------------------------
pub   rsa4096 2017-02-22 [SCEA]9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com>

7. 再次更新源

根据上诉输出的信息可知,服务器上现在一共有 4 个文件和 4 个秘钥,其中最上面的两个是我们刚刚添加到 /etc/apt/trusted.gpg.d 目录下的。

通过 apt-get update 命令尝试再次更新源:

root@k8s-worker-01:/etc/apt# apt-get update
Hit:1 https://mirrors.aliyun.com/ubuntu-ports jammy InRelease
Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu-ports jammy-updates InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu-ports jammy-backports InRelease
Hit:5 https://mirrors.aliyun.com/ubuntu-ports jammy-security InRelease
Get:6 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [8993 B]
Fetched 8993 B in 3s (3491 B/s)
Reading package lists... Done

结果输出后发现并没有任何警告,完全符合预期,完美解决!

Ubuntu 22.04 LTS apt-get update 报 Key is stored in legacy trusted.gpg keyring 警告解决方案相关推荐

  1. after Ubuntu 22.04 LTS

    文章目录 1. 安装操作系统 2. 登录后 2.1 修改 root 用户密码 2.2 vim 2.3 OpenSSH 2.3 更新 2.3.1 选择软件源 2.3.2 更新 2.4 挂载硬盘 3. 必 ...

  2. ubuntu 22.04 lts 安装步骤(vmware)

    ubuntu 22.04 lts 安装步骤(vmware) ubuntu 22.04 lts 安装步骤(vmware) 下载镜像 安装步骤 创建虚拟机 安装 ubuntu 22.04 lts 配置 u ...

  3. Ubuntu 22.04 LTS下安装1030 GPU 的驱动(图文详解)

    文章目录 Ubuntu 22.04 LTS下安装1030 GPU 的驱动 法一:命令获取推荐驱动直接安装(简单有效) 1.检查你的操作系统,如下图: 2.查看是否有[GPU](https://so.c ...

  4. Ubuntu 22.04 LTS安装Modelsim SE 2020.4

    前言 教程中的部分内容参考自易特创芯论坛,鉴于论坛相关资料有些零散.安装步骤繁琐或是存在错误.部分原理性问题未解释清楚人云亦云.导致为入门者带来了困难等原因,为此梳理出一篇相对完整的教程 准备工作 · ...

  5. Ubuntu 22.04 LTS 是史诗级的版本?

    导读 Canonical 最新的代号为"Jammy Jellyfish"的 Ubuntu LTS 版本,受到全球用户的好评.有数百个新的小功能和一些不太大众化的功能并没有引起太多关 ...

  6. Ubuntu 22.04 LTS 现在可供下载

    现在可以从Ubuntu 网站下载Ubuntu 22.04 LTS. Ubuntu 22.04 进行了大量改进,包括新的水平工作区切换器和应用程序启动器.新的 UI 强调色.开箱即用的 RDP 支持和L ...

  7. 如何安装 Ubuntu 22.04 LTS 桌面版 ?

    Canonical 在 2022年4月21日发布了期待已久的 Ubuntu 22.04 LTS 桌面操作系统.Ubuntu 22.04 的代号是 Jammy Jellyfish,它是一个 LTS (长 ...

  8. 为什么说 Ubuntu 22.04 LTS 是史诗级的版本

    下面是 Ubuntu 22.04 LTS 的一些次要特性,这些特性使它成为迄今为止最好的 LTS 版本之一. Canonical 最新的代号为"Jammy Jellyfish"的 ...

  9. Ubuntu 22.04 LTS 中文桌面/服务器正式版发布 (内含 ISO 镜像下载)

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 迫不及待地想尝试 Ubuntu 22.04 LTS?现在,它终于可以下载和升级了. 该版本在之前的 LTS 版本基 ...

最新文章

  1. mongodb java 日志分析_记一次log4j与mongodb集成引发的问题分析
  2. TFIDF的简单解释
  3. html 值追加,从JSON中读取数据追加到HTML中
  4. 华为做raid5步骤_华为RH2288V5服务器做RAID 0(官方推荐做法)
  5. _临武县组合式桥梁伸缩缝F型伸缩缝—批发
  6. Java 表单提交下拉框_Java实现Layui的form表单动态绑定下拉框
  7. java wait 参数_Java Object wait()方法
  8. 区块链开发指南_区块链开发完全指南
  9. bochs2.3.7 调试版本在ubuntu9.10上的编译安装
  10. java 代码走查_Java代码走查具体考察点
  11. 包工协议书样本_最新包工头劳务承包合同范本
  12. 集合的相关概念(开闭、有界无界、内点边界点等)
  13. 人脸关键点检测face_landmark
  14. 3天72小时,全国首个区块链周都讲了些啥 | 一文读懂
  15. Hadoop之hdfs操作
  16. Lamber表达式 List,Map,Set 互相转换
  17. AES算法中S盒的FPGA实现 II
  18. CNN之绘画风格迁移-附源码地址
  19. Android 自动化操作,辅助功能无障碍,在其他应用的上层显示
  20. 原创|对接三方服务商回调鉴权的程序代码设计

热门文章

  1. 基于VHDL的密码锁
  2. debian 安装php7_Ubuntu/Debian安装PHP 7.2教程
  3. 计算机地图制图pdf,《计算机地图制图》课件简介.pdf
  4. 一个爬取图片的app
  5. c语言输出方框□怎么回事_C语言打印数据的二进制格式-原理解析与编程实现
  6. 专属于Java程序员的学习福音,大厂面经合集
  7. 链栈的表示和实现(C++)
  8. 文法二义性与语言二义性
  9. 屏保:毛雷尔玫瑰屏保
  10. qt、adb、小米屏幕滑动demo