FreeBSD est surement un des systèmes d’exploitations les plus stable et modulaire que je connaisse. Son administration est une réelle partie de plaisir sauf pour un point: la mise à jour… Nous allons dans un premier temps expliquer pourquoi cette mise à jour n’est pas triviale et ensuite détailler une mise à jour complète. Ce billet se base sur la dernière version disponible (la version 8.0).
Pourquoi ?
Un système FreebSD est composé de trois groupe de logiciels: le noyau, le monde et les ports.
Le noyau (ou kernel) est le coeur de système, il permet la communication avec le matériel (CPU, mémoire, entrée/sortie, processus…). Il est géré par l’équipe de développement de FreeBSD. Il est possible de customiser finement ce noyau à vos besoins.
Le monde (ou world) représente des applications ou services proche du système, fournies avec le système FreeBSD.
Les ports sont des applications/services/librairies portés par leurs auteurs ou par des personnes tierces sur le système FreeBSD.
Ainsi quand on doit faire une mise à jour de notre système FreeBSD, il faut commencer par se poser la question suivante: que veut on mettre à jour ? Nous allons dans la suite du billet détailler une mise à jour complète de son système FreeBSD
Comment ?
Avant de commencer la phase de mise à jour proprement dite, il faut récupérer les sources du noyau et du monde (le tout étant recompilé avant d’être installé sur votre machine).
Récupération des sources
Plusieurs méthodes existent. Personnellement, j’utilise la méthode cvsup. On commence par installer le logiciel cvsup avec la commande suivante:
pkg_add -r cvsup mkdir /usr/local/etc/cvsup/ cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/cvsup cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc/cvsup
Ensuite on édite les fichiers de configuration /usr/local/etc/cvsup/stable-supfile et /usr/local/etc/cvsup/ports-supfile pour modifier l’URL du serveur de mise à jour:
*default host=cvsup1.fr.FreeBSD.org
Mise à jour du monde
On commence par mettre à jour le monde:
cd /usr/src/ make buildworld
On redémarre en mode de maintenance:
mergemaster -p make installworld mergemaster -i
On redémarre en mode normal.
PS: l’étape de reboot en mode maintenance n’est pas obligatoire mais fortement conseillée…
Mise à jour du noyau
Puis et seulement puis, on met à jour le noyau de notre système avec les commandes suivantes:
cd /usr/src/sys/i386/conf ls GENERIC make buildkernel KERNCONF=GENERIC make installkernel KERNCONF=GENERIC
PS: si vous avez customiser votre noyau, il faut donner le nom du fichier de configuration en lieu et place de GENERIC.
Mise à jour des ports
Comme pour le mode et le noyau, il est nécessaire de récupérer la liste des derniers ports (arbre des ports dans le jargon FreeBSD), pour cela j’utilise les commandes:
portsnap fetch portsnap extract portsnap update
Ensuite j’utilise le logiciel portupgrade pour effectuer les mise à jour. Il faut dans un première temps installer ce logiciel sur votre système:
pkg_add -r portupgrade
Ensuite on lance la mise à jour de nos ports installés:
portupgrade -ar
FreeBSD-Update Une solution tout en un
Sur les dernière versions de FreeBSD (>6.3 et >8.0), un logiciel automatisant ces taches a été développé par l’équipe de FreeBSD. Le logiciel en question s’appelle freebsd-update.
Il permet de mettre à jour votre système a deux niveaux:
Mise à jour au niveau sécurité
Il suffit de saisir les deux commandes suivantes:
freebsd-update fetch freebsd-update install
Mise à jour majeure et mineure
Les trois commandes suivantes vont mettre à jours les ports et migrer FreeBSD dans la dernière version disponible (8.0-RELEASE):
portupgrade -af freebsd-update -r 8.0-RELEASE upgrade freebsd-update install
On doit ensuite rebooter la machine, puis re-saisir la commande suivante:
freebsd-update install