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

From: Alexander Leidinger <Alexander_at_leidinger.net>
Date: Sat, 03 Sep 2016 00:25:35 +0200
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?

Bye,
Alexander.

-- 
http://www.Leidinger.net Alexander_at_Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    netchild_at_FreeBSD.org  : PGP 0x8F31830F9F2772BF

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

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