Ask Your Question

Revision history [back]

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros ros_comm catkin cmake_modules common_msgs console_bridge gencpp geneus gennodejs genlisp genmsg genpy message_generation message_runtime rosbag_migration_rule rosconsole_bridge roscpp_core rosgraph_msgs roslisp rospack std_msgs std_srvs actionlib angles bond_core class_loader dynamic_reconfigure nodelet_core pluginlib control_msgs diagnostics executive_smach filters geometry robot_model robot_state_publisher xacro

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros ros_comm catkin cmake_modules common_msgs console_bridge gencpp geneus gennodejs genlisp genmsg genpy message_generation message_runtime rosbag_migration_rule rosconsole_bridge roscpp_core rosgraph_msgs roslisp rospack std_msgs std_srvs actionlib angles bond_core class_loader dynamic_reconfigure nodelet_core pluginlib control_msgs diagnostics executive_smach filters geometry robot_model robot_state_publisher xacro

which is both longer, provides more opportunities to make mistakes and is harder to document.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros ros_comm catkin cmake_modules common_msgs console_bridge gencpp geneus gennodejs genlisp genmsg genpy message_generation message_runtime rosbag_migration_rule rosconsole_bridge roscpp_core rosgraph_msgs roslisp rospack std_msgs std_srvs actionlib angles bond_core class_loader dynamic_reconfigure nodelet_core pluginlib control_msgs diagnostics executive_smach filters geometry robot_model robot_state_publisher xacro

which is both longer, provides more opportunities to make mistakes and is harder to document.

The same infrastructure can obviously be used to group together packages created by community members. One example would be MoveIt, which has a moveit metapackage.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros ros_comm actionlib angles bond_core catkin class_loader cmake_modules common_msgs console_bridge control_msgs diagnostics dynamic_reconfigure executive_smach filters gencpp geneus gennodejs genlisp genmsg gennodejs genpy geometry message_generation message_runtime nodelet_core pluginlib robot_model robot_state_publisher ros ros_comm rosbag_migration_rule rosconsole_bridge roscpp_core rosgraph_msgs roslisp rospack std_msgs std_srvs actionlib angles bond_core class_loader dynamic_reconfigure nodelet_core pluginlib control_msgs diagnostics executive_smach filters geometry robot_model robot_state_publisher xacro

which is both longer, provides more opportunities to make mistakes and is harder to document.

The same infrastructure can obviously be used to group together packages created by community members. One example would be MoveIt, which has a moveit metapackage.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install actionlib angles bond_core catkin class_loader cmake_modules common_msgs console_bridge control_msgs diagnostics dynamic_reconfigure executive_smach filters gencpp geneus genlisp genmsg gennodejs genpy geometry message_generation message_runtime nodelet_core pluginlib robot_model robot_state_publisher ros ros_comm rosbag_migration_rule rosconsole_bridge roscpp_core rosgraph_msgs roslisp rospack std_msgs std_srvs xacro
ros-$distro-actionlib ros-$distro-angles ros-$distro-bond_core ros-$distro-catkin ros-$distro-class_loader ros-$distro-cmake_modules ros-$distro-common_msgs ros-$distro-console_bridge ros-$distro-control_msgs ros-$distro-diagnostics ros-$distro-dynamic_reconfigure ros-$distro-executive_smach ros-$distro-filters ros-$distro-gencpp ros-$distro-geneus ros-$distro-genlisp ros-$distro-genmsg ros-$distro-gennodejs ros-$distro-genpy ros-$distro-geometry ros-$distro-message_generation ros-$distro-message_runtime ros-$distro-nodelet_core ros-$distro-pluginlib ros-$distro-robot_model ros-$distro-robot_state_publisher ros-$distro-ros ros-$distro-ros_comm ros-$distro-rosbag_migration_rule ros-$distro-rosconsole_bridge ros-$distro-roscpp_core ros-$distro-rosgraph_msgs ros-$distro-roslisp ros-$distro-rospack ros-$distro-std_msgs ros-$distro-std_srvs ros-$distro-xacro

which is both longer, provides more opportunities to make mistakes and is harder to document.

The same infrastructure can obviously be used to group together packages created by community members. One example would be MoveIt, which has a moveit metapackage.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros-$distro-actionlib ros-$distro-angles ros-$distro-bond_core ros-$distro-catkin ros-$distro-class_loader ros-$distro-cmake_modules ros-$distro-common_msgs ros-$distro-console_bridge ros-$distro-control_msgs ros-$distro-diagnostics ros-$distro-dynamic_reconfigure ros-$distro-executive_smach ros-$distro-filters ros-$distro-gencpp ros-$distro-geneus ros-$distro-genlisp ros-$distro-genmsg ros-$distro-gennodejs ros-$distro-genpy ros-$distro-geometry ros-$distro-message_generation ros-$distro-message_runtime ros-$distro-nodelet_core ros-$distro-pluginlib ros-$distro-robot_model ros-$distro-robot_state_publisher ros-$distro-ros ros-$distro-ros_comm ros-$distro-rosbag_migration_rule ros-$distro-rosconsole_bridge ros-$distro-roscpp_core ros-$distro-rosgraph_msgs ros-$distro-roslisp ros-$distro-rospack ros-$distro-std_msgs ros-$distro-std_srvs ros-$distro-xacro

which is both longer, provides allows for more opportunities to make mistakes and is harder to document.

The same infrastructure can obviously be used to group together packages created by community members. One example would be MoveIt, which has a moveit metapackage.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.

So what's the point?

They are used to group together sets of packages that form a 'coherent set' through their run_depends.

This then allows you to install - say all of the Robot variant (defined in REP-142) - with a single command:

sudo apt-get install ros-$distro-robot

instead of:

sudo apt-get install ros-$distro-actionlib ros-$distro-angles ros-$distro-bond_core ros-$distro-catkin ros-$distro-class_loader ros-$distro-cmake_modules ros-$distro-common_msgs ros-$distro-console_bridge ros-$distro-control_msgs ros-$distro-diagnostics ros-$distro-dynamic_reconfigure ros-$distro-executive_smach ros-$distro-filters ros-$distro-gencpp ros-$distro-geneus ros-$distro-genlisp ros-$distro-genmsg ros-$distro-gennodejs ros-$distro-genpy ros-$distro-geometry ros-$distro-message_generation ros-$distro-message_runtime ros-$distro-nodelet_core ros-$distro-pluginlib ros-$distro-robot_model ros-$distro-robot_state_publisher ros-$distro-ros ros-$distro-ros_comm ros-$distro-rosbag_migration_rule ros-$distro-rosconsole_bridge ros-$distro-roscpp_core ros-$distro-rosgraph_msgs ros-$distro-roslisp ros-$distro-rospack ros-$distro-std_msgs ros-$distro-std_srvs ros-$distro-xacro

which is both longer, allows for more mistakes and is harder to document.

The same infrastructure can obviously be used to group together packages created by community members. One example would be MoveIt, which has a moveit metapackage.

See REP-140 - Package Manifest Format Two Specification - Data Representation - <metapackage/> for more information on metapackages.


Edit: note that metapackages are not stacks, in that they do not physically contain other packages (ie: other packages can not and may not be sub directories of other packages).