Update path with poudriere packages

Unfortunately, I have a server with an older FreeBSD version (version 13.0) with self-built packages created via poudriere. I haven't taken care of it for a while.

If I want to update from version 13 to 14, do I have to rebuild the packages for each step (13.1 -> 13.2 -> 13.3 -> 14.0), or can I perhaps redeploy the packages for 14.0 and skip the pkg-upgrade step during the updates?

Thanks in advance.
 
Backup your configuration files (/usr/local/etc, /etc) and data (/home).
Create a list of your explicit installed packages pkg query -e %a=0 %n | sort > explicit_ports .
You could do a fresh install from scratch, if you wish now, directly jumping to the latest release.
Restore your configuration and data from your backup.
Then use the created explicit_ports file to install all the packages you were using before.
cat explicit_ports | xargs pkg install -y.

Note: Only when upgrading to a major release version a re-installation of ports/packages is necessary.
 
If I want to update from version 13 to 14
Update the host itself first. You can go from any 13.x version directly to 14.3-RELEASE, there's no need to do any of the intermediate minor version upgrades. Just make sure the 13.x has the latest patch level before doing the major version upgrade. Update/reinstall your ports/packages between the second and third freebsd-update install (it will tell you to this), the third run will remove all the old libraries from 13.x (causing breakage if you didn't update the installed 13.x ports/packages).
 
For poudriere you should just create a new jail with the new version. Then start your poudriere-bulk(8) on the new version jail. I don't even do minor version upgrades on my poudriere jails, only patch updates.

Code:
root@chibacity:/usr/local/etc/poudriere.d # poudriere jail -l
JAILNAME    VERSION             OSVERSION ARCH  METHOD                                     TIMESTAMP           PATH
142-release 14.2-RELEASE-p5     1402000   amd64 http                                       2025-09-21 18:55:24 /usr/local/poudriere/jails/142-release
143-release 14.3-RELEASE-p4     1403000   amd64 http                                       2025-10-05 14:07:29 /usr/local/poudriere/jails/143-release
14-stable   14.3-STABLE         1403504   amd64 url=file:///storage/release/14-stable/ftp/ 2025-08-10 17:56:16 /usr/local/poudriere/jails/14-stable
15-stable   15.0-ALPHA5 1500066           amd64 src=/usr/src                               2025-10-11 01:21:13 /usr/local/poudriere/jails/15-stable
You have new mail.

That 14-stable jail will probably be removed soon, I have no more 14-STABLE systems (they've all been upgraded to 15-STABLE). The 142-release jail is also unused now and will be removed.

Don't be afraid to remove and recreate the poudriere jails, your previously built repositories will remain, you'll need to clean those yourself. I need to do some culling to free up some space:
Code:
root@chibacity:/usr/local/etc/poudriere.d # ll /usr/local/poudriere/data/packages/
total 123
drwxr-xr-x  3 root wheel 17 Sep  8 18:41 14-stable-desktop/
drwxr-xr-x  3 root wheel 17 Sep 22 08:23 142-release-desktop/
drwxr-xr-x  4 root wheel 18 Aug 25 09:31 142-release-server/
drwxr-xr-x  3 root wheel 15 Oct 20 01:09 143-release-desktop/
drwxr-xr-x  3 root wheel 15 Oct 20 00:56 143-release-server/
drwxr-xr-x  3 root wheel 15 Oct 20 01:41 15-stable-desktop/
drwxr-xr-x  3 root wheel 15 Oct 20 00:43 15-stable-server/
lrwxr-xr-x  1 root wheel 18 Jun 28 10:45 FreeBSD:14:amd64@ -> 142-release-server
lrwxr-xr-x  1 root wheel 16 Sep 14 13:36 FreeBSD:15:amd64@ -> 15-stable-server
drwxr-xr-x  2 root wheel  3 Oct 11 11:35 desktop/
drwxr-xr-x  2 root wheel  4 Sep 21 00:43 server/
 
I don't even do minor version upgrades on my poudriere jails, only patch updates.
No need to be too afraid for minor version upgrades.

I'm creating poudriere jails once per stable branch and regularly upgrade it on stable branch (recently switched from stable/14 to stable/15 when the branch was created), as even upgrades from 14.3-Release to upcoming 14.3-Release-p1 should force you full rebuilds if poudriere jail is upgraded to it. (It shoud cause __FreeBSD_version from 1403000 to 1403001, thus, OSVERSION for ports should be changed just the same and cause poudriere to full rebuilds.)

Example how I configured poudriere is here. This is what I did on creating poudriere jail on stable/14 and how I've managed it.
 
It's only one file, just rm /usr/include/c++/v1/__string before doing the upgrade.
 
It's only one file, just rm /usr/include/c++/v1/__string before doing the upgrade.
Just did a test, this isn't the only file that gets in the way. You also need to rm /usr/include/c++/v1/__tuple
And it seems the directory has to exist too, I was expecting it to create that directory if it didn't exist.

Code:
install: ///usr/include/c++/v1/__string: No such file or directory

So to be complete,
Code:
rm /usr/include/c++/v1/__string
rm /usr/include/c++/v1/__tuple
mkdir /usr/include/c++/v1/__string /usr/include/c++/v1/__tuple
Then you can simply skip the minor upgrade to 13.2 for this fix and go directly to 14.3-RELEASE from 13.0.
 
Back
Top