Mettre à jour Debian Lenny vers Squeeze [retour d’expérience]

J’ai un serveur dédié chez OVH (un « Kimsufi ») et j’ai voulu faire la mise à jour de Debian Lenny vers Squeeze.

Vous trouverez toutes les informations nécessaires sur cette page : http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html. Je vous conseille de suivre chaque étape très attentivement.

Attention car chez OVH on peut se retrouver avec une modification, que j’explique un peu plus bas, à faire dans /etc/init.d/fixudev sur les headers manquants (détails sur les headers des fichiers de init.d)…. vous devrez aussi vérifier les autres scripts que vous avez pu mettre vous-même dans /etc/init.d pour vous assurer qu’ils possèdent tous un en-tête sinon vous aurez un message d’erreur durant la mise à jour.

Voici un bref résumé des étapes à suivre (tout ce qui commence par # est une commande à taper) :

# apt-get update && apt-get upgrade
' une fois que votre système est à jour, vérifier que vous avez bien la dernière version du noyau mise à disposition par OVH
' pour cela visitez http://guide.ovh.com/KernelInstall qui explique ce qu'il faut faire (deux fichiers à télécharger puis un update-grub et un reboot!)
' je vous conseille les versions avec grsec pour plus de sécurité (elles sont notées "-grs-")
' si vous n'êtes pas sûr du noyau que vous avez actuellement, vous pouvez le savoir en tapant:
# uname -a
' maintenant il va falloir faire une sauvegarde de votre machine, et en particulier :
' le répertoire /etc/
' le répertoire /home/
' le répertoire qui contient vos sites web
' vos bases SQL
' ensuite, comme indiqué dans le tutoriel, vous devez sauvegarder certains éléments qui pourraient nous servir en cas de problème :
# mkdir svg_special; cp -R /var/lib/dpkg svg_special/; cp /var/lib/apt/extended_states svg_special/; dpkg --get-selections "*" > svg_special/dpkg_get_selection
' avant de continuer, il va falloir bidouiller le fichier /etc/init.d/fixudev puisqu'il n'est pas conforme et va vous créer une erreur dans la suite
' voici par quoi vous devez le remplacer :
#! /bin/sh
### BEGIN INIT INFO
# Provides:          fixudev
# Required-Start:
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
# Description:       remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
### END INIT INFO

case "$1" in
  start)
    # example:
    # # PCI device 0x1106:0x3065 (via-rhine)
    # SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:15:f2:90:3e:a0", NAME="eth0"

    for interface in `ifconfig -a | grep -e "^eth"|cut -d' ' -f1`; do
            MAC=`ifconfig $interface | grep -e "^$interface"|cut -d' ' -f11 | sed s/\:/\\\\\\\\:/g`
    # removes actual mac
    #       for file in `grep -i "$MAC" /etc/udev/rules.d/*|sort|uniq|cut -d':' -f1`; do
    #               perl -ni -e "print unless /$MAC/" ${file} && \
    #                       echo "removed HW address ${MAC} from ${file} (${interface})"
    #       done

    # removes *ANY* mac
            for file in `grep -re "^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$" /etc/udev/|sort|uniq|cut -d':' -f1`; do
                    sed -i -e "/^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$/d" ${file} && \
                            echo "removed HW address from ${file} (${interface})"
            done
    done
    ;;
  stop)
    ;;

  status)
    echo "Nothing here";
    ;;

  restart|reload)
    $0 start
    ;;
  *)
    echo "Usage: fixudev start"
    exit 1
esac
exit 1
' maintenant il est conseillé d'utiliser screen pour pouvoir se reconnecter (avec screen -r) à en cas de déconnexion
# screen
' il existe un bug avec splashy c'est pourquoi il est dit de le purger
# apt-get purge splashy
' si la commande ci-dessous ne retourne rien, alors c'est bon, mais dans tous les cas consultez http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html#package-status
# dpkg --audit
' maintenant il faut remplacer tous les "lenny" de /etc/apt/sources.list par des "squeeze"
' voici ce que ça donne chez moi :
' deb http://ftp.fr.debian.org/debian squeeze main non-free
' deb ftp://mir1.ovh.net/debian/ squeeze main contrib non-free
' deb-src ftp://mir1.ovh.net/debian/ squeeze main contrib non-free
' deb http://security.debian.org/ squeeze/updates main contrib non-free
' deb-src http://security.debian.org/ squeeze/updates main contrib non-free

