#1 Le 29/01/2020, à 19:40
- LukePerp
Mise à jour automatique silencieuse incluant PPA
Bonjour,
Je partage ici un lien vers un script que j'utilise depuis un long moment sur plusieurs machines tournant sous LTS. Le script permet de mettre à jour le système, automatiquement, silencieusement, en incluant les PPA et en affichant une petite icône de notification près le l'heure. Il va aussi réparer et nettoyer les paquets, utile si la mise à jour précédente a été interrompue. Je préfère mettre le lien vers le script plutôt que son contenu, pour éviter de le mettre à jour ici si son auteur le modifie.
>>> Lien vers le script sur Github
Les pré-requis sont :
Rendre exécutable le script :
sudo chmod +x /opt/updates.sh
Autoriser son exécutation sans besoin de taper le mot de passe :
sudo visudo -f /etc/sudoers.d/custom
NomDeL'utilisateur ALL=NOPASSWD: /opt/updates.sh
Installer yad pour afficher l'icone :
sudo apt install yad -y
Ajouter son exécutation dans les "Applications au démarrage" des paramètres en ajoutant sudo :
sudo /opt/updates.sh
Le script sera démarré quelques minutes après le démarrage du système, si la machine est branchée au secteur ou si la batterie est bien chargée. Le principe est d'exécuter les commandes suivantes :
sudo apt update ; sudo apt full-upgrade -y # mise à jour en répondant oui par défaut
sudo apt-get install -fy # réparation des paquets si besoin
sudo apt-get autoclean ; sudo apt-get autoremove --purge -y # nettoyage
sudo dpkg --configure -a # réparation musclée si besoin
S'il n'y a rien à réparer, alors les commandes de réparation ne feront rien et ne dégraderont pas le système.
Dernière modification par LukePerp (Le 28/04/2020, à 12:36)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne
#2 Le 30/01/2020, à 09:10
- TheSun
Re : Mise à jour automatique silencieuse incluant PPA
Ton script est intéressant mais tu as oublié quelque chose d'important : Tu ne prend pas du tout en compte les paquets universels !
Il y a beaucoup de personne qui les utilisent (parfois indépendamment de leur volonté) et avec ton script, ils ne seront pas maj.
Tu devrai ajouter une fonction de contrôle pour les 2 principales technologies :
- Si Snap installé (ce qui est le cas pour Ubuntu et les variantes sauf Mint) : faire les maj des snaps
snap refresh
- Si Flatpak installé (ce qui est le cas de Linux Mint notamment) : faire les maj des Flatpak
flatpak update -y
#3 Le 30/01/2020, à 09:27
- grandtoubab
Re : Mise à jour automatique silencieuse incluant PPA
Salut
Avec anacron on peut lancer n'importe quel script chaque jour en le mettant dans /etc/cron.daily et on s'affranchi des histoires de droit root et on reçoit un mail de résultat
Le moment de lancement est défini dans la table /etc/anacrontab
Exemple j'ai choisi de lancer les scripts quotidiens 20 mn après le boot
cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron's entries
# périodicité , quelle minute
0 40 cron.hourly run-parts --report /etc/cron.hourly
1 20 cron.daily run-parts --report /etc/cron.daily
7 30 cron.weekly run-parts --report /etc/cron.weekly
@monthly 50 cron.monthly run-parts --report /etc/cron.monthly
D'autres infos sur mon blog
https://bidouilledebian.wordpress.com/2 … e-insulte/
Dernière modification par grandtoubab (Le 30/01/2020, à 09:45)
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#4 Le 30/01/2020, à 10:11
- LukePerp
Re : Mise à jour automatique silencieuse incluant PPA
Ton script est intéressant mais tu as oublié quelque chose d'important : Tu ne prend pas du tout en compte les paquets universels !
Merci bonne remarque. Est ce que ça gène ces commandes pour snap et flatpak si le script est utilisé avec sudo ?
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne
#5 Le 30/01/2020, à 10:15
- LukePerp
Re : Mise à jour automatique silencieuse incluant PPA
anacron on peut lancer n'importe quel script chaque jour
Ne fonctionne pas si la machine est sur batterie. Il faut donc modifier les paramètres d'anacron pour bypasser ça, ce que je ne veux pas faire.
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne
#6 Le 30/01/2020, à 10:35
- Compte supprimé
Re : Mise à jour automatique silencieuse incluant PPA
Bonjour,
@LukePerp:
Sur mon Pc mate 18.04 LTS, la gestion d'énergie du script est inopérante...
cat /sys/class/power_supply/BAT0/capacity
cat: /sys/class/power_supply/BAT0/capacity: Aucun fichier ou dossier de ce type
Perso j'utilise le paquet Acpi, pour ça (à installer).
On peut faire un truc du genre:
etat_batterie=$(acpi -V|grep Discharging|cut -d "," -f2|sed s/%//)
Dernière modification par Compte supprimé (Le 30/01/2020, à 10:36)
#7 Le 30/01/2020, à 11:54
- LukePerp
Re : Mise à jour automatique silencieuse incluant PPA
Bizarre, ces commandes fonctionnent sur la vingtaine de machine sous 18.04 mate et xubuntu que j'ai configuré, depuis un long moment. Je pense que soit ta machine était branché au secteur, soit tu as mal tapé la commande. Débranche le secteur et donne :
level=$(cat /sys/class/power_supply/BAT0/capacity)
echo "$level"
Cette commande ne gênera pas le process si la machine est sur secteur
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne
#8 Le 30/01/2020, à 12:16
- Compte supprimé
Re : Mise à jour automatique silencieuse incluant PPA
~ jt'écoute :level=$(cat /sys/class/power_supply/BAT0/capacity)
cat: /sys/class/power_supply/BAT0/capacity: Aucun fichier ou dossier de ce type
~ jt'écoute : echo "$level"
~ jt'écoute :
Je pense que soit ta machine était branché au secteur, soit tu as mal tapé la commande
Je te confirme que non.
#9 Le 30/01/2020, à 13:56
- LukePerp
Re : Mise à jour automatique silencieuse incluant PPA
Je suis curieux de comprendre afin d'agir si une prochaine machine sur laquelle j'installe mate aura le même problème. Peux tu essayer avec un live mate 18.04? Merci de confirmer si la machine était sur secteur ou sur batterie.
Dernière modification par LukePerp (Le 30/01/2020, à 13:58)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne
#10 Le 30/01/2020, à 14:38
- bruno
Re : Mise à jour automatique silencieuse incluant PPA
Ça dépend des machines. Ce peut être BAT0 ou BAT1 ou autre chose…
Avec acpi (le paquet doit être installé) :
$ acpi -i
Battery 0: Full, 100%
Battery 0: design capacity 3220 mAh, last full capacity 2643 mAh = 82%
Avec upower :
$ upower -i $(upower -e | grep BAT)
native-path: BAT1
vendor: LGC
model: AC14B8K
serial: 39442
power supply: yes
updated: jeu. 30 janv. 2020 14:35:02 CET (83 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: fully-charged
warning-level: none
energy: 40,1736 Wh
energy-empty: 0 Wh
energy-full: 40,1736 Wh
energy-full-design: 48,944 Wh
energy-rate: 0 W
voltage: 16,782 V
percentage: 100%
capacity: 82,0807%
technology: lithium-ion
icon-name: 'battery-full-charged-symbolic'
#11 Le 30/01/2020, à 14:42
- Compte supprimé
Re : Mise à jour automatique silencieuse incluant PPA
Ça dépend des machines. Ce peut être BAT0 ou BAT1 ou autre chose…
En effet, après vérification, chez moi c'est BAT1 .
#12 Le 30/01/2020, à 14:46
- bruno
Re : Mise à jour automatique silencieuse incluant PPA
Sinon :
cat $(find /sys/class/power_supply/BAT*/capacity)
mais pas sûr que cela fonctionne à tous les coups…
EDIT : il est même certain que cela va foirer si le portable a deux batteries
De manière générale, quand on veut agir sur un fichier dans un script, il vaut mieux s'assurer avant que le fichier existe.
Dernière modification par bruno (Le 30/01/2020, à 14:54)
#13 Le 30/01/2020, à 14:59
- bruno
Re : Mise à jour automatique silencieuse incluant PPA
En dehors de ces considérations, que se passe-t-il avec ton script si la mise à jour bloque à cause d'un conflit de paquets ?
Que se passe-t-il si lors de la mise à jour, l'installation d'un paquet pose une question à laquelle on doit répondre ?
#14 Le 30/01/2020, à 15:49
- grandtoubab
Re : Mise à jour automatique silencieuse incluant PPA
En dehors de ces considérations, que se passe-t-il avec ton script si la mise à jour bloque à cause d'un conflit de paquets ?
Que se passe-t-il si lors de la mise à jour, l'installation d'un paquet pose une question à laquelle on doit répondre ?
Debian et apt sont prévus pour les scripts
une info à initialiser dans le script
export DEBIAN_FRONTEND=noninteractive
ensuite écrire la commande avec y
exemple
apt full-upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
quelques infos
https://debian-handbook.info/browse/fr- … rades.html
Jamais de soucis quand on utilise des sources de logiciels de bon aloi
Dernière modification par grandtoubab (Le 30/01/2020, à 15:51)
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#15 Le 30/01/2020, à 17:15
- bruno
Re : Mise à jour automatique silencieuse incluant PPA
Bien vu, mais ces options ne sont pas dans le script proposé.
D'autre part le script est présenter comme « incluant les PPA ». Et c'est en utilisant des PPA qu'on a le plus de chances de voir apparaître un conflit de paquet.
Et forcer la conservation de l'ancien fichier de configuration n'est pas forcément la meilleure option, même si cela fonctionne dans la plupart des cas.
#16 Le 30/01/2020, à 19:16
- LukePerp
Re : Mise à jour automatique silencieuse incluant PPA
En dehors de ces considérations, que se passe-t-il avec ton script si la mise à jour bloque à cause d'un conflit de paquets ? Que se passe-t-il si lors de la mise à jour, l'installation d'un paquet pose une question à laquelle on doit répondre ?
Faut bien voir le script comme un processus en cycle, qui est exécuté à chaque démarrage. apt full-upgrade -y réponds par défaut oui et ne bloquera pas le processus, même si la réponse oui laissera un conflit de paquet. Quoiqu'il arrive, le processus continue après full-upgrade. Les commandes suivantes, de nettoyage et réparation, vont justement débloquer le conflit, en répondant oui par défaut. En revanche, dpkg --configure -a peux lui rester vraiment bloqué en cas de conflit supérieur. Sauf qu'il y aura eu des réparations de paquet avant dpkg, et du coup, au cycle suivant, c'est à dire update puis full-upgrade, le processus ne sera plus bloqué. Les résidus de confilt seront ensuite résolus, et ainsi de suite à chaque démarrage. J'utilise ce script depuis un long sur mes deux machines perso. L'icone du panel reste affiché durant le processus mais s'enlève juste avant dpkg. Du coup, si le processus resterai bloqué, l'icone resterai affiché longtemps, ce que je n'ai jamais observé sur mes deux machines. Sur mon desktop, utilisé quotidiennement, l'icone de la mise à jour du script reste affiché moins d'une minute maxi. Avec virtualbox, j'ai testé le script en interrompant brutalement le processus de mises à jour en fermant la machine virtuelle brutalement, afin de créer des conflits de paquet justement. Au cycle suivant, les confilts étaient résolus. Ces tests m'ont motivé à installer par défaut ce script sur toute les machines où j'installe linux.
Heureusement, si les commandes avec BAT0 échouent, cela va exécuter les mises à jour de toute façon car le test est "différent de déchargement"
if [ "${status}" != "Discharging" ]; then
echo "machine sur secteur : OK"
flag="true"
Dernière modification par LukePerp (Le 31/01/2020, à 08:24)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Ethereum user
Hors ligne