---
categories: system kernel openbsd sysadmin
title: Howto Upgrade OpenBSD
...

* OpenBSD <https://www.openbsd.org/>

# Mise à jour du système

## Prérequis

### Cas d'un équipement redondant

**Si le serveur à mettre à jour est master d'un groupe [CARP(4)](https://man.openbsd.org/carp)**

1. On commence par s'assurer que le serveur est bien synchronisé avec son backup  

~~~
# /usr/share/scripts/sync.sh "Synchronisation pre-upgrade" 
~~~
2.  On passe le serveur en BACKUP  

~~~
# ifconfig -g carp carpdemote 50
~~~

> *Note* : Pour constater le changement d'état en direct on peut effectuer un tail -f /var/log/messages

3. On modifie le advskew en dur pour une valeur plus élevée que sur le membre en backup  

~~~
# vim /etc/hostname.carp*
~~~

4. Et via ifconfig aussi  

~~~
# for i in $(ifconfig carp | egrep 'carp[0-9]{1,2}:' | awk -F':' '{print $1}'); do ifconfig $i advskew XX; done
~~~

5. On modifie les checks NRPE pour CARP  

~~~
# sed -i 's/master/backup/' /etc/nrpe.d/zzz_evolix.cfg
# rcctl restart nrpe
~~~

**Si le serveur à mettre à jour est backup d'un groupe [CARP(4)](https://man.openbsd.org/carp)**

1.  On commente l'ensemble des lignes du fichier /etc/rc.conf.local pour éviter que les services ne démarrent au premier reboot post upgrade  

~~~
# sed -i 's/^/#/' /etc/rc.conf.local
~~~

2. On déplace les fichiers de configuration carp dans un lieu sûr  

~~~
# mv /etc/hostname.carp* /root/
~~~

3. On détruit l'ensemble des interfaces CARP (ici le serveur est en backup donc aucun danger)  

~~~
# for i in $(ifconfig carp | egrep 'carp[0-9]{1,2}:' | awk -F':' '{print $1}'); do ifconfig $i destroy; done
~~~

### Avant de mettre à jour

Avant de lancer la mise à jour, il faut vérifier les choses suivantes :

### Toute version

- L'ensemble des lignes du fichier /etc/rc.conf.local sont commentées pour éviter que les services ne démarrent au premier reboot post upgrade.

~~~
# sed -i 's/^/#/' /etc/rc.conf.local
~~~

