Re: Installworld fails when /usr/bin and /usr/sbin are different FS / how to use symlinks in installworld?

From: Bryan Drewery <bdrewery_at_FreeBSD.org>
Date: Fri, 2 Sep 2016 15:51:56 -0700
On 9/2/2016 3:25 PM, Alexander Leidinger wrote:
> Hi,
> 
> background info:
>  - iocage (jail management) uses official release tarballs
>  - I want to install a jail from a specific src I compiled withour
> creating release tarballs (-> faster time to market), so I want to
> convince iocage to use what I provide via installworld
>  - jails of type "basejail" (jails read-only-share the base system) in
> iocage are handled via seperate zfs datasets for each directory
>  - as such /usr/bin and /usr/sbin are different datasets
> 
> I got this error in installworld:
> ---snip---
> ===> usr.sbin/chkgrp (install)
> install  -s -o root -g wheel -m 555   chkgrp
> /iocage/base/12.0-r305149M/root/usr/sbin/chkgrp
> install  -o root -g wheel -m 444  chkgrp.debug
> /iocage/base/12.0-r305149M/root/usr/lib/debug/usr/sbin/chkgrp.debug
> install  -o root -g wheel -m 444 chkgrp.8.gz 
> /iocage/base/12.0-r305149M/root/usr/share/man/man8/
> ===> usr.sbin/chown (install)
> install  -s -o root -g wheel -m 555   chown
> /iocage/base/12.0-r305149M/root/usr/sbin/chown
> install  -o root -g wheel -m 444  chown.debug
> /iocage/base/12.0-r305149M/root/usr/lib/debug/usr/sbin/chown.debug
> install  -o root -g wheel -m 444 chgrp.1.gz 
> /iocage/base/12.0-r305149M/root/usr/share/man/man1/
> install  -o root -g wheel -m 444 chown.8.gz 
> /iocage/base/12.0-r305149M/root/usr/share/man/man8/
> ===> usr.sbin/chown/tests (install)
> install  -o root  -g wheel -m 555  chown-f_test 
> /iocage/base/12.0-r305149M/root/usr/tests/usr.sbin/chown/chown-f_test
> install  -o root  -g wheel -m 444  Kyuafile 
> /iocage/base/12.0-r305149M/root/usr/tests/usr.sbin/chown/Kyuafile
> /usr/bin/chgrp -> /usr/sbin/chown
> install: link /iocage/base/12.0-r305149M/root/usr/sbin/chown ->
> /iocage/base/12.0-r305149M/root/usr/bin/chgrp: Cross-device link
> *** Error code 71
> 
> Stop.
> make[5]: stopped in /usr/src/usr.sbin/chown
> *** Error code 1
> 
> Stop.
> ---snip---
> 
> The error message is obvious, it tries to create a hardlink which is off
> course not possible when src and dest of the link are on different FS.
> 
> My goal of an easy procedure (installworld into target datasets) doesn't
> work like this off course. Do we have an easy way of telling
> installworld to create symlinks instead of hardlinks, or alternatively a
> way to tell to copy instead of doing a hardlink if the install hits the
> cross-device case?

Maybe falling back to symlink could be done.

Couldn't you just make a usr-bin dataset and have usr-bin/bin and
usr-bin/sbin and symlink or nullfs-mount them in though?  I too go crazy
with datasets, but this seems a bit too much.


-- 
Regards,
Bryan Drewery


Received on Fri Sep 02 2016 - 20:52:02 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:07 UTC