' il est recommandé d'utiliser script qui permettra de sauvegarder ce qu'on va faire maintenant (qui pourra être utile en cas de problème)
# script -t 2>/root/upgrade-squeeze1.time -a /root/upgrade-squeeze1.script
' on commence par mettre à jour les listes des paquets
# apt-get update
' on va vérifier qu'on a la place suffisante (un message explicite apparait sinon)
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
' on va maintenant d'abord faire une mise à jour minimale
# apt-get upgrade
' là il va vous questionner... en général choisissez l'option par défaut si vous ne savez pas quoi répondre
' à noter qu'un nouveau php.ini va être créer, et il est conseillé d'y jeter un oeil pour voir les nouvelles options

' une fois cette étape un peu longue terminée, il faut installer udev :
# apt-get install udev
' maintenant on teste pour voir si tout s'est bien passé
# reboot

' [...]

' normalement le serveur redémarre sans problème
' on recommence à lancer screen et on sauvegarde les étapes suivantes avec script
# screen
# script -t 2>/root/upgrade-squeeze2.time -a /root/upgrade-squeeze2.script
' maintenant on peut faire une mise à jour complète !
# apt-get dist-upgrade

' chez moi il a supprimé mysql et j'ai été obligé de le réinstaller :
# apt-get install mysql-server mysql-client php5-mysql
' un dernier reboot pour s'assurer que tout fonctionne normalement
# reboot
' et enfin on va nettoyer tous les paquets
# apt-get autoremove

Si vous tombez sur ce genre de message :

Impossible de migrer vers le nouveau système de démarrage
Des tests ont montré que des problèmes existent dans le système de démarrage qui empêchent la migration vers la nouvelle séquence de démarrage :
insserv: warning: script ‘XXXX’ missing LSB tags and overrides, insserv: warning: script ‘YYYY’ missing LSB tags and overrides,
Si le problème indiqué concerne une modification locale, vous devrez le réparer vous-même. Si c’est un bogue dans un paquet, il devrait être signalé dans le système de suivi des bogues (BTS) et corrigé dans le paquet. Veuillez lire
« http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot » pour plus d’informations sur les méthodes de résolution des problèmes empêchant la transition.
Une fois que les problèmes ont été corrigés, vous pouvez réessayer la migration avec la commande « dpkg-reconfigure sysv-rc ».

C’est que vous devez aller modifier manuellement les fichiers correspondant à XXXX et YYYY qui se trouvent dans /etc/init.d/. L’origine est que l’en-tête spécial est manquante, ainsi que les fonctions start/stop.
Le squelette de votre fichier devrait être :

#! /bin/sh
### BEGIN INIT INFO
# Provides:          nom de votre script
# Required-Start:
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Une description du script
# Description:       Une description du script
### END INIT INFO

case "$1" in
  start)
    # votre code
    echo "XXXX started!"
    ;;
  stop)
    echo "XXXX stopped..."
    ;;

  status)
    echo "Nothing here";
    ;;

  restart|reload)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: XXXX {start|stop|restart|status}"
    exit 1
esac
exit 1

2 avis sur “Mettre à jour Debian Lenny vers Squeeze [retour d’expérience]

  1. Aymeric Auteur de la publication

    TBC (sur le ce forum) propose une version alternative pour le fixudev :

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides: fixudev
    # Required-Start: networking
    # Required-Stop:
    # Default-Start: S
    # Default-Stop:
    # Short-Description: remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
    # Description: remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
    ### END INIT INFO

    case "$1" in
    start)
    for interface in `ifconfig -a | grep -e "^eth"|cut -d' ' -f1`; do
    MAC=`ifconfig $interface | grep -e "^$interface"|cut -d' ' -f11 | sed s/\:/\\\\\\\\:/g`
    for file in `grep -re "^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$" /etc/udev/|sort|uniq|cut -d':' -f1`; do
    sed -i -e "/^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$/d" ${file} && \
    echo "removed HW address from ${file} (${interface})"
    done
    done
    exit 0
    ;;
    stop)
    ;;

    status)
    echo "Nothing here";
    ;;

    restart|reload)
    $0 start
    ;;
    *)
    echo "Usage: fixudev start"
    exit 1
    esac
    exit 1

  2. Spout

    Merci pour le tuto ça m’a bien aidé, j’ai pu upgrader avec succès 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*