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

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



On 27/08/14 17:59, Russ Allbery wrote:
> 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

Other merges worth considering if you're in a "kill all the directories"
mood:

bin + sbin -> bin

bin + games -> bin (but at the moment Lintian actively discourages
putting games in /usr/bin)

> 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.

If I remember correctly, the hurd-i386 port briefly tried to do this
(except possibly the other way round, putting everything in /bin), and
gave up on that idea, because file conflicts between /bin and /usr/bin
are common, and it wasn't "the battle they wanted to be fighting".

> I wanted to open this discussion, but it's not clear whether we're ready
> yet to actually merge this patch.

On the contrary, I think it's clear that we're not ready.

> 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*

(etc.)

Some executables need to exist in both /bin and /usr/bin for backwards
compatibility. If a distribution or administrator *has* done the "/usr
merge", then /bin *is* /usr/bin and there's no problem; but if not, the
transitional state is broken.

I believe distributions that have done the /usr merge have typically
done so as a "flag day" sort of thing, with quite a lot of transitional
breakage. If they can't get it right with a forced transition, I don't
think we can get it right with a (more complex) optional transition.

The only way I can think of to make this work without a flag day that
switches from "separate /bin is mandatory" to "separate /bin is
forbidden" (which, as you noted, we actively do not want) would be to
have some magic in dpkg like this:

If a package contains two files $ub/foo and $b/foo with the same
basename, and $ub/foo would be a symlink to $b/foo if the package was
unpacked into an empty root, and $b is a symlink to $ub in the actual
root, then unpack the real file $b/foo to $ub/foo in the real root, and
ignore $ub/foo.

(Read "$ub" and "$b" as "/usr/bin" and "/bin" in this case.)

That seems ... subtle. Worth it? Stupid? Better ideas?

    S


Reply to: