The instructions are based on this answers.ros.org thread.
You may need the latest pip, follow the official instructions.
Install bloom:
sudo apt-get install python-bloomor (recommended)
sudo pip install -U bloomInstall fakeroot:
sudo apt-get install fakerootTo 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.
bloom-generate rosdebian --os-name ubuntu --os-version trusty --ros-distro indigoYou can also let the tool guess some stuff:
bloom-generate rosdebian --ros-distro indigoYou'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 sourceHaving sourced the necessary dependencies (most probably source /opt/ros/indigo/setup.bash) execute:
fakeroot debian/rules binaryIf you get the error:
dh: Command not foundYou need to install:
sudo apt-get install dpkg-dev debhelperIn 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'.
For anyone looking to automate .deb file creation in their CI, I have made the create-ros-debs-action , to build .deb files from source repositories. The action uses docker-in-docker to build .deb files for any specified ROS2 distributions. The action also tests the created files by installing them and can be enhanced by adding other tests that run before or after the files are created. Please open an issue if there are any feature requests.
To use
create-ros-debs-actionin your GitHub repository, add the following steps to your workflow file (e.g.,.github/workflows/create_debs.yml):