docker、ubuntu20.04、ros1noetic环境
问题说明:使用sudo apt install定位不到软件包
E: Unable to locate package ros-noetic-teleop-twist-keyboard
sudo apt update会报错:
W: GPG error: http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu focal InRelease: The following signatures couldn't be verified...
E: The repository ... is not signed.
解决方法:使用 signed-by 的方式显式指定 key 文件路径
- 下载 ROS GPG key 到 keyring(不要再用 apt-key)
sudo mkdir -p /usr/share/keyrings curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc -o /usr/share/keyrings/ros-archive-keyring.gpg - 如果果你访问 GitHub 被墙(无法下载 ros.asc),可以用备用方式
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654 gpg --export F42ED6FBAB17C654 | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null - 修改ROS源,加上signed-by参数:
sudo nano /etc/apt/sources.list.d/ros-latest.list内容改为:
deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu focal main # (如果你还想保留官方源) deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros/ubuntu focal main - 删除之前的 apt-key(可选但推荐),这样就不会跟旧的 key 机制冲突。
sudo apt-key del F42ED6FBAB17C654 - 更新apt
sudo apt update然后即能正常。
其他说明
分解一下我之前失败的原因:
- 我用
apt-key导入了 key,这会把 key 存在/etc/apt/trusted.gpg或/etc/apt/trusted.gpg.d。 - 但我在 ROS 源里写了:
deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] ...APT 会忽略 apt-key 全局 keyring,而是只信任
/usr/share/keyrings/ros-archive-keyring.gpg里存的 key。 - 因为那个文件一开始是空的(或者没生成成功),所以 APT 就报:
NO_PUBKEY F42ED6FBAB17C654
后来成功的原因:执行
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654
gpg --export F42ED6FBAB17C654 | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null
- 第一行:从 Ubuntu keyserver 下载
F42ED6FBAB17C654的公钥,放进 GPG 本地 keyring。 - 第二行:把这把 key 导出到
/usr/share/keyrings/ros-archive-keyring.gpg,
这个文件正好就是我signed-by所引用的路径
于是 apt update 时,APT 成功匹配上 key → 不再报错。
1757

被折叠的 条评论
为什么被折叠?



