Firstly, this is being written in late December, 2025. I suspect that the issue will go away soon. I'm putting this up in case it takes awhile to completely fix things.
As most FreeBSD users know by now, freebsd-update is being replaced by pkgbase, which will upgrade both packages and the base system. There's lots of places to get more information, but I'm sending anyone looking for more information to Vermaden's article about it. To use it to upgrade 14.x to 15 is not officially supported, but is surprisingly simple if you use pkgbasify, a lua script that will convert your 14.x system to be able to use pkgbase.
Judging from FreeBSD forums, a few things are giving people trouble. This is an effort to get the instructions in one place, though as mentioned above, I think it will be fixed soon.
This article combines information from the handbook and a lot of information I got from FreeBSD forums. I got a lot of it from user petan's post on FreeBSD forums. Hopefully, the handbook will be updated soon.
The handbook has a section on using it to update to 15.0 here, but there are a couple of things that have to, at time of writing this article, be updated. So, going through the steps, if your system is on ZFS, you make a boot environment, mount it, and install into that. If it works, you can make it the default. I am giving the steps from user petan's post, with some additions.
There is an issue with keys, mentioned in 15.0's release notes. There is more explanation there, but the main thing is that you have to get the most current pkg keys.
If you use the handbook's example where for fingerprints it just gives /usr/share/pkg, it will have problems because, at time of writing, the keys are wrong. To get the right keys, I use the source code which is pretty easy to get. Do this, either with source code or whatever method you want to use before trying to upgrade. I use gitup to get source code. So, if you don't have gitup, you can install it, or use whatever method you prefer to checkout the source code. In this example, though, I'm using gitup. You can probably just download the keys here but I like to have the source code anyway.
Edit /usr/local/etc/gitup.conf. Look for the stanza beginning with "release". At time of writing, it will say 13.2. Change the "branch" line so that it reads 15.0. Now you can just get the source code with
gitup release |
Now as it says in the release notes run
cp -R /usr/src/share/keys/pkgbase-15 /usr/share/keys/pkgbase-15 |
All commands will have to be run as root or with root privilege, using doas or sudo. We're going to first edit /usr/local/etc/pkg/repos/FreeBSD-base.conf to get it ready to pull 15.0 release. We'll also change the fingerprints file to make sure we have a keys file that's up to date. We're going to pull in pkg bootstrap for FreeBSD-15, make a boot environment for it, mount the environment and use it to do our upgrade.
First let's get pkg-bootstrap for 15.0.
pkg add -f https://pkg.freebsd.org/FreeBSD:15:amd64/base_release_0/FreeBSD-pkg-bootstrap-15.0.pkg |
Now edit /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD-base: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_0",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkgbase-15",
enabled: yes
}
|
Now if usinsg zfs
bectl create 15.0-RELEASE mkdir /mnt/upgrade bectl mount 15.0-RELEASE /mnt/upgrade |
Now we update and upgrade.
env ABI=FreeBSD:15:amd64 pkg-static -c /mnt/upgrade update -r FreeBSD-base env ABI=FreeBSD:15:amd64 pkg-static -c /mnt/upgrade upgrade -r FreeBSD-base |
You may again be told there's a package mismatch and asked if you want to continue. Each time, choose yes.
Much of the rest is straight from the handbook. Confirm that the update was successful.
chroot /mnt/upgrade freebsd-version -ku exit |
Hopefully it will say FreeBSD-15.0-RELEASE. Temporarily activate the boot environnment for 15 and reboot.
bectl activate -t 15.0-RELEASE shutdown -r now |
If all seems to be working on the reboot, you can now make the 15.0 boot environment permanent.
bectl activate 15.0-RELEASE |
env ABI=FreeBSD:15:amd64 pkg-static upgrade -r FreeBSD-base |
You can then run freesbsd-version -ku to make sure it upgraded to 15.0 Now, when you reboot, it will automatically use the 15.0 system.
Thanks to the many people who posted on the forums, and especially to SirDice, a moderator there, who pointed me to the release notes that gave me the solution to the keys, user petan, who gave me the proper steps and user Erichans who helped me figure out what I was doing wrong.
Any mistakes are, of course, my own.