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

Revision history [back]

click to hide/show revision 1
initial version

rosdep is the cross-platform tool for managing how system dependencies are installed. It contains support for Arch, though I'm not sure how well used it is.

That said, the problem noted has some incorrect assumptions:

"I just spent a day installing ROS and watching it's dependency system compile a pile of software that's already installed in my system (PCL, Gazebo, orocos, etc)."

Each release of ROS requires a very specific version of PCL, Gazebo, Orocos, etc... ROS recompiles its own versions so that everything works together. You might not get very far attempting to compile against your own system installed versions of these libraries as PCL and Gazebo have non-backwards-compatible API changes in recent releases.

Starting in ROS Fuerte, PCL and OpenCV are treated as system dependencies via rosdep, which means that you could attempt to start using rosdep in this way. In Groovy, Gazebo will likely get the same treatment. However, you will probably quickly find, as joq notes, that it takes much more time than you think to save disk space.

rosdep is the cross-platform tool for managing how system dependencies are installed. It contains support for Arch, though I'm not sure how well used it is.

That said, the problem noted has some incorrect assumptions:

"I just spent a day installing ROS and watching it's dependency system compile a pile of software that's already installed in my system (PCL, Gazebo, orocos, etc)."

Each release of ROS requires a very specific version of PCL, Gazebo, Orocos, etc... ROS recompiles its own versions so that everything works together. You might not get very far attempting to compile against your own system installed versions of these libraries as PCL and Gazebo have non-backwards-compatible API changes in recent releases.

Starting in ROS Fuerte, PCL and OpenCV are treated as system dependencies via rosdep, which means that you could attempt to start using rosdep in this way. In Groovy, Gazebo will likely get the same treatment. However, you will probably quickly find, as joq notes, that it takes much more time than you think to save disk space.

EDIT: in response to the updated question, my answer remains the same. If ROS builds it, you should build it as well. Only dependencies modelled by rosdep can be substituted with your platform's system dependencies. The version to use is "If ROS builds it from source, use that version. If ROS treats it as a rosdep, look at the rosdep.yaml database and pick whatever version is closest on your platform."

Starting in ROS Fuerte, many of the lower level stacks are close to FHS compliant, and thus easy to repackage for other distributions. As for system dependencies that are repackaged in ROS, you simply cannot substitute system dependencies for them due to the way the build system works (and there are often patches that you need). The goal is to eliminate most re-packaged system dependencies when Ubuntu Precise is available, so this will be much improved by the ROS Groovy release.