From f8c2f1b9618cda05c0b3b8e6201a4d34f579bfc0 Mon Sep 17 00:00:00 2001 From: Russ Allbery <rra@debian.org> Date: Sun, 1 Jan 2012 09:47:01 -0800 Subject: [PATCH] Significant rewording of /run, add a separate section Lift more of the properties of /run into normative text and state explicitly that the FHS requirements apply to /run and /run/lock. Add a new section explaining that packages cannot rely on structure in /run unless they've created it and saying explicitly that packages must not ship files in /run or /var/run or /var/lock. Reference that section from the init.d section. --- policy.sgml | 86 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/policy.sgml b/policy.sgml index f512315..fb9fd9f 100644 --- a/policy.sgml +++ b/policy.sgml @@ -6246,33 +6246,37 @@ install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/ symlinked there, is relaxed to a recommendation. </p> </item> + <item> + <p> + The additional directory <file>/run</file> in the root + file system is allowed. <file>/run</file> + replaces <file>/var/run</file>, and the + subdirectory <file>/run/lock</file> + replaces <file>/var/lock</file>, with + the <file>/var</file> directories replaced by symlinks + for backwards compatibility. <file>/run</file> + and <file>/run/lock</file> must follow all of the + requirements in the FHS for <file>/var/run</file> + and <file>/var/lock</file>, respectively, such as file + naming conventions, file format requirements, or the + requirement that files be cleared during the boot + process. Files and directories residing + in <file>/run</file> should be stored on a temporary + file system. + </p> + </item> <item> <p> The following directories in the root filesystem are - additionally allowed: <file>/run</file>, - <footnote> - The purpose of the /run hierarchy is storage of ephemeral - system state, that is, state information that should - not be preserved across a reboot. - Files and directories residing in <file>/run</file> - should be stored on a temporary filesystem. - The <file>/run</file> directory is a - replacement for <file>/var/run</file>; its - subdirectory <file>/run/lock</file> is a replacement for - <file>/var/lock</file>. - /run/ and /run/lock/ have been introduced - by most distributions and are on track to be - endorsed by the FHS. - Additionally, the subdirectory <file>/run/shm</file> - is a replacement for <file>/dev/shm</file>. - </footnote> - <file>/sys</file> and <file>/selinux</file>. + additionally allowed: <file>/sys</file> + and <file>/selinux</file>. <footnote> The <file>/sys</file> and <file>/selinux</file> directories are mount points where virtual filesystems are mounted which provide access to kernel information. </footnote> + </p> </item> <item> <p> @@ -6407,6 +6411,35 @@ rmdir /usr/local/share/emacs 2>/dev/null || true though the spool may still be physically located there. </p> </sect1> + + <sect1 id="fhs-run"> + <heading><file>/run</file> and <file>/run/lock</file></heading> + + <p> + The directory <file>/run</file> is cleared at boot, normally + by being a mount point for a temporary file system. Packages + therefore must not assume that any files or directories + under <file>/run</file> other than <file>/run/lock</file> + exist unless the package has arranged to create those files or + directories since the last reboot. Normally, this is done by + the package via an init script. See <ref id="writing-init"> + for more information. + </p> + + <p> + Packages must not include files or directories + under <file>/run</file>, or under the <file>/var/run</file> + or <file>/var/lock</file> paths that are replaced with + symlinks or bind mounts to <file>/run</file> for backwards + compatibility. + </p> + + <p> + Packages should use <file>/run</file> in preference + to <file>/var/run</file> and <file>/run/lock</file> in + preference to <file>/var/lock</file>. + </p> + </sect1> </sect> <sect> @@ -6781,17 +6814,14 @@ test -f <var>program-executed-later-in-script</var> || exit 0 </p> <p> - Files and directories under <file>/run</file>, including those - in directories <file>/var/run</file> and <file>/var/lock</file> - which are symlinks or bind mounts to subdirectories of - <file>/run</file>, are normally stored on a temporary + Files and directories under <file>/run</file>, including ones + referred to via the compatibility paths <file>/var/run</file> + and <file>/var/lock</file>, are normally stored on a temporary filesystem and are normally not persistent across a reboot. - Consequently, packages cannot assume that these files or - directories are present at system boot time. - Files and directories under <file>/run</file> must not be - included in packages; such files or directories - must be created dynamically, for example, in the - <file>init.d</file> script. + The <file>init.d</file> scripts must handle this correctly. + This will typically mean creating any required subdirectories + dynamically when the <file>init.d</file> script is run. + See <ref id="fhs-run"> for more information. </p> </sect1> -- 2.39.5