Heureux les administrateurs qui ne mettent jamais à jour leur système. Sans sombrer dans le syndrome “cutting edge” à outrance j’essaie de maintenir les machines que j’administre ainsi que ma machine personnelle à jour niveau sécurité. Cependant il y a des fois où ce type de discipline est difficile à assumer. J’ai donc passé le présent serveur en FreeBSD 7.0 et j’ai pleuré. Revue de détail :
Phase 1 : Mise à jour du système de base
J’ai suivi la méthode d’un upgrade binaire décrite [ici]. Pour le système de base ça a très bien marché. En revanche ça a tout pété les ports.
Phase 2 : Recompilation des ports
A l’issu de l’upgrade du système de base j’obtiens :
[garnett@silky ~]$ uname -a
FreeBSD silky.garnett.fr 7.0-RELEASE-p2 FreeBSD 7.0-RELEASE-p2 #0: Wed Jun 18 07:33:20 UTC 2008 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386
Je me dis c’est OK, passons à la réinstallation des ports :
[garnett@silky ~]$ sudo portupgrade -afP
Et la c’est le drame : plus rien ne marche. J’ai des erreurs de librairies non trouvées par divers applications (Apache22, vim, php etc.). Gênant d’autant plus que je venais de réinstaller mes ports avec les nouvelles librairies du système de base … En lisant le fichier de sortie du portupgrade, je me rends compte qu’il a recompilé un bon paquet des ports (le -P veut dire que lorsqu’un package est disponible pour un port, on utilise l’utilise plutôt que de tout compiler).
Bon, OK, ne faisons donc pas les choses à moitié et plutôt que d’avoir un truc un peu bâtard (ports et packages) recompilons tout :
[garnett@silky ~]$ sudo portupgrade -af
…
Ça mouline, ça mouline 
…
Confiant je tente un vim sur un fichier quelconque.
Paf encore une librairie introuvable … Merde !
Hop lancement de msn : chouette Arno est rentré de vacances. Après les politesses d’usage je lui demande si il a une idée et là il me dit qu’après chaque upgrade majeur de version il vaut mieux supprimer les ports et les réinstaller (méthode d’autant plus propre que certains logiciels disponibles sous forme de ports sont intégrés à cette occasion au système de base, par exemple ftp-proxy).
Sans autre forme de procès :
[garnett@silky ~]$ sudo pkg_delete -a
[garnett@silky ~]$ sudo portinstall databases/mysql51-server
[garnett@silky ~]$ sudo portinstall www/apache22
…
Et la effectivement tout a fonctionné à merveille.
Une fois de plus : merci Arno !!
Moralité pour les upgardes mineurs ca passe en live. Par contre pour le prochain majeur je mettrais la machine offline et je stopperais les services pour réaliser ces manipulations.