Beryl::CLI::OsUpgrade
beryl os-upgrade <host> [--to X.Y] [--apply] [--reboot] — met à jour le
SYSTÈME FreeBSD (≠ upgrade = paquets seuls). CONSCIENT DU TYPE D'INSTALL :
- PKGBASE (base en paquets, dépôt
FreeBSD-base) — le cas beryl par défaut : montée de release = REPOINTER le dépôtbase_release_<minor>puispkg upgrade -r FreeBSD-base+ reboot. Pas de fusion /etc interactive. Déjà sur la dernière release : CORRECTIFS de celle-ci (même branche, sans repoint), sans avoir à préciser--to. - DISTRIBUTION_SETS (base en tarballs) :
freebsd-update— multi-étapes + fusions interactives → beryl affiche le RUNBOOK (pas d'auto-apply).
DRY-RUN par défaut. --apply exécute (repoint + pkg upgrade), s'arrête AVANT
le reboot (sûr). --reboot ajoute le reboot + attente du retour SSH (pour
enchaîner une flotte). Un host protected: true refuse --apply.
Constants
Paquets du système de base devenus inutiles : FreeBSD-* installés comme
dépendance des ensembles (%a) que plus rien ne requiert (%#r = 0) —
un ensemble ne les utilise plus (montée de release, paquet retiré
d'un ensemble). Le ménage des paquets logiciels (recette pkg-autoremove)
ne touche JAMAIS au base : c'est ici. Ni le noyau ni un ensemble, même
orphelins (installés explicitement par le bootstrap, double sécurité).
Franchir un __FreeBSD_version plus récent (les paquets base de la release
cible sont plus récents que le noyau courant) : mécanisme standard pkgbase.
Sans lui : pkg: repository … contains packages for wrong OS version.
Contrôle setuid du rapport de sécurité quotidien (100.chksetuid) : il
compare la liste des programmes setuid à /var/log/setuid.today et
signale chaque écart par courriel. Une mise à jour du base remplace ces
programmes (nouvel inode, nouvelle date) → le lendemain, un écart sans
action à faire. On lance donc le script de FreeBSD lui-même juste après
la mise à jour : il écrit l'écart ici et remet sa référence à jour.
PERIODIC sélectionne la période, comme periodic security le fait.
Class methods
Nom de branche pkgbase pour une release X.Y (« 15.1 » → « base_release_1 »).
Noms à retirer dans la sortie de BASE_LEAVES_QUERY. Pur.
Ligne d'action, SEULEMENT s'il y a quelque chose à faire (montée, correctifs, redémarrage, injoignable) : décompte non nul + commandes. nil quand tout est à jour. Pur.
Tableau aligné, une ligne par hôte. Un hôte sans version (pas installé) n'a que sa note : « fqdn : pas encore installé ». Pur.
Deux lignes (-k puis -r) → {installed, running} si elles diffèrent. Pure.
Parse « 15.0-RELEASE-p10 » → {major, minor, patch?}. nil si illisible.
Noyau INSTALLÉ (freebsd-version -k) différent du noyau EN SERVICE (-r) →
{installed, running}, sinon nil : correctifs posés, redémarrage en attente.
Vrai si la sortie d'un pkg upgrade -n annonce des paquets à modifier
(« Number of packages to be upgraded: 43 ») ; faux si « … is up to date ».