Ask Your Question

How does catkin tell if a dependency is a system or ROS dependency?

asked 2018-02-22 08:41:16 -0500

ivaughn gravatar image

I'm trying to get dependency tracking in our package.xml files squared away, but ROS seems to be trying to treat libeigen3-dev as a ROS package rather than a system dependency.

Specifically, I've got a package that depends on Eigen, the well-known header-only linear algebra library. Sounds like a build dependency, so:


Here's what happens when I run rosdep check:

    ~/sentry_dev_ws$ rosdep check --from-paths src --ignore-src
All system dependencies have been satisified
ERROR[ds_sim]: Cannot locate rosdep definition for [libeigen3-dev]
    rosdep key : libeigen3-dev
    OS name    : ubuntu
    OS version : xenial
    Data: no data

Changing the dependency name to "eigen" fixes this, but eigen isn't an ubuntu apt package name. I have the same issue with google protobuf, and will probably have it again in the future.

I have a suspician catkin's packaging tools will prove very poweful. Just gotta figure them out first.


edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2018-02-22 10:06:22 -0500

joq gravatar image

The rosdep key for Eigen is: eigen. Put that in the build depend.

On Ubuntu it resolves to the libeigen3-dev package. On other operating systems it may resolve to some different package name.

Similarly, protobuf resolves to libprotobuf9v5 on Ubuntu Xenial.

For a general introduction to rosdep:

edit flag offensive delete link more



A bit of a 'plug', but some more info on rosdep, keys and why we use those: #q215059 (and perhaps #q217475).

gvdhoorn gravatar image gvdhoorn  ( 2018-02-23 04:12:06 -0500 )edit

That's all great, the logic makes sense, etc. But the rosdep tutorial linked does not solve the problem I have.

If I have a library key, with an apt package name, how do I find the rosdep key to put there? And if it doesn't exist, how do I create it. For my local system, that ships next week.

ivaughn gravatar image ivaughn  ( 2018-02-27 08:26:19 -0500 )edit

I'm not sure a reverse rosdep lookup tool exists, but I could just have missed it.

As a work-around, open ros/rosdistro/rosdep/base.yaml, ctrl+f and type in the name of your deb pkg. If there are no hits, follow the procedure ..

gvdhoorn gravatar image gvdhoorn  ( 2018-02-27 08:30:08 -0500 )edit

.. to submit new rules here.

Personally I skip the Make sure that your rules work section most of the time.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-27 08:30:56 -0500 )edit

answered 2018-02-22 09:15:20 -0500

machinekoder gravatar image

From what I understand you need to create a rosdep definition in

edit flag offensive delete link more

answered 2018-02-27 08:36:34 -0500

ivaughn gravatar image

updated 2018-02-27 09:14:13 -0500

The tutorial linked above at originally motivated this question.

It has been partially answered by and more completely answered by the external rosdep tutorials:

Once you have a rosdep file, you can add a reference to it in /etc/ros/rosdep/sources.list.d/ and submit it upstream. Overall though, there's REALLY good support for a lot of common packages already in rosdep once you know how to look them up through the yaml files in the repos.

A reverse lookup tool would be nice, but a way to just list everything alphabetically would be a great starting place.

edit flag offensive delete link more


If by "listing everything alphabetically" you mean all mappings of keys->system dependencies/pkgs then you should be able to use rosdep db | sort.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-27 12:50:43 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-02-22 08:41:16 -0500

Seen: 411 times

Last updated: Feb 27 '18