While the core ROS libraries can be installed into system directories via Debian packages or other system-based distribution mechanisms, a given ROS install base usually contains binaries and scripts located in user space. Several environment variables make these resources available to the ros tools, such as ROS_PACKAGE_PATH for the legacy buildsystem rosbuild, and CMAKE_PREFIX_PATH for the new buildsystem catkin.
By manipulating this environment variable, users can create their own packages, install additional packages from source, or even shadow installed packages with experimental versions.
There are a few ways to manage these "overlay" environments. A user can manage environment variables by hand, but this is cumbersome, can lead to confusion when switching environments, and errors in this variable can easily break a user's environment.
Alternatively, catkin and rosws provide systematic methods for managing package overlays in a user's workspace.
Follow the tutorials here to setup either a catkin or a rosbuild overlay workspace for Groovy:
Catkin overlay workspace catkin/Tutorials/workspace_overlaying
rosbuild overlay workspace catkin/Tutorials/using_rosbuild_with_catkin