+Always take a look at the link:https://www.freebsd.org/releases/15.0R/relnotes/#upgrade-rc[release notes], because some parts still might change. For example between FreeBSD 14 and 15 the signing keys changed.
+
[[pkgbase-major-zfs]]
===== major upgrade with zfs
Create a boot environment using man:bectl[8] and name it according to the version upgrading to
There will be a prompt asking about ignoring the version mismatch looking like this:
@@ -1325,7 +1350,14 @@
Check and confirm that.
-To check if that was successful, chroot into the mountpoint of the boot environment and run `freebsd-version -ku`.
+An experimental major upgrade from FreeBSD 14 to 15 should be followed by installation of package sets (see man:freebsd-base[7]), like `FreeBSD-set-minimal` at least, which is a meta package which includes some base packages required for running a multi-user FreeBSD system.
+To check if the upgrade was successful, chroot into the mountpoint of the boot environment and run `freebsd-version -ku`. The output should show the new Version.
There will be a prompt to ask about ignoring the version mismatch looking like this:
@@ -1394,9 +1426,9 @@
Consider getting help from link:https://www.freebsd.org/support/[FreeBSD Support] when experiencing issues.
[[build-pkgbase-packages-locally]]
-=== Manually building pkgbase and publishing it to the local network
+=== Manually building base packages and publishing it to the local network
-When building custom pkgbase packages clone the FreeBSD source tree:
+When building custom base packages clone the FreeBSD source tree:
[source,shell]
....
@@ -1408,7 +1440,7 @@
[source,shell]
....
-# git checkout releng/14.3
+# git checkout releng/15.0
....
Start the building process, depending on the resources available this could take some while.
@@ -1418,19 +1450,21 @@
[source,shell]
....
-# make -j8 buildworld && make -j8 buildkernel && make -j8 packages
+# make -j8 buildkernel && make -j8 buildworld && make -j8 update-packages
....
+The update-packages make target is copying unchanged packages. This keeps the version number in the packages so only changed packages get upgraded on the hosts.
+
When building frequently, consider using package:devel/ccache[] to speed up subsequent builds from the cache.
-After building, the packages will get saved into `/usr/obj/usr/src/repo/FreeBSD:14:amd64/14.3p2` or something like that, depending on the version build.
+After building, the packages will get saved into `/usr/obj/usr/src/repo/FreeBSD:15:amd64/15.0p6` or something like that, depending on the version build.
-To publish these packages to the network set up a nginx service and use this location in the http server configuration:
+To publish these packages to the network set up a nginx service and use this location in the http server configuration (usually located in `/usr/local/etc/nginx/nginx.conf`):
-and use it as written above (but use -r upgrade instead of FreeBSD-base).
+and use it as written above (but use `-r upgrade` instead of `-r FreeBSD-base`).
+
+Optionally create a configuration to use the local repository on the host where the packages are built, if publishing to the network is not needed or to just upgrade the local host.