[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#759492: File conflicts between /bin and /usr/bin



Package: debian-policy
Severity: wishlist

I could have sworn we already had a bug open about this, but I couldn't
find it.  If someone else does find it, please merge.

Some other distributions have merged /bin, /sbin, and /lib into /usr
via the symlinks:

    /bin -> /usr/bin
    /sbin -> /usr/sbin
    /lib -> /usr/lib
    /lib64 -> /usr/lib64

While Debian has not decided to do the same thing at this time, it's
desirable, and not particularly difficult, to support this configuration
if the local administrator wants to adopt it.  However, this requires
avoiding file conflicts between those directory pairs.

It's worthwhile to make this change even apart from this possible merge
since having two programs with the same name at different points in the
PATH is confusing.  Note that this bug does not deal with the separate
problem that Policy is not clear abot applying the rule against
conflicting binaries to binaries elsewere on the PATH (conflicts between
/usr/games/foo and /sbin/foo, for example).  I believe there is a
separate bug open about that, and we should also resolve that issue.

I wanted to open this discussion, but it's not clear whether we're ready
yet to actually merge this patch.  On my local system, I have the
following conflicts, all of which are symlinks and therefore don't pose
a functionality problem:

lrwxrwxrwx  1 root root          10 May 20  2013 chacl -> /bin/chacl*
lrwxrwxrwx  1 root root          13 Feb 17  2013 dumpkeys -> /bin/dumpkeys*
lrwxrwxrwx  1 root root          12 May 20  2013 getfacl -> /bin/getfacl*
lrwxrwxrwx  1 root root           9 Jun  5  2013 less -> /bin/less*
lrwxrwxrwx  1 root root          13 Jun  5  2013 lessecho -> /bin/lessecho*
lrwxrwxrwx  1 root root          13 Jun  5  2013 lessfile -> /bin/lesspipe*
lrwxrwxrwx  1 root root          12 Jun  5  2013 lesskey -> /bin/lesskey*
lrwxrwxrwx  1 root root          13 Jun  5  2013 lesspipe -> /bin/lesspipe*
lrwxrwxrwx  1 root root          13 Feb 17  2013 loadkeys -> /bin/loadkeys*
lrwxrwxrwx  1 root root          12 May 20  2013 setfacl -> /bin/setfacl*
lrwxrwxrwx  1 root root          10 Apr 12 16:34 touch -> /bin/touch*
lrwxrwxrwx  1 root root          10 Jul 27  2013 which -> /bin/which*

These symlinks would have to be removed to follow this new Policy rule,
which means that one of the two paths by which those programs can be
addressed would go away.  Removing, at least, /usr/bin/which would break
various packages:

    http://codesearch.debian.net/search?q=%2Fusr%2Fbin%2Fwhich

We therefore may have to do something more complex or slower than this.

Anyway, for discussion purposes, here's a patch.

diff --git a/policy.sgml b/policy.sgml
index 6eac491..b00995b 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -8473,6 +8473,21 @@ fi
 	  renamed.  If a consensus cannot be reached, <em>both</em>
 	  programs must be renamed.
 	</p>
+
+	<p>
+	  Packages should not install a file in <file>/usr/bin</file> with
+	  the same name as a file in <file>/bin</file>, a file
+	  in <file>/usr/sbin</file> with the same name as a file
+	  in <file>/sbin</file>, or a file in <file>/usr/lib</file> with
+	  the same name as a file in <file>/lib</file>.<footnote>
+	    This rule permits <file>/bin</file> to be a symlink
+	    to <file>/usr/bin</file> and similarly for the other top-level
+	    directories.  This is not Debian's current directory layout,
+	    but it is desirable to support if the local administrator
+	    wants to use it.
+	  </footnote>
+	</p>
+
 	<p>
           Binary executables must not be statically linked with the GNU C
           library, since this prevents the binary from benefiting from

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (990, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.14-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash


Reply to: