- 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 deb
s 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, 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 ... (more)