Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

42731783-b51dbdca-8814-11e8-867d-12619cd1365d.png



cycle


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

TheSun a écrit :

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

grandtoubab a écrit :

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

Bruno a écrit :

Ç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 wink

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

bruno a écrit :

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

bruno a écrit :

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