陈拓 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
没有再出现上述关于旧密钥环的警告信息了。