鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    在Ubuntu 22.04 中,输入指令sudo apt update报错,请求帮助

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ubuntu 22.04 apt更新失败 ros2 hamble 一键换源
    6
    12
    830
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      SFLEteasb @SFLEteasb
      最后由 编辑

      此回复已被删除!
      1 条回复 最后回复 回复 引用 0
      • S
        SFLEteasb @SFLEteasb
        最后由 编辑

        @SFLEteasb 补充:可以从github上克隆程序,网站也都可以ping通

        1 条回复 最后回复 回复 引用 0
        • M
          moon2416986352yue
          最后由 编辑

          你好,请问解决了吗

          S 1 条回复 最后回复 回复 引用 0
          • S
            SFLEteasb @moon2416986352yue
            最后由 编辑

            @moon2416986352yue 还没有诶()

            M 1 条回复 最后回复 回复 引用 0
            • 3
              3429494307 @SFLEteasb
              最后由 编辑

              @SFLEteasb 若密钥未更新且急需操作,可临时禁用签名验证:

              sudo apt update --allow-insecure-repositories # 允许更新源
              sudo apt install --allow-unauthenticated <包名> # 安装时忽略认证
              问了deepseek,用了一下管用,可以试试,这个密钥在昨天早上六点过期了,现在我也没找到有新密钥发布,只能先这样用着等大佬解决了
              密钥过期信息:
              pub (4)rsa4096/c1cf6e31e6bade8868b172b4f42ed6fbab17c654 2019-05-30T00:40:54Z

              uid Open Robotics info@osrfoundation.org
              sig cert f42ed6fbab17c654 2021-05-29T05:59:45Z 2025-06-01T05:59:45Z ____________________ [selfsig]
              sig cert f42ed6fbab17c654 2019-05-30T00:40:54Z 2021-05-29T00:40:54Z ____________________ [selfsig]把密钥输入这个网页就能查到相关信息https://keyserver.ubuntu.com/

              1 条回复 最后回复 回复 引用 0
              • M
                moon2416986352yue @SFLEteasb
                最后由 编辑

                @SFLEteasb 我也是一样的问题,没有解决,蹲蹲,解决了麻烦告知一下🙇 🙇

                小鱼小 1 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @moon2416986352yue
                  最后由 编辑

                  @moon2416986352yue 刚搞俄嗯新了,重新尝试一下

                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                  S 1 条回复 最后回复 回复 引用 0
                  • S
                    SFLEteasb @小鱼
                    最后由 编辑

                    @小鱼 可以了谢谢大佬

                    1 条回复 最后回复 回复 引用 0
                    • F
                      firefirefox 年度VIP
                      最后由 编辑

                      关于ROS2源2025年6月1日公共密钥过期(NO_PUBKEY F42ED6FBAB17C654)的解决办法

                      摘要:
                      由于 ROS 官方 GPG 公钥于 2025 年 6 月 1 日过期,执行 sudo apt update 时会出现 NO_PUBKEY F42ED6FBAB17C654 错误。本攻略将逐步演示如何清理旧密钥、下载并导入新版密钥、重新添加 ROS 2 软件源,以恢复正常安装与更新。


                      目录

                      1. 删除原有的所有 ROS GPG 公钥
                      2. 安装工具依赖
                      3. 下载并安装新版 GPG 公钥
                      4. 添加 ROS 2 软件源
                      5. 更新源并验证
                      6. 常见问题与排查

                      删除原有的所有 ROS GPG 公钥

                      为了确保后续导入的新公钥不会与系统中残留的旧密钥冲突,先将所有旧的 keyring 文件与源列表清理干净。

                      sudo rm -f /usr/share/keyrings/ros-archive-keyring.gpg
                      sudo rm -f /etc/apt/keyrings/ros-archive-keyring.gpg
                      sudo rm -f /etc/apt/sources.list.d/ros2.list
                      sudo rm -f /etc/apt/sources.list.d/ros-fish.list
                      

                      ros-archive-keyring.gpg:旧版 ROS 2 公钥可能位于 /usr/share/keyrings 或 /etc/apt/keyrings。

                      ros2.list 与 ros-fish.list:之前添加的 ROS 2 软件源文件,删除它们以便后续重新配置。

                      安装工具依赖

                      在下载与安装新版公钥时,需要 curl、gnupg 与 lsb-release 等常用工具。执行以下命令,确保它们已安装在系统中:

                      sudo apt update
                      sudo apt install -y curl gnupg lsb-release
                      

                      curl:用于从 GitHub 拉取新版 ROS 公钥。

                      gnupg:用于将下载的 ASCII 格式公钥转换为二进制 .gpg 格式。

                      lsb-release:用于获取当前 Ubuntu 的发行版代号(lsb_release -cs 输出例如 jammy)。

                      下载并安装新版-gpg-公钥

                      1.创建存放 keyring 的目录

                      推荐将新的二进制公钥存放在 /etc/apt/keyrings/,这样更符合 Debian/Ubuntu 官方最佳实践。

                      sudo mkdir -p /etc/apt/keyrings
                      

                      2.下载 ROS 2 最新 GPG 公钥并去重装(dearmor)

                      从 ROS 官方 GitHub 仓库拉取 ros.key,并使用 gpg --dearmor 将其转换为二进制格式,存放到 /etc/apt/keyrings/ros-archive-keyring.gpg。

                      curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
                        | sudo gpg --dearmor -o /etc/apt/keyrings/ros-archive-keyring.gpg
                      

                      添加-ros-2-软件源

                      确认 Ubuntu 版本与 ROS 2 发行版对应关系

                      对于 ROS 2 Humble Hawksbill, 官方仅在 Ubuntu 22.04 Jammy 发布预编译包。

                      在其他 Ubuntu 版本(如 20.04 Focal、18.04 Bionic)上也能编译安装,但若需要通过 apt install,必须确保系统为 22.04 Jammy。

                      编写并添加 ros2.list 软件源

                      在添加软件源时,需指定 signed-by=/etc/apt/keyrings/ros-archive-keyring.gpg,以便 apt 校验新版公钥。

                      echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/ros-archive-keyring.gpg] \
                        http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" \
                        | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
                      

                      arch=amd64:如果您的机器是 x86_64 架构,请保持该值,如果是 英伟达jetson/树莓派/RK系列,请自行改成 ARM 架构对应的关键字。

                      $(lsb_release -cs):在 Ubuntu 22.04 上会输出 jammy。如果使用其他版本,请手动替换为对应代号。

                      /dev/null:隐藏 tee 命令的标准输出,仅将行写入 ros2.list 文件。

                      更新源并验证

                      1.完成上述文件操作后,执行以下命令刷新 APT 缓存并验证是否成功:

                      sudo apt update
                      

                      如果一切正常,不会再看到 NO_PUBKEY F42ED6FBAB17C654 或 “没有数字签名” 的报错。

                      更新完成后,即可通过 apt install ros-humble-<package> 安装所需 ROS 2 Humble 软件包(如 ros-humble-desktop、ros-humble-navigation2、ros-humble-ros2-control 等)。

                      常见问题与排查

                      仍然出现 NO_PUBKEY 或 “无法验证签名”

                      请确认 /etc/apt/keyrings/ros-archive-keyring.gpg 文件存在且大小大于 0 字节。

                      检查 /etc/apt/sources.list.d/ros2.list 中的 signed-by 路径与实际文件路径一致,且文件名无拼写错误。

                      1.使用命令查看系统中是否还存在旧的 ROS 公钥:

                      sudo apt-key list
                      

                      2.如果仍能看到指纹为 F42ED6FBAB17C654(或其他 ROS 相关指纹),请执行:

                      sudo apt-key del F42ED6FBAB17C654
                      

                      1.网络连接或镜像问题

                      确保能 ping packages.ros.org,并且没有被防火墙、代理或 DNS 污染阻挡。

                      如果在国内网络环境下速度慢或拉不到包,可以尝试使用国内镜像(如清华、阿里、华为等),但同样要确保先导入新版公钥,否则镜像的 InRelease 文件依然会因签名不匹配而报错。

                      例如,切换到清华镜像源的方法(仅示例,需先导入正版公钥):

                      echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/ros-archive-keyring.gpg] \
                        https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(lsb_release -cs) main" \
                        | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
                      

                      2.Ubuntu 版本与 ROS 2 发行版不匹配

                      请务必确认系统为 Ubuntu 22.04 Jammy,否则 apt install ros-humble-* 软件包并不存在。

                      若您使用的是 Ubuntu 20.04 Focal,可以改用 ROS 2 Foxy(对应 Focal);若是 Ubuntu 18.04 Bionic,则使用 ROS 2 Dashing/Bouncy(Bionic)。

                      如果要在不支持的 Ubuntu 版本上使用 Humble,只能通过从源代码编译,无法用 apt 直接安装。

                      3.目录与权限检查

                      /etc/apt/keyrings/ 目录权限应允许 root 用户读写。

                      /etc/apt/sources.list.d/ros2.list 文件应能被 apt 读取,可执行 ls -l 检查权限。

                      如果上述目录或文件权限异常,可能导致 apt update 时无法读取或验证。

                      2 1 条回复 最后回复 回复 引用 0
                      • 2
                        2383283320 @firefirefox
                        最后由 编辑

                        @firefirefox 请问我用的ros1,也是出现了校验数字签名时出错,可以用这个方法解决吗,我的系统是ubuntu20.04,哪一条指令是需要修改成自己的ubuntu版本或者ros1的对应版本呢?

                        1 条回复 最后回复 回复 引用 0
                        • 第一个帖子
                          最后一个帖子
                        皖ICP备16016415号-7
                        Powered by NodeBB | 鱼香ROS