CFT: FreeBSD Package Base

Kris Moore kris at
Mon Apr 29 13:25:16 UTC 2019

On Mon, Apr 29, 2019 at 8:12 AM Emmanuel Vadot <manu at>

>  Hi Kris,
> On Sun, 28 Apr 2019 15:52:21 -0400
> <kris at> wrote:
> > FreeBSD Community,
> >
> >
> >
> > I'm pleased to announce a CFT for builds of FreeBSD 12-stable and
> 13-current
> > using "TrueOS-inspired" packaged base. These are stock FreeBSD images
> which
> > will allow users to perform all updating via the 'pkg' command directly.
> > Rather than trying to answer all questions in this announcement, we've
> > created a FAQ page with more details. Please refer to this page, and let
> us
> > know if you have additional questions that we can include on that page
> going
> > forward.
> >
>  While I appreciate the effort I have some doubt about your
> "re-implementation" of pkgbase. I don't see any improvement compared to
> what is in base currently, I even see downside of your implementation.
>  - How do you plan with the need of updating kernel first, reboot and
> updating the rest of the userland after ? (Needed for major and minor
> upgrade, 12.0 to 12.1 for example, and simple update in -STABLE and
> -HEAD branch). This is still a problem with the base pkgbase.

We've written our own tool "sysutils/sysup" in GO which handles this. It
performs updates using Boot-Environments to ensure that kernel/world are
updated at same time.

>  - This is even worse because you are using the same repository for
> base and pkg so if a user pkg update and both kernel and pkg(8) needs
> to be updated and pkg use a new syscall or capsicum thing it will be
> updated first and couldn't proceed with the rest of the update (this is
> a supposition, I haven't personally tested).

See above.

>  - It seems that multiple kernels isn't supported in your
> implementation, this is already supported in pkgbase but still need
> some love. This is an important point as it will allow user to choose
> easily the kernel that they want to use and will also allow us
> developper to push kernels with new features to help testing.

Incorrect, on the 13-CURRENT build if you install kernel-debug, you'll get
the Witness-enabled kernel installed alongside non-debugging one.

>  - Since you reduced the granularity on the userland bits it would mean
> that if we use your implementation for -p updates we would download the
> whole userland packages instead of just updating the package that was
> patched. For example with pkgbase, updating from 12.0 to 12.0p1 will
> only update the FreeBSD-runtime package. Yes this package is still big
> to download when you compare to what have changed but until pkg(8) have
> delta pkg supports (and if it will have support, I don't know if
> this is a wish or not) this is the best way to go.

Correct, this is by design. We used the in-tree pkg base for nearly a year,
and found that the granularity didn't really offer any savings from a
download or time perspective. Updating 100+ packages took far longer than a
single one, due to all the meta operations. Additionally in real-world
usage, we found that base packages tended to all get updated at the same
time, which took far longer via pkg, since it had to go and perform 100+
fetch operations just to download the base system bits.

>  - I see that you are sorting the plist for kernel and userland based
> on the line length [1], why is that ?

Whoops! I'll fix :)

>  I think that the only advantage that your solution offers is that if
> we remove a componant of base (rcmds for example in 12-CURRENT) those
> files would be removed as they are in the userland-base package while
> for pkgbase the FreeBSD-rcmd package will be deleted in the repo and
> will not be deleted in the user computer.

Correct, this is one of the things which prompted us to go this direction.
Being able to handle crazy mixed WITH/WITHOUT flags was important to us,
current pkg base did not handle that so gracefully. Additionally we've
added some additional features, such as being able to 'pkg install os/src'
to get system sources used in exact build, as well as being able to rebuild
your local world / kernel packages using ports "make config" framework is
super handy.

> >
> > Additionally, I will be hosting a Package Base working group at BSDCan
> 2019,
> > and welcome user and developer attendance to discuss this and other
> ongoing
> > package work:
> >
> >
> >
> >
> >
>  I will be present and looking forward to work with you on this.
>  Cheers,
>  P.S. :  FYI I'm working on pkgbase currently and I will have some
> patches to commit soon (bsdinstall support, memstick creation that
> install a pkgbase aware installaton etc ...).

Great! Looking forward to discussion then!

> [1] :
> --
> Emmanuel Vadot <manu at> <manu at>

More information about the freebsd-stable mailing list