- La partition /usr doit avoir une taille de 1.1Go minimum (ce n'est pas l'espace restant, mais l'espace total).

### 6.6 vers 6.7

Prendre connaissance de la page détaillant [les changements de configuration](https://www.openbsd.org/faq/upgrade67.html#ConfigChanges) !

- Vérifier l'absence de l'utilisateur système « named »

~~~
# userdel named
# groupdel named
# rm -rf /var/named
~~~

### 6.7 vers 6.8

Prendre connaissance de la page détaillant [les changements de configuration](https://www.openbsd.org/faq/upgrade68.html#ConfigChanges) !

### 6.8 vers 6.9

Prendre connaissance de la page détaillant [les changements de configuration](https://www.openbsd.org/faq/upgrade69.html#ConfigChanges) !

- [pf.conf(5)](https://man.openbsd.org/pf.conf.5). La syntaxe des options de routage de PF (route-to, reply-to, dup-to) a changé. Si vous utilisez ces fonctionnalités et ne disposez pas d'accès à la console, pensez à adapter /etc/pf.conf avant la mise à jour ; la syntaxe précédente sera rejetée par [pfctl(8)](https://man.openbsd.org/pfctl.8).

### 6.9 vers 7.0

Prendre connaissance de la page détaillant [les changements de configuration](https://www.openbsd.org/faq/upgrade70.html#ConfigChanges) !

- [snmpd.conf(5)](https://man.openbsd.org/snmpd.conf.5). La configuration de SNMP par défaut a changée. Le protocole par défaut est maintenant SNMPv3, et les communautées public et private n'existent plus par défaut. Si vous souhaitez utiliser les protocoles SNMPv1 ou SNMPv2c, pensez à adapter /etc/snmpd.conf.

## Mettre à jour le système

Lancer la mise à jour via [sysupgrade(8)](http://man.openbsd.org/sysupgrade)

~~~
# sysupgrade
~~~

> *Note* : Une fois les sets récupérés, le serveur va redémarrer sur le kernel bsd.rd et effectuer la mise à jour automatiquement.
 
Pendant la mise à jour automatique, le serveur sera pinguable mais non accessible en SSH, il ne faut donc pas entièrement se fier au ping pour la reprise en main une fois l'upgrade terminée.
 
***Une fois le serveur de nouveau disponible en SSH***

**Merger les configurations**

~~~
# sysmerge
~~~

**Mettre à jour les firmwares**

~~~
# fw_update
~~~

> *Note* : Cette action est potentiellement déjà effectuée par [sysupgrade(8)](http://man.openbsd.org/sysupgrade) 

**Mettre à jour les paquets**

~~~
# pkg_add -u
~~~

**Appliquer les éventuels patchs de sécurité**

~~~
# syspatch
~~~

## Une fois la mise à jour effectuée

Une fois la mise à jour effectuées, il faut si besoin modifier certaines configurations et supprimer certains fichiers devenus potentiellement obsolètes.

### Toute version

On décommente les lignes commentées plus haut dans /etc/rc.conf.local
    
~~~
# sed -i 's/^#//' /etc/rc.conf.local
~~~

Enfin, une fois traitée l'étape post-upgrade correspondant à la version mise à jour (voir ci-dessous), on peut effectuer le dernier reboot :

~~~
# reboot
~~~

### 6.6 vers 6.7

Fichiers à supprimer

~~~
# rm -rf /usr/libdata/perl5/*/Storable \
        /usr/libdata/perl5/*/arybase.pm \
        /usr/libdata/perl5/*/auto/arybase \
        /usr/libdata/perl5/B/Debug.pm \
        /usr/libdata/perl5/Locale/{Codes,Country,Currency,Language,Script}* \
        /usr/libdata/perl5/Math/BigInt/CalcEmu.pm \
        /usr/libdata/perl5/unicore/To/_PerlWB.pl \
        /usr/libdata/perl5/unicore/lib/GCB/EB.pl \
        /usr/libdata/perl5/unicore/lib/GCB/GAZ.pl \
        /usr/share/man/man3p/B::Debug.3p \
        /usr/share/man/man3p/Locale::{Codes*,Country,Currency,Language,Script}.3p \
        /usr/share/man/man3p/Math::BigInt::CalcEmu.3p \
        /usr/share/man/man3p/arybase.3p
# rm -f /usr/sbin/{dig,host,nslookup}
~~~

### 6.7 vers 6.8

Fichiers à supprimer

~~~
# rm -f /usr/lib/libperl.a
# rm /usr/X11R6/lib/libxkbui.* \
     /usr/X11R6/lib/pkgconfig/xkbui.pc \
     /usr/X11R6/include/X11/extensions/XKBui.h
~~~

### 6.8 vers 6.9

Fichiers à supprimer

~~~
# rm -f /usr/bin/podselect \
        /usr/lib/libperl.so.20.0 \
        /usr/libdata/perl5/*/CORE/dquote_inline.h \
        /usr/libdata/perl5/*/Tie \
        /usr/libdata/perl5/*/auto/Tie \
        /usr/libdata/perl5/Pod/Find.pm \
        /usr/libdata/perl5/Pod/InputObjects.pm \
        /usr/libdata/perl5/Pod/ParseUtils.pm \
        /usr/libdata/perl5/Pod/Parser.pm \
        /usr/libdata/perl5/Pod/PlainText.pm \
        /usr/libdata/perl5/Pod/Select.pm \
        /usr/libdata/perl5/pod/perlce.pod \
        /usr/libdata/perl5/unicore/Heavy.pl \
        /usr/libdata/perl5/unicore/lib/Lb/EB.pl \
        /usr/libdata/perl5/unicore/lib/Perl/_PerlNon.pl \
        /usr/libdata/perl5/unicore/lib/Sc/Armn.pl \
        /usr/libdata/perl5/utf8_heavy.pl \
        /usr/share/man/man1/podselect.1 \
        /usr/share/man/man3p/Pod::Find.3p \
        /usr/share/man/man3p/Pod::InputObjects.3p \
        /usr/share/man/man3p/Pod::ParseUtils.3p \
        /usr/share/man/man3p/Pod::Parser.3p \
        /usr/share/man/man3p/Pod::PlainText.3p \
        /usr/share/man/man3p/Pod::Select.3p
~~~

### 6.9 vers 7.0

Fichiers à supprimer

~~~
# rm -f /usr/X11R6/lib/libdmx.* \
        /usr/X11R6/include/X11/extensions/dmxext.h \
        /usr/X11R6/lib/pkgconfig/dmx.pc \
        /usr/X11R6/man/man3/DMX*.3
~~~

> *Note* : On peut également utiliser le paquet [sysclean](https://github.com/semarie/sysclean) pour supprimer d'éventuels autres fichiers devenus obsolètes.

### Cas d'un équipement redondant

**Si le serveur mis à jour était membre d'un groupe [CARP(4)](https://man.openbsd.org/carp)**

On replace les fichiers de configuration carp

~~~
# mv /root/hostname.carp* /etc/
~~~

## Liens

* OpenBSD <https://www.openbsd.org/>
* Version stable <https://www.openbsd.org/70.html>
* Guide upgrade <https://www.openbsd.org/faq/upgrade70.html>
