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
Se connecter sur le SE4FS en root
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/
Déposer le script
startup.linuxfourni ci-après dans le répertoire/etc/sambaedu/applications/maj/script
startup.linux⚓1ladate="$(date +%Y_%m_%d_%Hh%Mmin%Ss)"
2texte_temoin_creation="création du répertoire /root/temoins le ${ladate}"
3texte_temoin_passage="on a utilisé startup.linux pour la mise à jour le ${ladate}"
4temoin=/root/temoins/temoin.maj
5DEPOT_debian="deb.debian.org"
67tester_se4()
8{9# pour éviter de lancer le script sur le se4fs10# 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}
1314repertoire_root_temoins()
15{16# le répertoire servira éventuellement pour un script unefois17#18if [ ! -e "/root/temoins" ]
19then20# il n'existe pas : on le crée21mkdir -p /root/temoins
22# on pose un témoin de création puis de passage23echo "${texte_temoin_creation}" > ${temoin}
24echo "${texte_temoin_passage}" > ${temoin}
25else26# il existe : on pose un témoin de passage27echo "${texte_temoin_passage}" > ${temoin}
28fi29}
3031tester_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 faut35test=$(grep 'fin du sources.list' /etc/apt/sources.list | awk '{print $2 " " $3 " " $4}')
36if [ "$test" != "fin du sources.list" ]
37then38# le /etc/apt/sources.list n'a pas été modifié39echo "le sources.list n'a pas été modifié" >> ${temoin}
40else41echo "le sources.list a été modifié" >> ${temoin}
42fi43# test de l'existence du fichier /etc/apt/sources.list.d/se4.list44if [ ! -e "/etc/apt/sources.list.d/se4.list" ]
45then46echo "le fichier /etc/apt/sources.list.d/se4.list n'existe pas" >> ${temoin}
47else48echo "le fichier /etc/apt/sources.list.d/se4.list existe" >> ${temoin}
49fi50}
5152determiner_canal()
53{54# on détermine dans quel canal on se trouve : stable ou se4XP55if [ -e "/etc/apt/sources.list.d/se4.list" ]
56then57# passage en stable58#sed -i '/bullseye se4XP/s/^d/#d/' /etc/apt/sources.list.d/se4.list59#sed -i '/bullseye stable/s/^#d/d/' /etc/apt/sources.list.d/se4.list60# passage en se4XP61sed -i '/bullseye se4XP/s/^#d/d/' /etc/apt/sources.list.d/se4.list
62sed -i '/bullseye stable/s/^d/#d/' /etc/apt/sources.list.d/se4.list
63test=$(grep '^[^#;]' /etc/apt/sources.list.d/se4.list | awk '{print $4}')
64case "$test" in
65stable)
66echo "le canal de mise à jour est stable" >> ${temoin}
67;;
68se4XP)
69echo "le canal de mise à jour est se4XP" >> ${temoin}
70;;
71*)
72echo "canal de mise à jour inconnu : $test" >> ${temoin}
73;;
74esac75fi76}
7778en_silence()
79{80# rendre non interractive la mise à jour pour cette session81export DEBIAN_FRONTEND=noninteractive
82echo "on a rendu non-interractive la mise à jour" >> ${temoin}
83}
8485ramasser_miettes()
86{87# on termine une éventuelle mise à jour précédente inachevée pour une quelconque raison88# cas de paquets dépaquetés mais non configurés89dpkg --configure -a
90echo "on a ramassé les éventuelles miettes..." >> ${temoin}
91}
9293mettre_a_jour()
94{95# On recharge la liste des paquets puis on met à jour les paquets96apt-get update && apt-get -y full-upgrade97echo "on a mis à jour le clinux" >> ${temoin}
98}
99100nettoyer()
101{102# on supprime les paquets obsolètes103apt -y autoremove104# on supprime le cache apt105apt autoclean
106# on nettoie107apt clean
108echo "on a nettoyé les caches des paquets" >> ${temoin}
109}
110111# Programme112tester_se4
113repertoire_root_temoins
114tester_sources_list
115determiner_canal
116#en_silence117#ramasser_miettes118#mettre_a_jour119nettoyer
- 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