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

Why is the directory layout of Diamondback different when compiling from source?

asked 2011-08-17 08:08:15 -0500

Julius gravatar image

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

ngrennan gravatar image

I have installed ROS Diamondback from source, following the guidelines here: Now, for Ubuntu installations I created a rosinstall file that contains (besides other stuff) the following entries

other: { local-name: /opt/ros/diamondback/ros }
other: { local-name: /opt/ros/diamondback/stacks }

When compiling from source (Desktop-Full) on archlinux, there is no stacks directory. When installing Diamondback via aptitude on Ubuntu, there is a stacks directory. This is both puzzling because I expect the final result of compilation from source to be the same as when installed with some package manager. Also, this breaks the rosinstall file.

Why is the layout different? (maybe also: how to fix the rosinstall file?)

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2011-09-02 12:10:17 -0500

kwc gravatar image

updated 2011-09-02 14:42:09 -0500

Source trees and binaries installations frequently vary in layout for various reasons. rosinstall is designed to give you a developer tree, whereas the binary installations are meant to be closer to a legal 'install' layout and support shared usage. Different use cases result in differing layouts.

edit flag offensive delete link more


The exact layout does not need to be the same as long as your ROS_PACKAGE_PATH is set appropriately to find the packages you want to use.
tfoote gravatar image tfoote  ( 2011-09-03 04:32:14 -0500 )edit

answered 2011-09-02 21:14:44 -0500

Lorenz gravatar image

The install instructions for Arch linux show how to get a user-local installation of ros in the directory ~/ros with all stacks being direct subdirectories of it.

If you have several users on the same computer, you might want to consider doing a shared installation with the same directory layout as the debian packages. Unfortunately there is no tutorial on this anymore. In short, you need to download the rosinstall file of the variant you want to use, adjust it to have all stacks in the subdir stacks and execute the rosinstall command (as root) with destination /opt/ros/<distro>. Then, again as root, execute

rosmake -a -i --rosdep-install

to build all packages and mark them as compiled in order to make them usable for users.

If you have only one user, you can use the arch installation and just add your stacks. Change your own rosinstall file to not contain the two lines you mentioned in your question and do:

rosinstall ~/ros your-file.rosinstall

This is basically the solution you pointed out already.

edit flag offensive delete link more

answered 2011-08-17 08:21:22 -0500

Julius gravatar image

I came to the conclusion that it is preferable not to include the ROS distribution in the rosinstall file but specify it as a command-line argument to rosinstall, e.g.

rosinstall . my.rosinstall /opt/ros/diamondback

such avoiding the problem and also being more flexible. It's still an open question why the source install and the package install differ in directory layout.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2011-08-17 08:08:15 -0500

Seen: 372 times

Last updated: Sep 02 '11