installworld fails with /usr/bin and /usr/sbin on separate file systems

Stefan Esser se at freebsd.org
Fri Jul 29 13:22:46 UTC 2011


Installworld fails in "usr.sbin/chown" with a cross-device link error,
if /usr/bin and /usr/sbin are not on the same partition due to the
following line in Makefile:

LINKS= ${BINDIR}/chown /usr/bin/chgrp

In this case, ${BINDIR} is /usr/sbin and while both are subdirectories
of /usr (and thus typically within the /usr file system), there is no
reason /usr/bin and /usr/sbin could not be individual and independent
file systems.

(I ran into this problem when I played with ZFS file system tuning and
happened to create separate file systems for the above directories.)

I could not find any other place, where a hard link is used for files
in different subdirectories (typically ${BINDIR}/x -> ${BINDIR}/y or
${LIBDIR}/x -> ${LIBDIR}/y).

Installworld succeeds, if a symlink is used instead:

SYMLINKS= ${BINDIR}/chown /usr/bin/chgrp

Alternatively, the file could be copied, if the hard link can not be
created.

I'm not sure, whether this is an actual problem, since it does not
appear to have been reported before, but I think that "LINK=..."
should generally not be used between different directories.

Regards, STefan


More information about the freebsd-hackers mailing list