Date: Thu, 2 Oct 2025 10:17:30 +0100 From: Lexi Winter <ivy@freebsd.org> To: Yasuhiro Kimura <yasu@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: Questions about pkgbase Message-ID: <aN5DKrWeSlT978zr@amaryllis.le-fay.org> In-Reply-To: <20251002.180121.980053125503545103.yasu@FreeBSD.org> References: <20251002.180121.980053125503545103.yasu@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Yasuhiro Kimura wrote in <20251002.180121.980053125503545103.yasu@FreeBSD.org>:
> 1. Consistency with update using source tree
>
> Let me assume I made clean install of 16.0-CURRENT system with pkgbase
> and updated it using source tree (make {build,install}{kernel,world}).
you shouldn't use installworld/installkernel to update a pkgbase system
from source. instead, use make buildworld buildkernel update-packages,
which will build a package repository you can use to update with pkg(8).
> After it has completed, base system itself shoule be updated
> successfully. Then what about things about pkgbase (e.g. version of
> package, list of included files, etc.)? Are they properly updated or
> become inconsistent?
this would cause the package database to be inconsistent with the
installed system, which will certainly break things later.
>[...]
> a. Follow the step 1 to step 10 explained in /usr/src/Makefile
> b. Rebuild and reinstall all (non-pkgbase) packages.
> c. Do `make delete-old-libs`.
>
> On the other hand, it doesn't seems pkgbase keeps obsolete files while
> updating. IIUC `pkg upgrade` uninstall all files included in old
> version of package in question before installing files of new
> version. So obsolete files dissapear after update has finished. Then
> is there any way to prevent situation as above?
pkg(8) has a feature called BACKUP_LIBRARIES which moves deleted shared
libraries into a temporary package. this allows you to update ports,
then delete the temporary package, which has the same effect as
delete-old-libs.
there is an outstanding issue that means this doesn't work as well as it
should with pkgbase: https://github.com/freebsd/pkg/issues/2501.
re@ is aware of this and it should be fixed for 15.0-RELEASE.
>[...]
> On pkgbase system, however, files under /etc seems to belong to
> packages. So they are updated by `pkg upgrade`. Then how confliction
> is handled if it happnes?
pkg(8) will attempt a 3-way merge when installing a new configuration
file. if this is successful, no action is required. if it fails, the
existing file will be left unchanged and pkg will create a <name>.pkgnew
file, which you need to manually merge with the existing version of the
file.
this workflow is much worse than etcupdate or freebsd-update, and i'm
not convinced we should release with pkgbase as the recommended option
without a better solution, but we'll see.
note that this is *not* the same way ports handles new configuration
files; this feature is not used by ports at all, it is specific to the
base system.
> 4. Build pkgbase repository by myself
>
> I'd like to build pkgbase repository and configure system to use
> it. Is it documented somewhere?
this is what 'make update-packages' does. it is briefly documented in
build(7), there is (as far as i know) no Handbook documentation yet.
>[...]
> Then is there any way to (re|un)install all installed non-pkgbase
> packages?
this should be possible using 'pkg delete -r FreeBSD-ports', but
currently this option does not exist. there is a feature request
to add it: https://github.com/freebsd/pkg/issues/2494.
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQSyjTg96lp3RifySyn1nT63mIK/YAUCaN5DJgAKCRD1nT63mIK/
YBu9AQCaW2S/2Bhvh0P7HbKh21iyBfoPARCUMl1ExIUM2QYDRgD8Dyy4IRmgNJfP
+t8fTsm8eLJ0986EZUumBesu0qEejQs=
=GWJE
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?aN5DKrWeSlT978zr>
