使用自定义 Rosdistro 版本
概述
rosdistro 包含所有发行版的 ROS 软件包的中心索引,以及 rosdep
键,用于安装打包的二进制依赖项。当您调用 rosdep 安装 ...
它正在检查来自 rosdistro 的本地缓存索引(该索引是在 rosdep 更新
)中的键进行关联。 package.xml
指向要安装的 ROS 软件包、python 模块或二进制文件。因此,该索引是 ROS 生态系统的一个重要元素。
不过,在某些情况下,用户希望进一步控制该索引,添加自己的专有密钥或使用以前的 rosdistro 状态。本指南将介绍如何设置要在系统中使用的 rosdistro 版本。
本指南将使用的激励性示例是,由于开发计算机或持续集成出现故障,用户希望使用以前版本的 Rolling。在从一个操作系统过渡到另一个操作系统的过程中,旧版本操作系统上的 Rolling 可能会因为支持转移到新操作系统而无法使用(例如从 Ubuntu 22.04 转移到 24.04)。因此,我们希望在升级到新操作系统之前,设置一个与特定操作系统上可运行的 Rolling 发行版一致的 rosdistro 先行版本,以保证我们的系统正常运行。
重要前言
Rosdep 会从它的 /etc/ros/rosdep/sources.list.d/20-default.list
的默认设置。当使用 rosdep 启动
,它会填充 20-default.list
与主 rosdistro URL (从这个文件).生成的高速缓存 rosdep 更新
位于 ~/.ros/rosdep/sources.cache
不应手工修改。
当没有 rosdistro_index_url
如果在更新 rosdep 时设置了环境变量值,则会使用主要的公共 rosdistro 索引。不过,如果设置了该值,则可以使用自定义的 rosdisto 索引,该索引可以是公共索引的快照,也可以是完全独立的索引,其中填充了自己的专有软件包。
如果您想了解更多相关信息,请查看 ros_buildfarm 软件包中的文档.
如何使用自定义 Rosdistro 版本
要在您的 CI、docker 构建、本地环境、机器人或其他应用程序中使用自定义版本,我们首先需要确定感兴趣的 rosdistro 版本。
在我们的示例中,我们希望使用第一次同步之前的最后一个索引状态。 滚动
在新操作系统上。在这种情况下,我们操作系统的最后一次同步是在 2024 年 2 月 28 日进行的。方便的是,这些同步都有标记,因此我们可以在 滚动/2024-02-28
标记的分支。
因此,我们需要更新 20-default.list
而不是使用主版本库的当前状态。这可以通过如下脚本实现。如果在本地主机上运行,可能需要在脚本中加入 苏都
.这将更新列表,使用我们的标记分支,而不是主分支。
欙腓 -i "s|ros\/rosdistro\/master|ros\/rosdistro\/rolling\/2024-02-28|"; /etc/ros/rosdep/sources.list.d/20-default.list
之后,我们必须更新环境变量 rosdistro_index_url
指向我们的新 rosdistro 索引。
出口 rosdistro_index_url=https://raw.githubusercontent.com/ros/rosdistro/rolling/2024-02-28/index-v4.yaml
如果您计划在本地主机上长期使用,最好在您的 ~/.bashrc
这样,所有新终端都会自动这样做。......。 v4
在我们的索引中指向新版本的索引格式。在没有 v4
由于历史原因和遗留系统的原因,它仍然存在,但你不应该使用它。
之后,您可以 rosdep 更新
现在,它将使用这些更改来更新指数,使其符合 2024 年 2 月 28 日开始中断前的滚动分布状态。你可以在 Nav2 的 CircleCI 和 ros_gz 的 GitHub 操作 以绕过其 CI 系统的临时滚动中断。
备注
如果您使用的是自定义的 rosdistro 版本,可以用您的分叉或索引位置替换默认列表和索引 URL 中的最终 URL。