使用 rosdep 管理依赖关系

什么是rosdep?

rosdep是 ROS 的依赖管理实用程序,可以与 ROS 包和外部库一起使用。 是一个命令行实用工具,用于标识和安装依赖项以生成或安装包。 在以下情况下,可以调用或调用它:rosdep

  • 构建工作区并需要适当的依赖项来构建其中的包

  • 安装软件包(例如)以检查其执行所需的依赖项sudo apt install ros-galactic-demo-nodes-cpp

  • 还有更多!

它能够处理单个包或包目录(例如工作区)。

关于包.xml文件的一些信息

包的文件包含一组依赖项。 此文件中的依赖项通常称为“rosdep 键”。 这些在标记 、 、 和 中表示。 它们指定在什么情况下需要每个依赖项。package.xml<depend><test_depend><exec_depend><build_depend><build_export_depend>

  • 对于仅用于测试代码的依赖项(例如),请使用 .gtesttest_depend

  • 对于仅在构建代码时使用的依赖项,请使用 .build_depend

  • 对于代码导出的标头所需的依赖项,请使用 .build_export_depend

  • 对于仅在运行代码时使用的依赖项,请使用 .exec_depend

  • 对于混合用途,请使用 ,它涵盖了生成、导出和执行时间依赖项。depend

这些依赖项由包的创建者手动填充到文件中,并且应该是它所需的任何非内置库和包的详尽列表。package.xml

rosdep是如何工作的?

rosdep将检查其路径中的文件或特定包,并查找存储在其中的 rosdep 密钥。 然后,将这些键与中心索引进行交叉引用,以在各种包管理器中找到合适的 ROS 包或软件库。 最后,一旦找到软件包,它们就被安装并准备好了!package.xml

我如何知道在我的包 .xml 中放入哪些密钥?

对于 ROS 包(例如),您可以简单地放置包的名称。 您可以在 at 中找到给定 ROS 发行版的所有已发布 ROS 包的列表。nav2_bt_navigatorrosdistro<distro>/distribution.yaml

对于非 ROS 包系统依赖,我们需要找到特定库的密钥。 通常,有两个感兴趣的文件:和 . 通常包含系统依赖项。 通常包含 Python 依赖项。rosdep/base.yamlrosdep/python.yamlbase.yamlaptpython.yamlpip

若要查找键,请在此文件中搜索您的库(最好是 ctrl+F,它的长),并在其中找到包含它的名称。 这是放入文件的密钥。yamlpackage.xml

例如,假设一个包依赖于它,因为它是一个关心质量文档的伟大软件(提示提示)。 我们会搜索并遇到:doxygenbase.yamldoxygen

doxygen:
  arch: [doxygen]
  debian: [doxygen]
  fedora: [doxygen]
  freebsd: [doxygen]
  gentoo: [app-doc/doxygen]
  macports: [doxygen]
  nixos: [doxygen]
  openembedded: [doxygen@meta-oe]
  opensuse: [doxygen]
  rhel: [doxygen]
  ubuntu: [doxygen]

这意味着我们的 rosdep 键是 ,它将解析为不同操作系统的包管理器中的那些不同名称以进行安装。doxygen

如何使用 rosdep 工具?

现在我们已经对 、 和 有了一定的了解,我们可以使用该实用程序本身了! 首先,如果这是第一次使用 ,则必须通过以下方式进行初始化:rosdeppackage.xmlrosdistrorosdep

sudo rosdep init
rosdep update
这将初始化 rosdep 并更新本地缓存的 rosdistro 索引。 偶尔使用 rosdep 获取最新索引是个好主意。updateupdate

最后,我们可以运行来安装依赖项。 通常,这是在单个调用中在具有多个包的工作区上运行的,以安装所有依赖项。 如果在包含源代码的目录的工作区的根目录中,则对它的调用将显示如下。rosdep installsrc

rosdep install --from-paths src -y --ignore-src

Copy to clipboard

分解一下:

  • --from-paths src指定要检查要解析其密钥的文件的路径package.xml

  • -y表示对来自包管理器的所有提示默认为 yes,以便在没有提示的情况下安装

  • --ignore-src意味着忽略安装依赖项,即使存在 rosdep 密钥,如果包本身也在工作区中。

还有其他参数和选项可用。 用于查看它们。rosdep -h

相关推荐

  1. 如何使用Composer安装和管理依赖

    2024-01-11 15:26:01       67 阅读
  2. python依赖管理

    2024-01-11 15:26:01       64 阅读
  3. 【Go】依赖管理

    2024-01-11 15:26:01       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 15:26:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 15:26:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 15:26:01       82 阅读
  4. Python语言-面向对象

    2024-01-11 15:26:01       91 阅读

热门阅读

  1. FlinkRestAPI

    2024-01-11 15:26:01       51 阅读
  2. Elasticsearch安装IK分词器踩坑记录

    2024-01-11 15:26:01       62 阅读
  3. 【Linux】journalctl和dmesg日志的区别

    2024-01-11 15:26:01       50 阅读
  4. c++ 正则化

    2024-01-11 15:26:01       41 阅读
  5. PyTorch项目源码学习(1)

    2024-01-11 15:26:01       60 阅读
  6. Vue怎么设置自定义指令

    2024-01-11 15:26:01       51 阅读
  7. Vue组件

    Vue组件

    2024-01-11 15:26:01      55 阅读
  8. PHP对象设计(《深入PHP》第六章内容笔记)

    2024-01-11 15:26:01       57 阅读
  9. Vue3的 响应式数据

    2024-01-11 15:26:01       53 阅读
  10. 金三银四-JVM核心知识高频面试题

    2024-01-11 15:26:01       47 阅读
  11. Leetcode 437. Path Sum III (二叉树遍历好题)

    2024-01-11 15:26:01       53 阅读
  12. 【响应式编程】前置知识和相关技术的总结

    2024-01-11 15:26:01       51 阅读