Mise à niveau de FreeBSD pkgbase de 14.5 à 15.0

FreeBSD abandonnera dans un avenir proche son outil « freebsd-update » pour la mise à jour des composants de base du OS. Le gestionnaire de paquets « pkg » pourra mettre à jour la base et non seulement les paquets tierces.

Actuellement disponible en mode expérimental lors de l’installation de FreeBSD 15, le mode « pkgbase » permet d’installer l’OS à partir de paquets permettant par la suite d’appliquer les mises à jour via la commande « pkg upgrade ».

Toutefois l’installation de FreeBSD 14 ne propose pas la possibilité d’installer en mode « pkgbase » mais il est possible de convertir une installation de FreeBSD 14 au standard futur en utilisant un script LUA supporté par la fondation FreeBSD disponible à l’adresse https://github.com/FreeBSDFoundation/pkgbasify

Malheureusement la documentation officielle ne décrit pas la procédure pour faire la mise à niveau de FreeBSD 14 pkgbase à la version 15 ou 15.1. Après avoir lu plusieurs trucs et conseils, un peu partout sur la toile, j’ai jugé bon de faire une recette qui semble bien fonctionner. Alors on se lance …

  1. Vérifier d’abord si l’installation est bel et bien en mode pkgbase.
pkg which /usr/bin/uname

Si vous obtenez un message comme « /usr/bin/uname was installed by package FreeBSD-runtime-XX.X » vous êtes bon. Sinon rien ne sert de poursuivre, votre système n’est pas en mode pkgbase.

  1. Appliquer les mises à niveau de la version 14
pkg upgrade -r FreeBSD-base
  1. Un peu de précaution, on fait un snapshot de l’environnement actuelle avant de poursuivre. (Possible si votre installation utilise le système de fichiers ZFS)
bectl create -r pre-15
  1. Les clés de FreeBSD 15 sont requises afin que pkg puisse installer les paquets de la version 15. Ces clés sont disponibles sur le code de source de FreeBSD sur github à l’adresse https://github.com/freebsd/freebsd-src/tree/main/share/keys
mkdir -p /usr/share/keys/pkgbase-15/trusted

cd /usr/share/keys/pkgbase-15/trusted

fetch https://github.com/freebsd/freebsd-src/raw/refs/heads/main/share/keys/pkgbase-15/trusted/awskms-15

fetch https://github.com/freebsd/freebsd-src/raw/refs/heads/main/share/keys/pkgbase-15/trusted/backup-signing-15
  1. Pour que pkg utilise les nouvelles clés, il faut modifier la configuration du repo FreeBSD-base dans /usr/local/etc/pkg/repos/
ee /usr/local/etc/pkg/repos/FreeBSD-base.conf

Modifier les lignes url et fingerprints pour lire:
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_0"
  fingerprints: "/usr/share/keys/pkgbase-15"
  1. ZFS nous permet de faire l’installation dans un snapshot du système de fichiers, on va en profiter
bectl create 15.0-RELEASE

mkdir /mnt/upgrade

bectl mount 15.0-RELEASE /mnt/upgrade
  1. On est prêt pour la mise à niveau à FreeBSD 15 via l’utilitaire pkg. Il est possible que les deux commandes affichent un message en lien avec un « package mismatch » et demandent si vous souhaitez continuer, À chaque fois, dire oui!
ABI=FreeBSD:15:amd64 pkg-static -c /mnt/upgrade update -r FreeBSD-base

ABI=FreeBSD:15:amd64 pkg-static -c /mnt/upgrade upgrade -r FreeBSD-base
  1. Une fois l’installation des paquets complétés, on valide si notre installation a fonctionné
chroot /mnt/upgrade

freebsd-version -ku

Vous devrier lire:
  15.0-RELEASE-pX
  14.5-RELEASE-pX
  15.0-RELEASE-pX

On quitte le chroot
  exit
  1. On active notre nouvelle environnement de manière temporaire pour le prochain redémarrage et on redémarre
bectl activate -t 15.0-RELEASE

shutdown -r now

Une fois redémarré, exécuter cette commande pour confirmer 
que vous roulez sous FreeBSD 15.0
  uname -r

Vérifier que tout fonctionne correctement !
  1. Si tout semble fonctionner correctement, on active l’environnement de manière permanente et on redémarre
bectl activate 15.0-RELEASE

shutdown -r now
  1. Étant donné qu’il s’agit d’une mise à niveau majeur c’est-à-dire de 14 à 15, il faut faire la commande:
pkg bootstrap -f
  1. Dernière étape …

La conversion en FreeBSD 15 a configuré correctement les repos nécessaires dans le fichier /etc/pkg/FreeBSD.conf. Mais le repo FreeBSD-base est désactivé par défaut. Comme il s’agit d’une installation en mode pkgbase, il faut l’activer. Nous allons faire la modification telle qu’une installation officielle de FreeBSD 15.

cd /usr/local/etc/pkg/repos

mv FreeBSD-base.conf FreeBSD.conf

ee FreeBSD.conf

Conserver une seul ligne :
  FreeBSD-base: { enabled: yes }

Pour vérifier que tous les repos sont correctement configurés et actifs:

  pkg -vv

Bravo!

Votre système tourne sous FreeBSD 15 en mode pkgbase.

Puisqu’il s’agit d’une mise à niveau majeur i.e de 14 à 15, n’oubliez pas de mettre à jour les applications tierces. Si vous compilez vos propes binaires à partir de l’arbre des ports, le moment est venu de lancer une compilation complète et de réinstaller l’ensemble des paquets.

Voilà! Vous êtes prêt pour la mise à jour mineur à FreeBSD 15.1