Mettre à jour les Clients Linux

Dans cette section est proposée une procédure de mise à jour automatique des Clients Linux qui repose sur un script lancé automatiquement à chaque démarrage du clinux.

Remarque

Cette procédure ne freine pas l'ouverture de session car le script se déroule en arrière plan. Elle garantie à la fois une ouverture de session optimale mais aussi une sécurité accrue.

Page en cours de ré-écriture : la gestion des scripts a été modifiée avec la version 4.5.32 du mois de juin 2021.

Procédure

  1. Se connecter sur le SE4FS en root

  2. Créer le répertoire /etc/sambaedu/applications/maj/.

    La commande pour créer ce répertoire maj est la suivante :

    mkdir -p /etc/sambaedu/applications/maj/

  3. Déposer le script startup.linux fourni ci-après dans le répertoire /etc/sambaedu/applications/maj/

    script startup.linux

    1
    ladate="$(date +%Y_%m_%d_%Hh%Mmin%Ss)"
    2
    texte_temoin_creation="création du répertoire /root/temoins le ${ladate}"
    3
    texte_temoin_passage="on a utilisé startup.linux pour la mise à jour le ${ladate}"
    4
    temoin=/root/temoins/temoin.maj
    5
    DEPOT_debian="deb.debian.org"
    6
    7
    tester_se4()
    8
    {
    9
        # pour éviter de lancer le script sur le se4fs
    10
        # On rend le script "crétin-résistant"
    11
        [ -e /var/sambaedu/clinux ] && echo "Malheureux... Ce script est à exécuter sur les clients-Linux, pas sur le serveur !" && exit 1
    12
    }
    13
    14
    repertoire_root_temoins()
    15
    {
    16
        # le répertoire servira éventuellement pour un script unefois
    17
        #
    18
        if [ ! -e "/root/temoins" ]
    19
        then
    20
            # il n'existe pas : on le crée
    21
            mkdir -p /root/temoins
    22
            # on pose un témoin de création puis de passage
    23
            echo "${texte_temoin_creation}" > ${temoin}
    24
            echo "${texte_temoin_passage}" > ${temoin}
    25
        else
    26
            # il existe : on pose un témoin de passage
    27
            echo "${texte_temoin_passage}" > ${temoin}
    28
        fi
    29
    }
    30
    31
    tester_sources_list()
    32
    {
    33
        # On teste si le /etc/apt/sources.list a été modifié (script de customisation par exemple)
    34
        # on regarde si le fichier /etc/apt/sources.list contient déjà ce qu'il faut
    35
        test=$(grep 'fin du sources.list' /etc/apt/sources.list | awk  '{print $2 " " $3 " " $4}')
    36
        if [ "$test" != "fin du sources.list" ]
    37
        then
    38
            # le /etc/apt/sources.list n'a pas été modifié
    39
            echo "le sources.list n'a pas été modifié" >> ${temoin}
    40
        else
    41
            echo "le sources.list a été modifié" >> ${temoin}
    42
        fi
    43
        # test de l'existence du fichier /etc/apt/sources.list.d/se4.list
    44
        if [ ! -e "/etc/apt/sources.list.d/se4.list" ]
    45
        then
    46
            echo "le fichier /etc/apt/sources.list.d/se4.list n'existe pas" >> ${temoin}
    47
        else
    48
            echo "le fichier /etc/apt/sources.list.d/se4.list existe" >> ${temoin}
    49
        fi
    50
    }
    51
    52
    determiner_canal()
    53
    {
    54
        # on détermine dans quel canal on se trouve : stable ou se4XP
    55
        if [ -e "/etc/apt/sources.list.d/se4.list" ]
    56
        then
    57
            # passage en stable
    58
            #sed -i '/bullseye se4XP/s/^d/#d/' /etc/apt/sources.list.d/se4.list
    59
            #sed -i '/bullseye stable/s/^#d/d/' /etc/apt/sources.list.d/se4.list
    60
            # passage en se4XP
    61
            sed -i '/bullseye se4XP/s/^#d/d/' /etc/apt/sources.list.d/se4.list
    62
            sed -i '/bullseye stable/s/^d/#d/' /etc/apt/sources.list.d/se4.list
    63
            test=$(grep '^[^#;]' /etc/apt/sources.list.d/se4.list | awk '{print $4}')
    64
            case "$test" in
    65
                stable)
    66
                    echo "le canal de mise à jour est stable" >> ${temoin}
    67
                ;;
    68
                se4XP)
    69
                    echo "le canal de mise à jour est se4XP" >> ${temoin}
    70
                ;;
    71
                *)
    72
                    echo "canal de mise à jour inconnu : $test" >> ${temoin}
    73
                ;;
    74
            esac
    75
        fi
    76
    }
    77
    78
    en_silence()
    79
    {
    80
        # rendre non interractive la mise à jour pour cette session
    81
        export DEBIAN_FRONTEND=noninteractive
    82
        echo "on a rendu non-interractive la mise à jour" >> ${temoin}
    83
    }
    84
    85
    ramasser_miettes()
    86
    {
    87
        # on termine une éventuelle mise à jour précédente inachevée pour une quelconque raison
    88
        # cas de paquets dépaquetés mais non configurés
    89
        dpkg --configure -a
    90
        echo "on a ramassé les éventuelles miettes..." >> ${temoin}
    91
    }
    92
    93
    mettre_a_jour()
    94
    {
    95
        # On recharge la liste des paquets puis on met à jour les paquets
    96
        apt-get update && apt-get -y full-upgrade
    97
        echo "on a mis à jour le clinux" >> ${temoin}
    98
    }
    99
    100
    nettoyer()
    101
    {
    102
        # on supprime les paquets obsolètes
    103
        apt -y autoremove
    104
        # on supprime le cache apt
    105
        apt autoclean
    106
        # on nettoie
    107
        apt clean
    108
        echo "on a nettoyé les caches des paquets" >> ${temoin}
    109
    }
    110
    111
    # Programme
    112
    tester_se4
    113
    repertoire_root_temoins
    114
    tester_sources_list
    115
    determiner_canal
    116
    #en_silence
    117
    #ramasser_miettes
    118
    #mettre_a_jour
    119
    nettoyer
  4. Résultat

    Et c'est tout ! La gestion de la mise à jour des Clients Linux est en place au (re-)démarrage du clinux.

    Truc & astuce

    Pour rendre automatique la mise à jour, il suffit de décommenter les 3 lignes en fin du programme, c'est-à-dire supprimer le caractère # au début des 3 lignes :

    en_silence

    ramasser_miettes

    mettre_a_jour

    Exemple

    Pour mettre à jour manuellement un clinux, connectez-vous en root sur ce clinux (voir la partie Actions sur un Client Linux) et lancez la commande suivante :

    apt update && apt full-upgrade