Accueil En bref Objectifs Services Contact Adhésion Abonnement Tarifs Brique Internet Vidéos L'Association Support Déploiement Changements

MAJ OpenBSD

Une nouvelle version d'OpenBSD, utilisé sur limbo et styx, sort tous les six mois, à date généralement fixe : premier mai et premier novembre. Une version N est supportée (patches, mises à jour de sécurité, etc.) pendant un an à compter de sa sortie, soit jusqu'au jour de la sortie de la version N+2 (4.8 pour la 4.6, et 5.0 pour la 4.8, attention). De plus, seule la mise à jour d'une version N à la version N+1 est supportée officiellement. Il est donc plus intéressant de faire les mises à jour à chaque sortie.

Mettre à jour est assez simple, il convient de suivre le très détaillé guide idoine. Notez que ce lien correspond à la version 5.0. Vous trouverez facilement le guide à jour à côté de la FAQ du projet (lire les parties intéressantes de cette vraie-fausse FAQ est d'ailleurs vivement conseillé !).

Il y a toutefois quelques différences ou ajouts à ce qui est indiqué par ce guide ; elles sont explicitées dans le reste de cette page. Notez que l'on parle ici de la mise à jour sans noyau d'installation, à la main, seule méthode valide à distance.

Avant la mise à jour

Téléchargement des fichiers nécessaires

Si /usr/rel contient des fichiers (sets, patches, etc.), ce qui devrait normalement être le cas, les déplacer dans un sous-répertoire old/. Puis placer les sets suivants dans /usr/rel (XX est à remplacer par le numéro de version) en les téléchargeant depuis un FTP mirroir du projet (ftp.fr.openbsd.org, par exemple) :

Placer également dans /usr/rel :

Vérifier la disponibilité de correctifs et les télécharger ici et le cas échéant dans /usr/rel (attention toujours à la version).

Mise en place des nouvelles sources

Commençons par le système. Supprimer le contenu de /usr/src sans pitié. Puis, comme indiqué par la FAQ, section « Pre-loading the tree », décompresser le contenu de sys.tar.gz puis de src.tar.gz (placés on le rappelle dans /usr/rel) dans /usr/src.

Passons aux ports. Se placer dans /usr, et exécuter :

        rm -rf ports
        tar xzf /usr/rel/ports.tar.gz
        cd ports
        cvs -q -d $OB_CVSROOT up -r OPENBSD_X_X -Pd

X_X représentant la version souhaitée de l'arbre des ports. Pour la version 5.0, le tag sera donc OPENBSD_5_0. Notons que OB_CVSROOT est une variable définie dans /root/.profile, représentant le serveur CVS utilisé.

Nouveaux fichiers de configuration

Lire la section « Before Upgrading » du guide de mise à jour et, lorsque cela concerne des logiciels utilisés sur la machine, préparer les modifications indiquées. Par exemple, le cas habituel est la modification du fichier de configuration de PF.

Désactiver les applications non critiques

Éteindre proprement les applications dont on n'aura pas l'usage pendant la mise à jour. Par exemple, cron, httpd, Postfix, named, ejabberd, etc. Bien entendu, sshd ne rentre *pas* dans cette catégorie. :-)

Il convient ensuite de désactiver ces applications au niveau de rc (/etc/rc.local et /etc/rc.conf.local, donc) afin qu'elles ne se lancent pas de manière impromptue pendant la phase de configuration, après le redémarrage.

Pendant la mise à jour

Rappelons que l'on suit la méthode sans noyau d'installation.

Il n'y a pas de différence à noter pendant la mise à jour proprement dite, à savoir la décompression des sets sur le système. Bien sûr tous les sets de la distribution ne seront pas installés localement. Seuls sont à décompresser ceux téléchargés précédemment.

Après la mise à jour

Mise à jour des fichiers de configuration

Après le redémarrage, ne pas oublier de mettre à jour /dev avec MAKEDEV, comme indiqué par le guide.

Il est maintenant temps de mettre à jour les fichiers de configuration. La méthode du guide utilisant l'outil sysmerge est vivement conseillée, puisqu'elle est plus facile et qu'elle est moins risquée pour les têtes en l'air que nous sommes.

Mise à jour des paquets

Vous avez bien supprimé les fichiers obsolètes comme indiqué ? Bien passons à la partie la plus chiante du processus. :-)

Mettre à jour les paquets requiert quelques prérequis :

Commencer par mettre à jour individuellement ces paquets ainsi que les gros et importants morceaux comme Postfix, Ejabberd, etc. (`pkg_add -uiv postfix`, `pkg_add -uiv ejabberd`) est conseillé. Une fois le principal fait, on peut mettre à jour le reste des paquets par un simple
pkg_add -uiv
en lisant toutefois la sortie de l'outil.

Reste maintenant à lancer /usr/ports/infrastructure/bin/out-of-date pour déterminer les mises à jour (très probablement de sécurité, donc étape importante !) faites depuis la sortie de la release. Il suffit ensuite de compiler les ports indiqués par l'outil. Lire MAJ_ports_packages pour plus de détails.

Voilà, bon c'était chiant mais pas trop compliqué. :-)

Patcher éventuellement le système

Il est possible qu'entre la release et le moment où le système est mis à jour, des correctifs aient été rendus disponibles. S'ils concernent des fonctions remplies par le système, il convient alors de les appliquer. La page du wiki sur le sujet peut alors être utile.

(styx) Régénérer le chroot httpd

Pour mettre à jour les programmes dans le chroot, il suffit de lancer `remove-httpd-chroot` puis... `create-httpd-chroot`.

Essais

Il s'agit désormais de relancer une à une les applications qui avaient été désactivées, en regardant les logs. Si aucune erreur n'est détectée, c'est gagné ! Vous pouvez alors réactiver ces applications dans /etc/rc.conf.local ou (inclusif) /etc/rc.local et redémarrer une dernière fois la machine (si nécessaire).

Épilogue

L'adminsys francilien content de lui alla au Pouchla boire une Guinness, rencontra (la compagne|le compagnon) de sa vie et forka beauc... Bon OK, j'arrête, de toute manière mon clavier se bl