解决ROS源定位不到软件包的问题

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 文件路径

  1. 下载 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
    
  2. 如果果你访问 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
    
  3. 修改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
    
  4. 删除之前的 apt-key(可选但推荐),这样就不会跟旧的 key 机制冲突。
    sudo apt-key del F42ED6FBAB17C654
    
  5. 更新apt
    sudo apt update
    

    然后即能正常。

其他说明

分解一下我之前失败的原因:

  1. 我用 apt-key 导入了 key,这会把 key 存在 /etc/apt/trusted.gpg/etc/apt/trusted.gpg.d
  2. 但我在 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

  3. 因为那个文件一开始是空的(或者没生成成功),所以 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 → 不再报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值