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.linux
fourni 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 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}
1314repertoire_root_temoins()
15{
16# le répertoire servira éventuellement pour un script unefois
17#
18if [ ! -e "/root/temoins" ]
19then
20# il n'existe pas : on le crée
21mkdir -p /root/temoins
22# on pose un témoin de création puis de passage
23echo "${texte_temoin_creation}" > ${temoin}
24echo "${texte_temoin_passage}" > ${temoin}
25else
26# il existe : on pose un témoin de passage
27echo "${texte_temoin_passage}" > ${temoin}
28fi
29}
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 faut
35test=$(grep 'fin du sources.list' /etc/apt/sources.list | awk '{print $2 " " $3 " " $4}')
36if [ "$test" != "fin du sources.list" ]
37then
38# le /etc/apt/sources.list n'a pas été modifié
39echo "le sources.list n'a pas été modifié" >> ${temoin}
40else
41echo "le sources.list a été modifié" >> ${temoin}
42fi
43# test de l'existence du fichier /etc/apt/sources.list.d/se4.list
44if [ ! -e "/etc/apt/sources.list.d/se4.list" ]
45then
46echo "le fichier /etc/apt/sources.list.d/se4.list n'existe pas" >> ${temoin}
47else
48echo "le fichier /etc/apt/sources.list.d/se4.list existe" >> ${temoin}
49fi
50}
5152determiner_canal()
53{
54# on détermine dans quel canal on se trouve : stable ou se4XP
55if [ -e "/etc/apt/sources.list.d/se4.list" ]
56then
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
61sed -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;;
74esac
75fi
76}
7778en_silence()
79{
80# rendre non interractive la mise à jour pour cette session
81export 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 raison
88# cas de paquets dépaquetés mais non configurés
89dpkg --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 paquets
96apt-get update && apt-get -y full-upgrade
97echo "on a mis à jour le clinux" >> ${temoin}
98}
99100nettoyer()
101{
102# on supprime les paquets obsolètes
103apt -y autoremove
104# on supprime le cache apt
105apt autoclean
106# on nettoie
107apt clean
108echo "on a nettoyé les caches des paquets" >> ${temoin}
109}
110111# Programme
112tester_se4
113repertoire_root_temoins
114tester_sources_list
115determiner_canal
116#en_silence
117#ramasser_miettes
118#mettre_a_jour
119nettoyer
- 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