/root on a separate dataset breaks FreeBSD-base installation
Rodney W. Grimes
freebsd-rwg at gndrsh.dnsmgr.net
Sun Apr 12 00:35:38 UTC 2020
> On 11/04/2020 17:03, Rodney W. Grimes wrote:
> >> On Sat, 11 Apr 2020 09:42:49 -0700 (PDT)
> >> "Rodney W. Grimes" <freebsd-rwg at gndrsh.dnsmgr.net> wrote:
> >>
> >>> [ Charset UTF-8 unsupported, converting... ]
> >>>> I am following https://wiki.freebsd.org/PkgBase
> >>>>
> >>>> This:
> >>>>
> >>>> pkg install -g 'FreeBSD-*'
> >>>>
> >>>> fails with this:
> >>>>
> >>>> [2/800] Extracting FreeBSD-runtime-12.1_3:?? 4%
> >>>> pkg: Fail to create hardlink:
> >>>> /root/.pkgtemp..cshrc.v5sxGCRu3GlP:Cross-device link
> >>> ^^^^^^
> >>>
> >>>
> >>>> [2/800] Extracting FreeBSD-runtime-12.1_3: 100%
> >>>>
> >>>> /root is in a different ZFS dataset. It works fine if it's not. Why pkg
> >>>> is using /root/.pkgtemp instead of /tmp or /var/tmp? It doesn't matter
> >>>> from where I run the command, looks like the path is hardcoded.
> >>> The failure is caused by the fact that /.cshrc and /root/.cshrc
> >>> are hardlinked to each other. A hardlink can not cross a
> >>> ZFS dataset or a ufs mount point.
> >> Ah right.
> >>
> >>>> Can I workaround with some option to pkg?
> >>> I doubt that.
> >> Someone (tm) should add support for this in pkg.
> > An option to convert hardlinks to symlinks or duplicate files could be done.
> >
> > For the person with this problem there are ways to work around it
> > by not making /root a seperate dataset, create /toor data set,
> > set toor login home to /toor, use that for what ever it is that
> > made you feel you needed to have /root as its own data set.
>
>
> Did you mean - set root login home to /toor? Or create a new toor user?
Look in your /etc/passwd file, the toor user already exists,
its normal use is for /bin/sh login to root, but it can
still be used for your issue here.
>
> I think the same will be with .profile which also looks like it's
> hardlinked.
Yes, but the pkg system is ONLY going to mess with /root,
if you use /toor for your purpose it wont mess with pkg.
However, you well have to update things from /root to /toor
manually, but that rate of change is very very small.
>
> Wouldn't pkg already have to handle this for normal port packages
> somehow? Or they never create hardlinks? Is it worth raising bug/feature
> in bugzilla for pkg?
The norm is there are very few cross directory links and
this is very rarely an issue unless someone modifies the
system in a way outside of the norm. Having /root as a
seperate dataset is outside the norm. Note this also
places /root outside of the boot environment directory
which may bring other issues in the future.
Ports should all install stuff inder the /usr/local hierarchy
and that is usually self contained, so hard links are not
an issue there.
Further note, if you have made /usr/local its own dataset
your defanitly going to have issues with boot environments
if you try to run more than 1 version of FreeBSD as /usr/local
is pretty version dependent.
/var is a whole nother crap mess with boot environments,
pkg and multiple versions cause pkg stores its caches
and databases in /var and /var is not part of the BE.
> --GrzegorzJ
--
Rod Grimes rgrimes at freebsd.org
More information about the freebsd-pkgbase
mailing list