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
  • whether when I sudo apt-get install ros-something, that something is immediately runnable, or needs additional building

In general: yes, all binary artefacts in the debian pkgs can be used immediately, no further steps required. The debian pkgs generated by the ROS buildfarm are no different from the other debs that you install via apt-get (or the Software Center, or Synaptic, or ..): they contain programs and libraries.

Other files (urdfs, xacros, msgs) can also be used 'directly', although those are typically used as parts of other programs / applications, so it depends a bit on how you'd define 'directly'.

  • what "rosdep install" is supposed to do: it does not seem to require root, so where does it write things ?

From :

rosdep is a command-line tool for installing system dependencies.

So rosdep installs system dependencies: things that ROS packages can depend on, but are not ROS packages themselves (mostly libraries, but also entire external programs or files).

From rosdep -h:

rosdep install <stacks-and-packages>...
  generate a bash script and then execute it.

That is a bit cryptic, but it does provide a hint as to why rosdep itself does not "require root": rosdep only generates a script which contains (on Ubuntu at least) sudo apt-get install .. lines that install the system dependencies mentioned earlier. Obviously, installing things does require super user rights, hence the sudo.

As resolving dependencies in itself does not require super user rights (it's just looking up some things in a database), asking for them is postponed until apt-get actually needs them.

  • what "rosmake" is supposed to do: idem, does not seem to require root, but does not seem to interact with the catkin workspace either

rosmake is a build driver: it starts other programs in a specific order (dictated by pkg dependencies) that results in your packages being build correctly. It does not start gcc (or whatever compiler is used) by itself, but delegates that to (GNU) make. As a typical workspace build does not require super user rights, rosmake does not need them either.

If you need rosmake to change things in locations not writeable by your user, then it of course needs additional rights, which it might get through running it as the super user. But in general this is not recommended.

Note that rosmake is part of the old rosbuild build environment, which was replaced by catkin. Both are essentially CMake wrappers, that add some convenience macros/functions to CMake to make it easier to work with ROS packages and collections of packages (ie: workspaces). You can still use it on modern ROS distributions, but there are some restrictions (such as Catkin packages not being able to depend on rosbuild packages). If the old instructions told you to use rosmake, that should still work, but it'd probably be a good idea to migrate the package(s) involved to catkin.

  • whether when I sudo apt-get install ros-something, that something is immediately runnable, or needs additional building

In general: yes, all binary artefacts in the debian pkgs can be used immediately, no further steps required. The debian pkgs generated by the ROS buildfarm are no different from the other debs that you install via apt-get (or the Software Center, or Synaptic, or ..): they contain programs and libraries.

Other files (urdfs, xacros, msgs) can also be used 'directly', although those are typically used as parts of other programs / applications, so it depends a bit on how you'd define 'directly'.

  • what "rosdep install" is supposed to do: it does not seem to require root, so where does it write things ?

From wiki/rosdep:

rosdep is a command-line tool for installing system dependencies.

So rosdep installs system dependencies: things that ROS packages can depend on, but are not ROS packages themselves (mostly libraries, but also entire external programs or files).

From rosdep -h:

rosdep install <stacks-and-packages>...
  generate a bash script and then execute it.

That is a bit cryptic, but it does provide a hint as to why rosdep itself does not "require root": rosdep only generates a script which contains (on Ubuntu at least) sudo apt-get install .. lines that install the system dependencies mentioned earlier. Obviously, installing things does require super user rights, hence the sudo.

As resolving dependencies in itself does not require super user rights (it's just looking up some things in a database), asking for them is postponed until apt-get actually needs them.

  • what "rosmake" is supposed to do: idem, does not seem to require root, but does not seem to interact with the catkin workspace either

rosmake is a build driver: it starts other programs in a specific order (dictated by pkg dependencies) that results in your packages being build correctly. It does not start gcc (or whatever compiler is used) by itself, but delegates that to (GNU) make. As a typical workspace build does not require super user rights, rosmake does not need them either.

If you need rosmake to change things in locations not writeable by your user, then it of course needs additional rights, which it might get through running it as the super user. But in general this is not recommended.

Note that rosmake is part of the old rosbuild build environment, which was replaced by catkin. Both are essentially CMake wrappers, that add some convenience macros/functions to CMake to make it easier to work with ROS packages and collections of packages (ie: workspaces). You can still use it on modern ROS distributions, but there are some restrictions (such as Catkin packages not being able to depend on rosbuild packages). If the old instructions told you to use rosmake, that should still work, but it'd probably be a good idea to migrate the package(s) involved to catkin.

  • whether when I sudo apt-get install ros-something, that something is immediately runnable, or needs additional building

In general: yes, all binary artefacts in the debian pkgs can be used immediately, no further steps required. The debian pkgs generated by the ROS buildfarm are no different from the other debs that you install via apt-get (or the Software Center, or Synaptic, or ..): they contain programs and libraries.

Other files (urdfs, xacros, msgs) can also be used 'directly', although those are typically used as parts of other programs / applications, so it depends a bit on how you'd define 'directly'.

  • what "rosdep install" is supposed to do: it does not seem to require root, so where does it write things ?

From wiki/rosdep:

rosdep is a command-line tool for installing system dependencies.

So rosdep installs system dependencies: things that ROS packages can depend on, but are not ROS packages themselves (mostly libraries, but also entire external programs or files).

From rosdep -h:

rosdep install <stacks-and-packages>...
  generate a bash script and then execute it.

That is a bit cryptic, but it does provide a hint as to why rosdep itself does not "require root": rosdep only generates a script which contains (on Ubuntu at least) sudo apt-get install .. lines that install the system dependencies mentioned earlier. Obviously, installing things does require super user rights, hence the sudo.

As resolving dependencies in itself does not require super user rights (it's just looking up some things in a database), asking for them is postponed until apt-get actually needs them.

  • what "rosmake" is supposed to do: idem, does not seem to require root, but does not seem to interact with the catkin workspace either

rosmake is a build driver: it starts other programs in a specific order (dictated by pkg dependencies) that results in your packages being build correctly. It does not start gcc (or whatever compiler is used) by itself, but delegates that to (GNU) make. As a typical workspace build build does not require super user rights, rosmake does not need them either.either (rosbuild does not really have an "install" concept, but if it would've had one, installing system-wide would've required additional access rights).

If you need rosmake to change things in locations not writeable by your user, then it of course needs additional rights, which it might get through running it as the super user. But in general this is not recommended.

Note that rosmake is part of the old rosbuild build environment, which was replaced by catkin. Both are essentially CMake wrappers, that add some convenience macros/functions to CMake to make it easier to work with ROS packages and collections of packages (ie: workspaces). You can still use it on modern ROS distributions, but there are some restrictions (such as Catkin packages not being able to depend on rosbuild packages). If the old instructions told you to use rosmake, that should still work, but it'd probably be a good idea to migrate the package(s) involved to catkin.

  • whether when I sudo apt-get install ros-something, that something is immediately runnable, or needs additional building

In general: yes, all binary artefacts in the debian pkgs can be used immediately, no further steps required. The debian pkgs generated by the ROS buildfarm are no different from the other debs that you install via apt-get (or the Software Center, or Synaptic, or ..): they contain programs and libraries.

Other files (urdfs, xacros, msgs) can also be used 'directly', although those are typically used as parts of other programs / applications, so it depends a bit on how you'd define 'directly'.

  • what "rosdep install" is supposed to do: it does not seem to require root, so where does it write things ?

From wiki/rosdep:

rosdep is a command-line tool for installing system dependencies.

So rosdep installs system dependencies: things that ROS packages can depend on, but are not ROS packages themselves (mostly libraries, but also entire external programs or files).

From rosdep -h:

rosdep install <stacks-and-packages>...
  generate a bash script and then execute it.

That is a bit cryptic, but it does provide a hint as to why rosdep itself does not "require root": rosdep only generates a script which contains (on Ubuntu at least) sudo apt-get install .. lines that install the system dependencies mentioned earlier. Obviously, installing things does require super user rights, hence the sudo.

As resolving dependencies in itself does not require super user rights (it's just looking up some things in a database), asking for them is postponed until apt-get actually needs them.

  • what "rosmake" is supposed to do: idem, does not seem to require root, but does not seem to interact with the catkin workspace either

rosmake is a build driver: it starts other programs in a specific order (dictated by pkg dependencies) that results in your packages being build correctly. It does not start gcc (or whatever compiler is used) by itself, but delegates that to (GNU) make. As a typical workspace build does not require super user rights, rosmake does not need them either (rosbuild does not really have an "install" concept, but if it would've had one, installing system-wide would've required additional access rights).

If you need rosmake to change things in locations not writeable by your user, then it of course needs additional rights, which it might get through running it as the super user. But in general this is not recommended.recommended, most of the times not needed and thus not really used.

Note that rosmake is part of the old rosbuild build environment, which was replaced by catkin. Both are essentially CMake wrappers, that add some convenience macros/functions to CMake to make it easier to work with ROS packages and collections of packages (ie: workspaces). You can still use it on modern ROS distributions, but there are some restrictions (such as Catkin packages not being able to depend on rosbuild packages). If the old instructions told you to use rosmake, that should still work, but it'd probably be a good idea to migrate the package(s) involved to catkin.