KDE - Notifica degli aggiornamenti sulla systray: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Testing_v9}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}}


== Introduzione ==
== Introduzione ==

Versione delle 05:26, 7 giu 2015

Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"
Debian 9 "stretch"

Introduzione

Scrivo questa breve guida per chi, come me, esegue il comando:

# apt-get update && apt-get dist-upgrade

(o equivalente alias contenuto nel file .bashrc di root) alla ricerca di aggiornamenti.
Dopo aver seguito i successivi tre semplici passi, la notifica della presenza di aggiornamenti dei nostri pacchetti sarà visualizzabile direttamente sulla systray, restandoci per un tempo impostabile a piacimento.

Servono fondamentalmente tre cose:

  • Un job di Cron che effettua la risincronizzazione dei file contenenti gli indici dei pacchetti e il download dei pacchetti coinvolti nell'aggiornamento (ma senza installarli);
  • Uno script per notificare nella systray gli aggiornamenti eventualmente trovati;
  • Un job di Cron che lancia lo script di notifica;

Script per l'aggiornamento degli indici dei pacchetti e il download

Con i permessi di root eseguire il comando:

# crontab -e

e inserire le seguenti righe:

30 15,18,21 * * * /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade
@reboot /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade

Verrà eseguito al boot della macchina, e alle 15,30 - 18,30 - 21,30, l'aggiornamento degli indici dei pacchetti e il download dei pacchetti stessi ma senza installarli. Prestare attenzione all'opzione "-qq" che sopprime i messaggi di apt-get e a "dist-upgrade" che può essere sostituito con "upgrade" in base alle proprie esigenze.
Il download automatico dei pacchetti (opzione "-d") permette un successivo aggiornamento del sistema in maniera molto più veloce.

L'aggiunta della riga che inizia con "@reboot" si dimostrerà molto utile, come si vedrà più avanti, nel caso si decidesse di volere la notifica degli aggiornamenti anche all'avvio di una sessione di KDE.

Questa è l'unica parte della guida in cui i comandi vanno dati con i permessi di root; i successivi passi vanno eseguiti attraverso i normali privilegi utente.

Script di notifica nella systray

Lo script che si occupa di far comparire la notifica nella systray fa uso di Kdialog[1].

#!/bin/bash

NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))

if [ $NUM -eq 0 ]; then exit
elif [ $NUM -eq 1 ]; then env DISPLAY=:0 kdialog --passivepopup "È stato trovato un aggiornamento" 600
else env DISPLAY=:0 kdialog --passivepopup "Sono stati trovati $NUM aggiornamenti" 600
fi
exit
NUM
variabile che conterrà il numero di pacchetti aggiornabili;
(apt list --upgradable 2>/dev/null | wc -l) - 1
fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di Cron precedente) dei pacchetti che possono essere aggiornati. La soppressione dell'output di errore e il decremento di uno del numero di pacchetti si rende necessario in quanto il comando avverte l'utente di possibili problemi nel suo utilizzo all'interno di script.
env DISPLAY=:0 kdialog
viene utilizzato il comando env per settare la variabile d'ambiente DISPLAY ed eseguire il comando kdialog;
--passivepopup
parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette;
600
numero che esprime, in secondi, il tempo per cui resta attiva la notifica nella systray;

In maniera simile a quanto fatto con lo script precedente, salvare il file in una directory della nostra home (~/scripts ad esempio ) chiamandolo notifica (o in qualche altro modo) e renderlo eseguibile:

$ chmod +x ~/scripts/notifica
Info.png Nota
Nelle versioni di apt presenti prima di Jessie, i pacchetti da installare devono essere visualizzati attraverso Aptitude. Pertanto bisogna sostituire la riga:
NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))
con la riga
NUM=`aptitude search ~U | wc -l`


Job di Cron per lanciare lo script di notifica

Il job di Cron per lanciare lo script precedente deve essere specificato nel formato di crontab:

30 * * * * ~/scripts/notifica >/dev/null 2>&1

che può essere inserito dopo aver eseguito il comando:

$ crontab -e

Nell'esempio indicato, il job di Cron verrà lanciato ogni ora e quando i minuti valgono 30 (01.30, 02.30, 03.30 e così via). L'intervallo di tempo è liberamente modificabile; nell'esempio successivo lo script viene eseguito pochi minuti dopo il job di root definito nel paragrafo "Script per l'aggiornamento degli indici dei pacchetti e il download":

45 15,18,21 * * * ~/scripts/notifica >/dev/null 2>&1

Notifica all'avvio di una sessione KDE

Questo passaggio non è fondamentale ma potrebbe rivelarsi utile per gli utenti che volessero ricevere la notifica di aggiornamenti all'avvio della loro sessione di KDE.
La prima cosa da fare è accertarsi, come spiegato nel primo paragrafo, che Cron esegua l'aggiornamento della lista dei pacchetti all'avvio del sistema; quindi eseguire il comando:

$ ln -s /percorso/dello/script/script_di_notifica /home/utente/.kde/Autostart/nome_link

che creerà, nella cartella Autostart, un link simbolico nome_link allo script di notifica. In questo modo lo script verrà lanciato all'avvio di KDE.
In particolare, per un utente pippo e con lo script chiamato notifica contenuto in /home/pippo/scripts/, il comando diventa:

$ ln -s /home/pippo/scripts/notifica /home/pippo/.kde/Autostart/notifica

o, più semplicemente:

$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica

Conclusioni

Da questo momento in poi le notifiche degli aggiornamenti compariranno nella nostra systray.
Per aggiornare il sistema sarà comunque necessario dare il comando:

# apt-get upgrade

oppure:

# apt-get dist-upgrade

a seconda delle necessità.

Documentazione

[1] Kdialog
[2] man crontab
[3] man cron




Guida scritta da: S3v Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized