KDE - Notifica degli aggiornamenti sulla systray: differenze tra le versioni
S3v (discussione | contributi) m (→Introduzione) |
S3v (discussione | contributi) (compatibilità con Stretch) |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Squeeze|Wheezy|Jessie | {{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}} | ||
== Introduzione == | == Introduzione == | ||
Scrivo questa breve guida per chi, come me, esegue | Scrivo questa breve guida per chi, come me, esegue il comando: | ||
<pre># apt-get update && apt-get dist-upgrade</pre> | <pre># apt-get update && apt-get dist-upgrade</pre> | ||
(o equivalente [[alias]] contenuto nel file <code>.bashrc</code> di root) alla ricerca di aggiornamenti.<br/> | (o equivalente [[alias]] contenuto nel file <code>.bashrc</code> di root) alla ricerca di aggiornamenti.<br/> | ||
Riga 33: | Riga 30: | ||
== Script di notifica nella systray == | == Script di notifica nella systray == | ||
Lo script che si occupa di far comparire la notifica nella systray fa uso di [ | Lo script che si occupa di far comparire la notifica nella systray fa uso di Kdialog<sup>[[#Documentazione|[1]]]</sup>. | ||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
NUM= | NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 )) | ||
if [ $NUM -eq 0 ]; then exit | if [ $NUM -eq 0 ]; then exit | ||
Riga 45: | Riga 42: | ||
; <code>'''NUM'''</code>: variabile che conterrà il numero di pacchetti aggiornabili; | ; <code>'''NUM'''</code>: variabile che conterrà il numero di pacchetti aggiornabili; | ||
; <code>''' | ; <code>'''(apt list --upgradable 2>/dev/null | wc -l) - 1'''</code>: 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. | ||
; <code>'''env DISPLAY=:0 kdialog'''</code>: viene utilizzato il comando <code>env</code> per settare la variabile d'ambiente DISPLAY ed eseguire il comando <code>kdialog</code>; | ; <code>'''env DISPLAY=:0 kdialog'''</code>: viene utilizzato il comando <code>env</code> per settare la variabile d'ambiente DISPLAY ed eseguire il comando <code>kdialog</code>; | ||
; <code>'''--passivepopup'''</code>: parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette; | ; <code>'''--passivepopup'''</code>: parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette; | ||
Riga 54: | Riga 51: | ||
<pre>$ chmod +x ~/scripts/notifica</pre> | <pre>$ chmod +x ~/scripts/notifica</pre> | ||
{{Box|Nota|Nelle versioni di [[ | {{Box|Nota|Nelle versioni di [[apt]] presenti prima di [[Jessie]], i pacchetti da installare devono essere visualizzati attraverso [[Aptitude]]. Pertanto bisogna sostituire la riga:<pre>NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))</pre>con la riga<pre>NUM=`aptitude search ~U | wc -l`</pre>}} | ||
== Job di Cron per lanciare lo script di notifica == | == Job di Cron per lanciare lo script di notifica == | ||
Riga 92: | Riga 89: | ||
== Documentazione == | == Documentazione == | ||
[1] [http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs Kdialog]<br/> | |||
[2] [http://manpages.debian.net/cgi-bin/man.cgi?query=crontab&apropos=0&sektion=0&manpath=Debian+squeeze&format=html&locale=en man crontab]<br/> | |||
[3] [http://manpages.debian.net/cgi-bin/man.cgi?query=cron&apropos=0&sektion=0&manpath=Debian+5.0+lenny&format=html&locale=en man cron]<br/> | |||
{{Autori | {{Autori |
Versione delle 12:09, 19 mag 2015
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 comandokdialog
; --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
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 | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |