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

rosdep doesn't recognize OS

asked 2012-07-28 13:55:09 -0500

NsN gravatar image

updated 2014-01-28 17:13:10 -0500

ngrennan gravatar image

Hi, I'm trying to install ROS fuerte on my raspberry pi running raspian (debian based). Everything is running fairly smooth, however rosdep doesn't seem to recognize my OS, even though I've set it using ROS_OS_OVERRIDE.

Executing: python -m rospkg.os_detect results in:

OS Name:     debian
OS Version:  squeeze
OS Codename:

But executing: rosdep install -a results in:

Executing script below with cwd=/tmp
{{{
#!/bin/bash
export PREFIX=/usr/
[ f932cebad87302d8ea0ec1fd39b24d99 = `cat $PREFIX/include/eigen3/eigen-version.installed` ]

}}}

cat: /usr//include/eigen3/eigen-version.installed: No such file or directory
/tmp/tmpeXADPG: line 3: [: f932cebad87302d8ea0ec1fd39b24d99: unary operator expected
Executing script below with cwd=/tmp
{{{
#!/bin/bash
export PREFIX=/usr/
if [ -f $PREFIX/include/assimp/assimp-version.installed ]; then
  [ 2ed0b9954bcb2572c0dade8f849b9260 = `cat $PREFIX/include/assimp/assimp-version.installed` ]
else
  false
fi

}}}

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rosconsole: No definition of [log4cxx] for OS version []
srdf: No definition of [log4cxx] for OS version []
nodelet_topic_tools: No definition of [log4cxx] for OS version []
collada_urdf: No definition of [log4cxx] for OS version []
filters: No definition of [log4cxx] for OS version []
test_bond: No definition of [boost] for OS version []
diagnostic_aggregator: No definition of [log4cxx] for OS version []
roslib: No definition of [boost] for OS version []
eigen_conversions: No definition of [log4cxx] for OS version []
tf: No definition of [log4cxx] for OS version []
nodelet: No definition of [log4cxx] for OS version []
simmechanics_to_urdf: No definition of [log4cxx] for OS version []
timestamp_tools: No definition of [boost] for OS version []
test_nodelet: No definition of [log4cxx] for OS version []
robot_state_publisher: No definition of [log4cxx] for OS version []
resource_retriever: No definition of [log4cxx] for OS version []
test_diagnostic_aggregator: No definition of [log4cxx] for OS version []
tf_conversions: No definition of [log4cxx] for OS version []
bondcpp: No definition of [boost] for OS version []
pluginlib: No definition of [log4cxx] for OS version []
bondpy: No definition of [boost] for OS version []
bond: No definition of [boost] for OS version []

Since the version brackets are empty, I'm guessing that rosdep doesn't acurately recognizes the OS Override. Is there another flag I can set?

edit retag flag offensive close merge delete

5 Answers

Sort by ยป oldest newest most voted
4

answered 2012-08-02 12:05:01 -0500

rlinsalata gravatar image

ROS_OS_OVERRIDE does not (seem to) affect rosdep install. I don't know if this is by design or an oversight. However, I got it to work by manually setting the os override option on the command line when calling rosdep:

rosdep resolve <key-name> --os=OS_NAME:OS_VERSION

This option will work with the other rosdep commands such as rosdep install. I did this (to trick rosdep for my Linaro/Ubuntu system):

rosdep install -ay --os=ubuntu:oneiric
edit flag offensive delete link more

Comments

tfoote gravatar image tfoote  ( 2012-08-26 18:09:52 -0500 )edit

what is <key-name> in this post. please explain. thanks in advance.

mozcelikors gravatar image mozcelikors  ( 2013-07-20 13:41:47 -0500 )edit
0

answered 2012-07-30 00:24:06 -0500

kaharoth gravatar image

I have debian squeeze and when I lunch that command I have this output: john@debreef:~$ python -m rospkg.os_detect OS Name: debian OS Version: 6.0.5 OS Codename: squeeze

I did not override the ROS_OS_OVERRIDE variable.

However when I lunch rosdep install -ay command I have a failure because it cannot find some packages definitions.

edit flag offensive delete link more
1

answered 2012-07-30 03:55:37 -0500

PerkinsJames gravatar image

A workaround for this issue (until/if you get it fixed) is to not use rosdep, as all it does is install dependencies for you. Just install them yourself.

I am using an openSUSE system and rosdep will not work for me because the get_codename python function is not available on whatever revision number I have (along with a number of other issues, of which I started to try to fix). I just skipped using rosdep and I had no other issues.

edit flag offensive delete link more

Comments

So, should I just install the current versions of boost, log4cxx, etc? Does ROS look for specific versions or will it try to use whatever is installed?

NsN gravatar image NsN  ( 2012-07-30 04:17:59 -0500 )edit

Not sure of the answer to that, but I'm using boost version 1.46.1 and ROS Fuerte works fine for me. I believe I had a problem with boost version 1.49 using ROS Electric, but I cant say that for certain. I would try the packages your debian package manager comes with first (the default ones).

PerkinsJames gravatar image PerkinsJames  ( 2012-07-30 12:28:12 -0500 )edit
1

answered 2014-09-11 06:52:02 -0500

usiraj gravatar image

On openSUSE /etc/SuSE-brand file is missing. A workaround is to create a SUSE-brand file in /etc/ with the following text in it:

openSUSE
VERSION = <your openSUSE version, e.g 13.1>
edit flag offensive delete link more
2

answered 2015-03-21 09:27:27 -0500

h3disam gravatar image

I had the same problem using elemntary OS luna.

You should add an environment variable named "ROS_OS_OVERRIDE" which it's value must be your distribution info. eOs luna is based on ubuntu 12.04 and I'm using Bash Shell. Setting environment variables may be different in other command shells.

$ cat /etc/lsb-release
DISTRIB_ID="elementary OS"
DISTRIB_RELEASE=0.2
DISTRIB_CODENAME=luna
DISTRIB_DESCRIPTION="elementary OS Luna"

You need the first three lines.

$ export ROS_OS_OVERRIDE="DISTRIB_ID:DISTRIB_RELEASE:DISTRIB_CODENAME"

Which in my case it will be:

$ export ROS_OS_OVERRIDE="elementary OS:0.2:luna"

Log out your system then log in again. Now if you check your os.environ in python, the ROS_OS_OVERRIDE will be exist.

>>> import os
>>> "ROS_OS_OVERRIDE" in os.environ
True
>>> os.environ["ROS_OS_OVERRIDE"]
'elementary OS:0.2:luna'

Now you can run rosdep update successfully.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2012-07-28 13:55:09 -0500

Seen: 13,607 times

Last updated: Sep 11 '14