ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

For ROS 2 you can basically use any packaging mechanism you would use for any other proprietary software. We have standardized to use the install target and if you write your CMake code cleanly the install directory should be relocatable and can even be redistributed by tarballs. This is one of the mechanisms by which we offer to install ROS 2. Aka what we call the "fat" archive. http://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Binary.html

You can also create your own debian packages. You can manually follow the debian process: https://www.debian.org/doc/manuals/maint-guide/ and do it all manually.

You can leverage bloom to generate the metadata and then manually build the sourcedeb and binarydeb using git-buildpackage or dpkg-buildpackage manually. You will need to learn and understand the debian build pipelines and if you want to do several layers of packages or repositories you will need to munge some manual rosdep keys because you're not using a rosdistro to keep track of your released dependencies.

Depending on what you're looking to do you can stand up a whole instance of our buildfarm. https://github.com/ros-infrastructure/ros_buildfarm If you're planning to produce a lot of packages it's worth considering, but it's a lot of work to get setup.

There's no "correct" answer to this generically. My answers are reoughly in order of complexity. The more complex solutilons the more automation is available for repeated operations. But in general packaging is non-trivial and there's no simple solution that will work for anyone.

There are many other approaches, such as using docker images as well. They have different tradeoffs. There are a lot of tradeoffs of the level of modularity that you choose, many small packages, one large package. you trade off flexibility for your users vs complexity.

I would recommend looking at general software delivery practices. ROS 2 packages are relatively well behaved generally with respect to requrements for packaging and can be treated like most other python or cmake packages. You just have to make sure to build them in the right order with their dependencies availalble.