Fedora 17’s unified filesystem (/usr-move)

James Antill james at fedoraproject.org
Mon Jan 30 22:37:16 UTC 2012


On Mon, 2012-01-30 at 15:47 -0500, Bill Nottingham wrote:
> Martin Langhoff (martin.langhoff at gmail.com) said: 
> > On Fri, Jan 27, 2012 at 8:10 AM, Harald Hoyer <harald at redhat.com> wrote:
> > > Fedora 17 will locate the entire base operating system in /usr. The directories
> > > /bin, /sbin, /lib, /lib64 will only be symlinks:
> > >  /bin → /usr/bin
> > 
> > Interesting!
> > 
> > Do we need to teach rpm / yum about the equivalence, when resolving
> > dependencies?
> > 
> > For a trivial example -- if package A depends on /bin/foo, will yum &
> > rpm be satisfied with /usr/bin/foo?
> 
> Assuming /bin -> /usr/bin link is packaged, yes.

 No, not in any meaningful way, although I assume all of the problems
have been worked out in the testing done already.

 Yum just uses text matching. Yum doesn't even know if something is a
symlink in the repodata, and I'd assume it would be a massive depsolving
expense to resolve those even if we had that data.

 rpm _kind of_ knows about it, Eg.:

% rpm -qf /etc/init.d/httpd
httpd-0:2.2.21-1.fc15.x86_64
% rpm -qf /etc/rc.d/init.d/httpd
httpd-0:2.2.21-1.fc15.x86_64
% repoquery -qf /etc/init.d/httpd 
% repoquery -qf /etc/rc.d/init.d/httpd
httpd-0:2.2.17-10.fc15.1.x86_64
httpd-0:2.2.21-1.fc15.x86_64

...but I assume rpm uses realpath() to "cheat" because if you create two
packages where one provides "/etc/rc.d/init.d/sym2" and the other
requires "/etc/init.d/sym2" ... rpm _doesn't_ let you install them, like
yum.


 But you can add:

Provides: /bin/foo

...to your packages, and you can pretend they are installed into /bin
(keeping compat. with everything) ... at which point rpm/yum won't care
that the /bin => /usr/bin symlink has actually moved where they are
installed from build time (but note that Requires: /usr/bin/foo won't
work, in the later case).



More information about the devel mailing list