[Documentation] [TitleIndex] [WordIndex

Install ROS Kinetic on Slackware 14.2

This guide has been written and tested for Slackware 14.2 and a ROS Kinetic Desktop Install. If you have a different version of Slackware, steps might be slightly different.

Some other useful references are:

Note: ROS still primarily uses Python 2.7 and you should use that version of python for the installation.

Prerequisites

Install pip if you don't already have it

wget https://bootstrap.pypa.io/get-pip.py 
sudo python get-pip.py

Install ROS tools

Note that for rosdep you need to use the master branch as the latest release does not include some important bug fixes.

git clone https://github.com/ros-infrastructure/rosdep.git
cd rosdep
sudo pip install -U .

sudo pip install -U rosinstall rosinstall_generator wstool

Initialize rosdep

sudo rosdep init
rosdep update

Installing SlackWare package manager

Install sbotools

If you already have sbotools go to the next step

The Slackware installer that ROS uses is sbotools. This installer automates the process of installing packages from SlackBuilds - a third party repository for Slackware Linux. If you don't wish to isntall sbotools you will have to manually install all dependencies.

To install sbotools:

wget https://pink-mist.github.io/sbotools/downloads/sbotools-2.0.tar.gz 
sudo installpkg sbotools-2.0.tar.gz 

Update your list of packages

Make sure to execute this step as some of the dependencies were submitted on SlackBuilds very recently.

sudo sbocheck

Initialize your workspace

mkdir ~/ros_catkin_ws 
cd ~/ros_catkin_ws

Desktop-Full Install:

ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

This guide has been tested for this installation.

rosinstall_generator desktop_full --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-full-wet.rosinstall
wstool init -j8 src kinetic-desktop-full-wet.rosinstall

Desktop Install (recommended):

ROS, rqt, rviz, and robot-generic libraries

This guide has been tested for this installation.

rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
wstool init -j8 src kinetic-desktop-wet.rosinstall

ROS-Comm:

(Bare Bones) ROS package, build, and communication libraries. No GUI tools.

Although not tested for this kind of installation, this guide should work for it as all dependencies should be satisfied.

rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
wstool init -j8 src kinetic-desktop-wet.rosinstall

Install remaining dependencies

We should now install the rest of the dependencies for Slackware. We can do that using rosdep which will invoke sbotools and pip to install the missing dependencies.

rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

Be careful here. For each SlackBuilds package you will be prompted to confirm installation and optionally install SlackBuilds dependencies of the package. Ideally, you should be fine if you just select the defaults by pressing Enter for all prompts. There is one exception though: when installing VTK and prompted if you want to pass options to the SlackBuild script, select y and pass the option JAVA=yes

If you don't want to use sbotools and pip to install dependencies, instead of the above you can execute

rosdep install --from-paths src --ignore-src --rosdistro kinetic -y -s

This will output a list of commands that rosdep would have otherwise executed. In that list you can find the dependencies that you are missing. It will look like:

 #[sbotools] Installation commands:

 sudo -H sboinstall -r protobuf 
 sudo -H sboinstall -r sbcl
 ...

#[pip] Installation commands:

 sudo -H pip install -U empy
 ...

Build the catkin workspace

Now that we have satisfied all dependencies we are almost ready to go. There are a few issues we need to fix before building.

Set PYTHONPATH

Execute these commands in your current terminal:

PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/src/catkin/python/catkin 
PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/install_isolated/lib64/python2.7/site-packages 
PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/install_isolated/lib/python2.7/site-packages 
export PYTHONPATH 

Fix build issues

If we try to build the workspace now, we will run in build erros due to Slackware managing some packages differently. We are going to fix them by applying a custom-made patch. It makes some slight changes in the source files to fix cmake linking errors and make sure qt5 is used.

Navigate to the ROS-Slackware repo you cloned previously. From there execute the script which will apply the patch. Note that the script expects you to have your workspace in ~/ros_catkin_ws:

./patch.sh

Note you might run into some errors if you did not choose desktop-full installation. Just ignore them.

Build the workspace

We are now ready to build our workspace

cd ~/ros_catkin_ws 
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

Wait for ages until it is done.

Desktop-full install

If you are going for the desktop-full install and you have a 64bit version of Slackware, you are going to run into a build error which will look something like this:

==> Processing catkin package: 'gazebo_plugins'
...
Traceback (most recent call last):
  File "/home/niko/ros_catkin_ws/src/gazebo_ros_pkgs/gazebo_plugins/cfg/GazeboRosCamera.cfg", line 6, in <module>
    from dynamic_reconfigure.msg import SensorLevels
ImportError: No module named msg
CMakeFiles/gazebo_plugins_gencfg.dir/build.make:87: recipe for target '/home/niko/ros_catkin_ws/devel_isolated/gazebo_plugins/include/gazebo_plugins/GazeboRosCameraConfig.h' failed
make[2]: *** [/home/niko/ros_catkin_ws/devel_isolated/gazebo_plugins/include/gazebo_plugins/GazeboRosCameraConfig.h] Error 1
CMakeFiles/Makefile2:1489: recipe for target 'CMakeFiles/gazebo_plugins_gencfg.dir/all' failed
make[1]: *** [CMakeFiles/gazebo_plugins_gencfg.dir/all] Error 2
...
<== Failed to process package 'gazebo_plugins': 
  Command '['/home/niko/ros_catkin_ws/install_isolated/env.sh', 'make', '-j8', '-l8']' returned non-zero exit status 2

This error cannot be prevented beforehand because of a bug in the catkin build system which is currently being fixed. In the meantime, fix the error by navigating to the ROS-Slackware repo you cloned beforehand and execute:

./fixmodules.sh

Note that the script expects you to have your workspace in ~/ros_catkin_ws.

Now get back to the ROS workspace and continue:

cd ~/ros_catkin_ws
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

Everything should install successfully

Finalize installation

source ~/ros_catkin_ws/install_isolated/setup.bash

You are recommended to place this command in your ~/.bashrc to make the changes permanent:

echo "~/ros_catkin_ws/install_isolated/setup.bash" >> ~/.bashrc

Fix a possible build bug

If you are on a Slackware 64bit system, you must fix a future runtime problem which is result of a bug in the catkin build system (currently being fixed). In particular some packages with the same name but different modules were built in both install_isolated/lib64/python2.7/site-packages and install_isolated/lib/python2.7/site-packages. This is incorrect as it causes python errors later.

Navigate to the ROS-Slackware repo you cloned previously and execute from there:

./fixmodules.sh

The script will simply move all modules in install_isolated/lib64/python2.7/site-packages

Enjoy ROS

Issues

Make sure to check the known issues list and possible solutions in my repo https://github.com/nikonikolov/ROS-Slackware.


2022-05-28 12:35