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

Create a Deb file from two Ros Packages

asked 2018-05-02 09:59:47 -0600

billyDong gravatar image

Hello, I would like to create a DEB file for the packages A and B. Let's consider that everything it's perfect and I dont have any dependencies troubles. I can create a deb for A and a deb for B.

It's possible to create a deb file from a ros package using bloom-generate, but this tool only works with one package at a time.

Is it possible to create a deb file for package A and B? Do I need to create a MetaPackage with these two packages?

edit retag flag offensive close merge delete


Is your goal to build one deb containing two ROS packages or build both packages with one command?

nuclearsandwich gravatar image nuclearsandwich  ( 2018-05-02 17:10:43 -0600 )edit

@nuclearsandwich My goal is to have an installation file that install two packages. Can I do that? Do I have to create a metapackage with these two packages? The simpler the best, if I could build two (or more) packages with one command that would be perfect..

billyDong gravatar image billyDong  ( 2018-05-03 04:25:20 -0600 )edit

3 Answers

Sort by ยป oldest newest most voted

answered 2018-05-25 14:18:45 -0600

nuclearsandwich gravatar image

updated 2018-05-25 14:28:16 -0600

gvdhoorn gravatar image

Metapackages don't contain any significant contents on their own, they pull in a set of desired packages as dependencies. So in order to easily use metapackages your package A and B debs need to be available in a repository somewhere.

A non-ROS specific way to construct metapackages is described in It assumes that your package A and B are installable from a repository.

To my knowledge there are not tools in the ROS ecosystem for constructing a single debian binary package from multiple existing binaries.

edit flag offensive delete link more


To my knowledge there are not tools in the ROS ecosystem for constructing a single debian binary package from multiple existing binaries.

Running catkin_make install (or equivalent catkin_tools) using checkinstall?

gvdhoorn gravatar image gvdhoorn  ( 2018-05-25 14:29:17 -0600 )edit

@gvdhoorn how would that work? I've tried before and it creates an install folder, but what can I do with it?

billyDong gravatar image billyDong  ( 2018-06-04 05:08:13 -0600 )edit

answered 2019-05-20 00:53:05 -0600

tfoote gravatar image

You can package up multiple packages using ROS bundling

edit flag offensive delete link more

answered 2019-05-17 08:07:38 -0600

tahsinkose gravatar image

updated 2019-05-17 08:26:18 -0600

You can use checkinstall. But it comes with a price. You can combine any number of packages in one Debian archive file. But install macro calls in CMakeLists.txt files must point to an absolute path. If you use catkin variables such as CATKIN_PACKAGE_INCLUDE_DESTINATION or CATKIN_PACKAGE_LIB_DESTINATION, it won't work. Instead, for instance, you should do:

 install(DIRECTORY include/${PROJECT_NAME}/
       DESTINATION /opt/ros/kinetic/include/

After that, executing catkin config --install && checkinstall catkin buildsuffices. When the command finishes, you will see an output of Debian package. When you extract its content with dpkg -x <package_name>, you can actually inspect which folders are archived.

edit flag offensive delete link more


Could you provide more details/example how to do this? I had problems using checkinstall. I was installing my packages in a custom directory and trying to pack it. But after the checkinstall command and compilation the deb file is empty. Do you know what could be happen?

GL gravatar image GL  ( 2023-01-17 08:58:37 -0600 )edit

Question Tools



Asked: 2018-05-02 09:59:47 -0600

Seen: 823 times

Last updated: May 20 '19