文章

ros1 构建 Debian 包

ros1 构建 Debian 包

打包 ros 功能包有两种方式, 一种是采用 python3-bloom, 一种是自己实现打包脚本, 各有优劣,一般来说采用 python3-bloom 实现起来比较简单, 但是自己实现打包脚本比较灵活,下面主要以 python3-bloom 的方式来讲解整个打包流程, 后续有时间再补充自己实现自己打包脚本的方式。

准备工作

1、安装必要工具

1
sudo apt-get install python3-bloom fakeroot debhelper dh-python

2、确保 ROS 包已正确配置

  • 确保 ROS 包包含完整的 CMakeLists.txtpackage.xml
  • package.xml 中需填写正确的依赖项、版本、作者等信息。

使用 Bloom 生成 Debian 规则

Bloom 是 ROS 的官方打包工具,能自动生成 Debian 打包所需的配置。 在 ROS 包的根目录下运行:

1
2
cd catkin_ws/src/my_packge
bloom-generate rosdebian --os-name ubuntu --os-version focal --ros-distro noetic

自定义 Debian 配置(可选)

根据需要修改 debian 目录下的文件:

  • debian/control: 调整依赖项、软件包描述等。
  • debian/changelog: 更新版本号和变更日志。
  • debian/rules: 自定义编译和安装步骤(通常无需修改)。

构建 Debian 包

使用 dpkg-buildpackage 构建

1
fakeroot dpkg-buildpackage -b -uc -us

生成的 .deb 文件位置

  • 构建完成后,上级目录会生成 .deb 文件(如 ros-noetic-my-packge_1.0.0-0focal_amd64.deb)。

安装和测试

安装 Debian 包

1
sudo dpkg -i ros-noetic-my-packge_1.0.0-0focal_amd64.deb

解决依赖问题(如有)

1
sudo apt-get install -f

高级选项

使用私有 PPA 分发

  • 将 .deb 上传到私有 PPA 或仓库,方便批量部署。

    多架构支持

  • 在 debian/control 中设置 Architecture 字段(如 any 或 amd64)。

常见问题

依赖项缺失

  • 确保 package.xml 和 debian/control 中列出的依赖项与目标系统一致。

安装路径错误

  • 检查 CMakeLists.txt 中的 install() 指令,确保文件被安装到 /opt/ros/noetic。

版本冲突

  • 更新 package.xml 中的 字段,并在 debian/changelog 中同步版本号。
本文由作者按照 CC BY 4.0 进行授权