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

answered 2014-02-04 03:06:06 -0500

joq gravatar image

I have no official answer. This is just my personal understanding of the situation regarding /etc.

Current ROS behavior using /opt/ros/hydro/etc/ros seems to violate the Linux Filesystem Hierarchy Standard, because setting $PREFIX=/usr would place things under /usr/etc, which is specifically disallowed. Since people seldom build ROS with that prefix, the problem is more potential than acute.

We still have not resolved that problem. It requires some REP updates, and came up too late in the Hydro release cycle. It should probably be discussed now and fixed in Indigo.

There are relatively few ROS packages installing files using ${CATKIN_PACKAGE_ETC_DESTINATION}. They need to be looked at on a case-by-case basis, but my feeling is that most of them should use ${CATKIN_PACKAGE_SHARE_DESTINATION} instead. That probably helps solve most of the issues you mentioned with access to both generated and source files.

There is a separate issue with packages for managing entire robots, like some of yours. For them, there are cases where things like upstart files need to be installed under the system /etc directory. That was never handled by ROS_ETC_DIR, anyway. We need to specify how and when such operations are appropriate.

I have no official answer. This is just my personal understanding of the situation regarding /etc.

Current ROS behavior using /opt/ros/hydro/etc/ros seems to violate the Linux Filesystem Hierarchy Standard, because setting $PREFIX=/usr would place things under /usr/etc, which is specifically disallowed. Since people seldom build ROS with that prefix, the problem is more potential than acute.

We still have not resolved that problem. It requires some REP updates, and came up too late in the Hydro release cycle. It should probably be discussed now and fixed in Indigo.

There are relatively few ROS packages installing files using ${CATKIN_PACKAGE_ETC_DESTINATION}. They need to be looked at on a case-by-case basis, but my feeling is that most of them should use ${CATKIN_PACKAGE_SHARE_DESTINATION} instead. That probably helps solve most of the issues you mentioned with access to both generated and source files.

There is a separate issue with packages for managing entire robots, like some of yours. For them, there are cases where things like upstart files need to be installed under the system /etc directory. That was never handled by ROS_ETC_DIR, anyway. We need to specify how and when such operations are appropriate.

EDIT: Bloom support for conffiles is a bigger problem, best discussed in your issue #226. The problem remains that neither ${CATKIN_PACKAGE_ETC_DESTINATION} nor ${CATKIN_PACKAGE_SHARE_DESTINATION} are appropriate for admin-customizable configuration data.

As far as I know, no standard forbids putting default config data in ${CATKIN_PACKAGE_SHARE_DESTINATION}/etc, but as you know it needs special handling to avoid getting overwritten by apt-get.

Common Linux practice would probably install them in the global /etc/package_name directory, then provide a ~/.package_name for per-user settings.