Ubuntu 22.04更新本地软件包列表命令sudo apt update警告Key is stored in legacy trusted.gpg keyring 解决方案

陈拓 2024/12/06-2024/12/06

1. 环境

  • 硬件系统架构

  • 当前操作系统版本

lsb_release -a

2. 更新本地软件包列表

sudo apt update

警告:

W: http://packages.ros.org/ros2/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这个老版本系统的文件里,但是使用的密钥存储方式已经不再被推荐。APT现在推荐使用/etc/apt/trusted.gpg.d/目录来存储密钥。

3. 消除Key is stored in legacy trusted.gpg keyring 警告

3.1 查询密钥

  • 方法一

apt-key list

根据输出的信息可知,服务器上一共有3个文件:

/etc/apt/trusted.gpg

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg

/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg

有2个密钥已经存储在/etc/apt/trusted.gpg.d目录下面。只有一个密钥:

C1CF 6E31 E6BA DE88 68B1  72B4 F42E D6FB AB17 C654

存储在/etc/apt/trusted.gpg文件中。

  • 方法二

使用以下命令查看文件内容,看/etc/apt/trusted.gpg文件中的密钥信息。

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --list-keys

从输出中看到有属于 packages.ros.org 的密钥:

C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3.2 导出密钥

  • 方法一

使用以下命令将其导出为一个单独的.gpg文件。

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 > /etc/apt/trusted.gpg.d/ros2.gpg

这个命令将指定的密钥从旧的密钥环文件导出到/etc/apt/trusted.gpg.d/目录下名为ros2.gpg的新文件中,这样就符合新的密钥管理规范了。

权限问题:

-bash: /etc/apt/trusted.gpg.d/ros2.gpg: Permission denied

使用下面的方法二。

  • 方法二

使用 tee 命令结合 sudo 来处理重定向(推荐)

tee 命令可以从标准输入读取数据,并同时将其输出到标准输出以及一个或多个文件中,并且可以配合 sudo 来解决权限问题,执行以下命令:

sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 | sudo tee /etc/apt/trusted.gpg.d/ros2.gpg > /dev/null

解释:

首先,gpg命令按照之前的参数进行密钥导出操作,其输出通过管道(|)传递给sudo tee命令。

sudo tee /etc/apt/trusted.gpg.d/ros2.gpg部分表示以管理员权限将接收到的数据写入到/etc/apt/trusted.gpg.d/ros2.gpg文件中,这样就能解决写入文件权限不足的问题。

> /dev/null是将tee命令输出到标准输出的内容重定向到/dev/null(这是一个特殊的设备文件,相当于丢弃这些输出内容),避免多余的输出显示在终端上。

  • 再查看/etc/apt/trusted.gpg.d目录

ros2.gpg文件已经生成了。

3.3 清理trusted.gpg

  • 删除旧的秘钥文件

将秘钥导出后就可以把/etc/apt目录下trusted.gpg文件删除了。为了安全起见,我们将trusted.gpg文件改名:

sudo mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg_bak

3.4 验证

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

  • 再次运行sudo apt update

没有再出现上述关于旧密钥环的警告信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值