Il y a un an, j’écrivais un article sur l’installation de serveur HTTP. J’expliquais qu’à l’époque j’avais utilisé un petit serveur virtuel sous Ubuntu 16.04.
Vous le savez sûrement, le cycle de sortie des versions de la distribution Ubuntu respecte un rythme qui fait qu’une version LTS (Long Term Support, support longue durée, avec des mises-à-jours pendant 5 ans) sort tous les deux ans, et des versions intermédiaires tous les six mois.
La version 16.04 était une version LTS, ce qui est plutôt bien pour un serveur. Mais si mettre à jour un serveur tous les 6 mois est assez contraignant, attendre 2 ans peut être embêtant si on a besoin de packages récents.
Donc comment faire pour mettre à jour une 16.04 en 17.04 ?
(toutes les commandes ci-dessous sont à exécuter en tant que root)
Pour commencer, on va s’assurer que le système est bien à jour :
# apt-get update # apt-get dist-upgrade
Puis on va redémarrer le serveur (au cas où le kernel a été mis à jour, par exemple) :
# reboot
Une fois le serveur redémarré, on va s’assurer que le package “update-manager-core” est installé (il devrait l’être, mais on ne sait jamais) :
# apt-get install update-manager-core
On va ensuite éditer le fichier /etc/update-manager/release-upgrades car il contient une directive importante pour la mise-à-jour du système ; par défaut, l’option “Prompt” vaut “lts”, ce qui fait qu’on ne pourra mettre à jour notre système 16.04 que vers une prochaine LTS (ce sera la 18.04, qui sortira en avril 2018). Si on veut que le système se mette à jour vers n’importe quelle version (LTS ou intermédiaire), il faut que le fichier contienne la ligne suivante :
Prompt=normal
Avant de lancer la mise-à-jour, il faut savoir qu’en cas de problème les choses peuvent être un peu compliquée dans le cas où on met un serveur à jour à distance. Le programme de mise à jour va démarrer un second serveur SSH sur le port 1022 ; il faut donc d’abord ouvrir ce port dans votre firewall, ou bien l’ouvrir temporairement avec la commande :
# iptables -A INPUT -p tcp --dport 1022 -j ACCEPT
Je vous recommande aussi de lancer la mise-à-jour dans un terminal géré par le programme “screen” ; il sera ainsi possible de récupérer votre terminal même si vous vous faites déconnecter (à la condition de pouvoir rétablir une connexion SSH et que la machine n’a pas redémarré entretemps). Commencez par l’installer si nécessaire, puis exécutez-le :
# apt-get install screen # screen
(il faut appuyer une deuxième fois sur la touche Entrée pour entrer dans le terminal)
On peut ensuite lancer la mise-à-jour :
# do-release-upgrade
Au fur et à mesure que les paquets logiciels seront mis-à-jour, on va vous demander si vous souhaitez mettre à jour les fichiers de configuration ou si vous souhaitez garder votre version locale. À vous de voir ce que vous préférez, mais si un logiciel change de version majeure, vos fichiers de configuration risquent de ne plus être compatibles ; il vaut peut-être mieux faire d’abord une copie de vos fichiers, d’accepter de les mettre à jour, puis de regarder les différences une à une.
Enfin, sachez que − pour cet exemple précis − la mise-à-jour se fait théoriquement de la version 16.04 vers la version 16.10 ; il faut donc renouveler l’opération une seconde fois. Toutefois, lors de mes tests sur plusieurs machines, une seule opération de mise-à-jour m’a amené directement en version 17.04.
Si vous n’êtes pas sûr, vous pouvez connaître la version installée de la manière suivante :
# more /etc/lsb-release
Autre méthode, qui fonctionne sur un grand nombre de distributions (toutes celles qui sont conformes aux spécifications de la Linux Standard Base) :
# lsb_release -a