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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(compatibilità con Stretch)
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}}
__TOC__
 
{{Box|Nota|Per chi vuole evitare inutili complicazioni, è possibile utilizzare il [[pacchetto]] "update-notifier-kde".}}


== Introduzione ==
== Introduzione ==
Scrivo questa breve guida per chi, come me, esegue più volte al giorno il comando:
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 [http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs Kdialog]:
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=`aptitude search ~U | wc -l`
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>'''aptitude search ~U'''</code>: fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati;
; <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>'''wc -l'''</code>: prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati;
 
; <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 [[APT|apt]] a partire dalla 1.0, attualmente presenti in [[Jessie]], [[Sid]] e [[experimental]], i pacchetti da installare possono essere visualizzati con il comando:<pre>$ apt list --upgradable</pre>Pertanto, per chi non vuole ricorrere ad [[aptitude]], nello script precedente bisogna sostituire la riga:<pre>NUM=`aptitude search ~U | wc -l`</pre>con la riga:<pre>NUM=$((`apt list --upgradable 2>/dev/null | wc -l` - 1))</pre>La soppressione dell'output di errore e il decremento di uno del numero di pacchetti si rende necessario in quanto il comando, da poco introdotto, avverte l'utente di possibili problemi nel suo utilizzo all'interno di script.}}
{{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 ==
*[http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs Kdialog]
[1] [http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs Kdialog]<br/>
*[http://manpages.debian.net/cgi-bin/man.cgi?query=crontab&apropos=0&sektion=0&manpath=Debian+squeeze&format=html&locale=en man crontab]
[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/>
*[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]
[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

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