Avant de commencer : je n’ai rien en particulier contre systemd, que je ne connais pas assez pour apprécier ou juger. J’ai juste eu besoin d’avoir dans l’immédiat une Debian Jessie avec sysvinit.

Le besoin

Upgrader rapidement une machine en squeeze-lts bourrée de scripts d’init réécrits/personnalisés. Le but était de faire ça rapidement, en cassant le moins de choses possibles, et en n’y revenant pas dans 6 mois (ce qui excluait de rester avec Wheezy).

La machine en question est le « serveur à tout faire » de mon réseau à la maison. Il sert de passerelle pour mes connexions Internet, de serveur web, de serveur de fichiers, de serveur DNS, etc…

La procédure

Debian donne des guides pour les upgrades d’une version à l’autre : voir ici pour Squeeze vers Wheezy et ici pour Wheezy vers Jessie.

Déjà, comme avant tout upgrade de Debian, on commence par retirer les paquets inutiles, qui ne servent plus ou ne serviront plus. Pour cela, je me suis aidé de dpkg -l (aidé de grep et de ma mémoire) pour les identifier, puis les ai retirés à grand coup de apt-get remove voir apt-get purge. On en profitera également pour retirer les paquets “non standards”, c’est à dire ne venant pas des dépôts Debian officiels, dont on ne sait pas comment ils vont se comporter pendant l’upgrade.

Ensuite, pour éviter de tout casser, j’ai fait 2 upgrades, l’une pour passer à wheezy et l’autre pour passer à Jessie.

La première n’a rien de particulier, et suit la procédure standard de mise à niveau de Debian :

  • Changement de nom de version dans /etc/apt/sources.list (et sources.list.d/*),
  • apt-get update
  • apt-get upgrade
  • apt-get dist-upgrade
  • Reboot de la machine et correction de ce qui est cassé

La seconde mise à jour sera celle qui ammènera systemd. Pour empêcher cela, on va juste demander à apt de ne pas installer systemd, en mettant une priorité négative à son paquet. Sysvinit et sa configuration seront donc préservés.

echo -e 'Package: systemd\nPin: origin ""\nPin-Priority: -1' > /etc/apt/preferences.d/systemd

Partant de là, on peut recommencer la procédure de mise à jour, mais sans redémarrer immédiatement.

  • Changement de nom de version dans /etc/apt/sources.list (et sources.list.d/*),
  • apt-get update
  • apt-get upgrade
  • apt-get dist-upgrade

À partir de là, la mise à jour s’est effectuée… sauf pour le paquet sysvinit, qui est toujours celui de Wheezy. Dans Jessie, il s’agit d’un paquet de transition, sysvinit étant compris dans le paquet sysvinit-core.

Je l’ai toutefois mis à jour :

apt-get install sysvinit

Ensuite, seulement, on peut redémarrer la machine et régler les soucis liés à la mise à jour.

Bonne upgrade !