Détecter si une mise jour est nécessaire
Quand on est connecté en mode graphique sur un poste Ubuntu, il y a une icône qui affiche la disponibilité de mise à jour, elle est fournie par update-notify. Cette fonction fournie également l’information si un redémarrage du poste est nécessaire.
Sur un poste qui est géré en mode texte ou à distance, comme un serveur, cette icône n’apparait pas.
Il est possible de lancer la mise à jour sans se poser de question
(sudo apt-get update && sudo apt-get dist-upgrade -y
), ou alors de
détecter la disponibilité de mises à jour et de la lancer. Il faut
ensuite être capable de détecter s’il faut rebooter le poste pour
prendre en compte ces mises à jour.
Les mises à jour
Pour détecter si des mises à jour sont disponibles, il faut vérifier le
contenu du fichier /var/run/updates-available
:
yvon@lutig:/var/run$ cat updates-available
13 packages can be updated.
6 updates are security updates.
Si aucune mise à jour n’est disponible, ce fichier est vide ou n’existe pas. Il est donc possible de décider d’une mise à jour en fonction du nombre de lignes dans ce fichier :
- des mises à jour sont disponibles car il y a 4 lignes dans le fichier
yvon@lutig:/var/run$ cat updates-available
13 packages can be updated.
6 updates are security updates.
yvon@lutig:/var/run$ cat updates-available |wc -l
4
- le système est à jour car il y a une ligne vide dans le fichier
yvon@nanda:/var/run$ cat updates-available
yvon@nanda:/var/run$ cat updates-available |wc -l
1
Détecter la nécessité d’un redémarrage
A la fin d’une mise à jour, si un reboot est requis pour prendre en
compte les modifications (modules, noyau), le système cré le fichier
/var/run/reboot-required
contenant :
yvon@nanda:/var/run$ cat reboot-required
*** Le système doit être redémarré ***
Ce fichier n’existe pas si aucun redémarrage n’est requis.
Utiliser ces informations
Dans mon fichier \$HOME/.bash\_aliases
, j’ai rajouté les 2 fonctions
suivantes :
# Definition des couleurs
GRAY="\033[1;30m"
LIGHT_GRAY="\033[0;37m"
CYAN="\033[0;36m"
LIGHT_CYAN="\033[1;36m"
NORMAL="\033[0m"
VERT="\033[0;32m"
G_VERT="\033[1;32m"
ROUGE="\033[0;31m"
G_ROUGE="\033[1;31m"
ROSE="\033[1;31m"
#------------------------------------------------------------------------------
# Detection d'une maj disponible
maj_dispo() {
Data=`cat /var/run/updates-available |wc -l`
#echo -ne "Nombre de lignes : $Data\n"
if [ $Data -gt 1 ]; then
echo -ne "$G_ROUGE Des mises à jours sont disponibles.\n$NORMAL"
fi
}
# Detecte si une mise à jour impose un reboot pour etre prise en compte
besoin_reboot() {
if [ -f /var/run/reboot-required ] ; then
echo -ne "$G_ROUGE Vous devez redemarrer votre station.\n$NORMAL"
fi
}
Pour activer les mises à jour et avoir l’information de redémarrage, j’utilise l’alias suivant :
alias maj='sudo apt-get update && sudo apt-get dist-upgrade -y && besoin_reboot'