Re: pkg installation into non-default location

From: Andriy Gapon <avg_at_FreeBSD.org>
Date: Wed, 11 Aug 2021 09:59:52 UTC
On 2021-08-10 16:57, Emmanuel Vadot wrote:
> On Tue, 10 Aug 2021 15:47:03 +0300
> Andriy Gapon <avg@FreeBSD.org> wrote:
> 
>>
>> I noticed at least three way of installing a package under "alternative
>> root".  One of them is very straightforward, but for two other I am not
>> sure about details.  I guess, I can get them all from the source code,
>> but maybe someone would be kind to give me a summary.
>>
>> So, the obvious way is to use pkg with -c or -j option.  In this case
>> pkg just chroot-s or jexec-s before doing anything.  So, conceptually
>> everything is like the normal operation, but in the chroot or the jail.
>>
>> Then, there is -r option:
>>      -r ?root directory?, --rootdir ?root directory?
>>              pkg will install all packages within the specified ?root
>>              directory?.
>> It's not entirely clear what that means and when that can be useful.
>> In other words, why this option exists if we already have -c and -j.
> 
>  Having -r is useful for different things :
> 
>  - We use that for the tests so every test installation/delete is done
> under a specified dir.
>  - It's also useful when creating image for a different arch than the
> native one.
>  - It's also useful for pkgbase to bootstrap a system/jail/whatever as
> at first you will not have something to chroot/jail on.

Thank you for the information!
Still curious about some technical details.

I assume that -r simply unpacks packages files under an alternative root
(similar to DESTDIR).
So, does it still use the package database under the main root?

Is a package installed with -r marked as such?
Or is it registered as if there was no -r ?

What about installation scripts that the package may have?
Is that the script's job to ensure that it works correctly with -r or
does pkg arrange an alternative root somehow?

Thank you.

-- 
Andriy Gapon