Skip to content

Instantly share code, notes, and snippets.

@Kyungpyo-Kim
Forked from awesomebytes/debian_from_ros_pkg.md
Last active August 23, 2021 05:42
Show Gist options
  • Save Kyungpyo-Kim/cd9e150cb3038db3cb6457ea2bc2e107 to your computer and use it in GitHub Desktop.
Save Kyungpyo-Kim/cd9e150cb3038db3cb6457ea2bc2e107 to your computer and use it in GitHub Desktop.
How to create a debian from a ROS package

How to make a debian from a ROS package

The instructions are based on this answers.ros.org thread.

Get dependencies

You may need the latest pip, follow the official instructions.

Install bloom:

sudo apt-get install python-bloom

or (recommended)

sudo pip install -U bloom

Install fakeroot:

sudo apt-get install fakeroot

Get ready

To make a debian folder structure from the ROS package you must cd into the package to be in the same folder where package.xml file is.

Create debian structure

bloom-generate rosdebian --os-name ubuntu --os-version bionic --ros-distro melodic

You can also let the tool guess some stuff:

bloom-generate rosdebian --ros-distro melodic

You'll get something like this:

~/audio_ws/src/audio_file_player$ bloom-generate rosdebian --os-name ubuntu --os-version trusty --ros-distro indigo
==> Generating debs for ubuntu:trusty for package(s) ['audio_file_player']
No homepage set, defaulting to ''
No historical releaser history, using current maintainer name and email for each versioned changelog entry.
No CHANGELOG.rst found for package 'audio_file_player'
Package 'audio-file-player' has dependencies:
Run Dependencies:
  rosdep key           => trusty key
  rospy                => ['ros-indigo-rospy']
  actionlib_msgs       => ['ros-indigo-actionlib-msgs']
Build and Build Tool Dependencies:
  rosdep key           => trusty key
  rospy                => ['ros-indigo-rospy']
  actionlib_msgs       => ['ros-indigo-actionlib-msgs']
  catkin               => ['ros-indigo-catkin']
==> Placing templates files in the 'debian' folder.
==> In place processing templates in 'debian' folder.
Expanding 'debian/control.em' -> 'debian/control'
Expanding 'debian/changelog.em' -> 'debian/changelog'
Expanding 'debian/compat.em' -> 'debian/compat'
Expanding 'debian/rules.em' -> 'debian/rules'
~/audio_ws/src/audio_file_player$ ls
action  assets  CMakeLists.txt  debian  launch  package.xml  README.md  scripts 
~/audio_ws/src/audio_file_player$ ls debian
changelog  compat  control  rules  source

Create binary debian

Having sourced the necessary dependencies (most probably source /opt/ros/indigo/setup.bash) execute:

source /opt/ros/melodic/setup.bash
fakeroot debian/rules binary

If you get the error:

dh: Command not found

You need to install:

sudo apt-get install dpkg-dev debhelper

In the end you'll get a line like:

dpkg-deb: building package `ros-indigo-audio-file-player' in `../ros-indigo-audio-file-player_0.0.1-0trusty_amd64.deb'.

Cheat sheet

bloom-generate rosdebian --ros-distro melodic && \
source /opt/ros/melodic/setup.bash && \
fakeroot debian/rules binary
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment