KDE - Notifica degli aggiornamenti sulla systray: differenze tra le versioni
S3v (discussione | contributi) |
S3v (discussione | contributi) mNessun oggetto della modifica |
||
(22 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili| | {{Versioni compatibili| Buster}} | ||
== Introduzione == | == Introduzione == | ||
In questa guida verrà spiegato come ricevere la notifica del numero di pacchetti aggiornabili senza eseguire periodicamente i comandi: | |||
<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 7: | Riga 8: | ||
Servono fondamentalmente tre cose: | 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; | * Uno [[script]] per notificare nella systray gli aggiornamenti eventualmente trovati; | ||
* Un job di | * Un job di Cron che lancia lo script di notifica; | ||
== Cronjob per l'aggiornamento degli indici dei pacchetti e il download == | |||
Con i permessi di [[root]] eseguire il comando: | |||
<pre> | <pre> | ||
# crontab -e | |||
</pre> | </pre> | ||
e inserire le seguenti righe: | |||
<pre> | <pre> | ||
@reboot /usr/bin/apt-get update | 30 15,18,21 * * * /usr/bin/apt -qq update && /usr/bin/apt -qq -d upgrade | ||
@reboot /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade | |||
</pre> | </pre> | ||
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]] e a "upgrade" che può essere sostituito con "dist-upgrade" in base alle proprie esigenze.<br/> | |||
L'opzione "-d" permette il download automatico dei pacchetti in modo tale che questo possa avvenire in background rendendo il successivo aggiornamento del sistema molto più veloce. Rimuovere tale opzione se non si desidera che i pacchetti aggiornabili vengano scaricati, magari perché si vuole soltanto la notifica degli aggiornamenti per poter scegliere successivamente quali installare.<br/> | |||
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. | 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 == | == 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|Kdialog]]. | ||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
NUM= | NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 )) | ||
sleep 60 | |||
if [ $NUM -eq 0 ]; then exit | if [ $NUM -eq 0 ]; then exit | ||
Riga 53: | Riga 43: | ||
; <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> | ; <code>sleep 60</code>: attende sessanta secondi in modo da prevenire eventuali problemi in caso di mancato caricamento del vassoio di sistema prima dei comandi successivi; | ||
; <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; | ||
; <code>'''600'''</code>: numero che esprime, in secondi, il tempo per cui resta attiva la notifica nella systray | ; <code>'''600'''</code>: 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 (<code>~/scripts</code> ad esempio ) chiamandolo ''notifica'' (o in qualche altro modo) e renderlo eseguibile: | In maniera simile a quanto fatto con lo script precedente, salvare il file in una directory della nostra home (<code>~/scripts</code> ad esempio ) chiamandolo ''notifica'' (o in qualche altro modo) e renderlo eseguibile: | ||
<pre>$ chmod +x ~/scripts/notifica</pre> | <pre>$ chmod +x ~/scripts/notifica</pre> | ||
== Job di Cron per lanciare lo script di notifica == | == Job di Cron per lanciare lo script di notifica == | ||
Riga 69: | Riga 57: | ||
che può essere inserito dopo aver eseguito il comando: | che può essere inserito dopo aver eseguito il comando: | ||
<pre>$ crontab -e</pre> | <pre>$ crontab -e</pre> | ||
Nell'esempio indicato, il job di <code>Cron</code> 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 indicato, il job di <code>Cron</code> 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": | ||
<pre> | <pre> | ||
45 15,18,21 * * * ~/scripts/notifica >/dev/null 2>&1 | |||
</pre> | |||
== Notifica all'avvio di una sessione KDE == | == 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.<br/> | Questo passaggio non è fondamentale ma potrebbe rivelarsi utile per gli utenti che volessero ricevere la notifica di aggiornamenti anche all'avvio della loro sessione di KDE.<br/> | ||
La prima cosa da fare è accertarsi, come spiegato nel primo paragrafo, che <code>Cron</code> esegua l'aggiornamento della lista dei pacchetti all'avvio del sistema; quindi eseguire | La prima cosa da fare è accertarsi, come spiegato nel primo paragrafo, che <code>Cron</code> esegua l'aggiornamento della lista dei pacchetti all'avvio del sistema; quindi eseguire un comando simile a: | ||
<pre> | <pre> | ||
$ ln -s /percorso/dello/script/script_di_notifica /home/utente/.kde/Autostart/nome_link | $ ln -s /percorso/dello/script/script_di_notifica /home/utente/.kde/Autostart/nome_link | ||
</pre> | </pre> | ||
che creerà, nella cartella <code>Autostart</code>, un link simbolico <code>nome_link</code> allo script di notifica. In questo modo lo script verrà lanciato all'avvio di KDE.<br/> | che creerà, nella cartella <code>Autostart</code>, un link simbolico <code>nome_link</code> allo script di notifica. In questo modo lo script verrà lanciato all'avvio di KDE.<br/> | ||
In particolare, | In particolare, con lo script chiamato <code>notifica</code> contenuto nella sottodirectory <code>scripts/</code> della propria directory home, il comando diventa: | ||
<pre> | <pre> | ||
$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica | |||
$ ln -s ~/ | |||
</pre> | </pre> | ||
Si noti che le precedenti operazioni (eseguite tramite comandi in console) possono essere sostituite operando direttamente dalle impostazioni di KDE: è infatti sufficiente inserire lo script desiderato andando in "Impostazioni"->"Avvio e Spegnimento"->"Autostart". | |||
== Kdialog == | |||
Questo script utilizza ''KDialog'' per permettere che la notifica di eventuali aggiornamenti appaia nel vassoio di sistema. L'eseguibile ''kdialog'' è presente nel pacchetto: | |||
* '''kde-baseapps-bin''' | |||
oppure nel pacchetto: | |||
* '''kdialog''' | |||
nel caso il precedente pacchetto non fosse installato.<br/> | |||
Si veda anche la documentazione<sup>[[#Documentazione|[1]]]</sup> ufficiale. | |||
== Conclusioni == | == Conclusioni == | ||
Riga 98: | Riga 93: | ||
== 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 | ||
Riga 106: | Riga 101: | ||
}} | }} | ||
[[Categoria: | [[Categoria:KDE]] |
Versione attuale delle 17:01, 28 set 2019
Versioni Compatibili Debian 10 "buster" |
Introduzione
In questa guida verrà spiegato come ricevere la notifica del numero di pacchetti aggiornabili senza eseguire periodicamente i comandi:
# 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;
Cronjob 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 -qq update && /usr/bin/apt -qq -d 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 e a "upgrade" che può essere sostituito con "dist-upgrade" in base alle proprie esigenze.
L'opzione "-d" permette il download automatico dei pacchetti in modo tale che questo possa avvenire in background rendendo il successivo aggiornamento del sistema molto più veloce. Rimuovere tale opzione se non si desidera che i pacchetti aggiornabili vengano scaricati, magari perché si vuole soltanto la notifica degli aggiornamenti per poter scegliere successivamente quali installare.
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.
#!/bin/bash NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 )) sleep 60 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.
sleep 60
- attende sessanta secondi in modo da prevenire eventuali problemi in caso di mancato caricamento del vassoio di sistema prima dei comandi successivi;
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
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 anche 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 un comando simile a:
$ 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, con lo script chiamato notifica
contenuto nella sottodirectory scripts/
della propria directory home, il comando diventa:
$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica
Si noti che le precedenti operazioni (eseguite tramite comandi in console) possono essere sostituite operando direttamente dalle impostazioni di KDE: è infatti sufficiente inserire lo script desiderato andando in "Impostazioni"->"Avvio e Spegnimento"->"Autostart".
Kdialog
Questo script utilizza KDialog per permettere che la notifica di eventuali aggiornamenti appaia nel vassoio di sistema. L'eseguibile kdialog è presente nel pacchetto:
- kde-baseapps-bin
oppure nel pacchetto:
- kdialog
nel caso il precedente pacchetto non fosse installato.
Si veda anche la documentazione[1] ufficiale.
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 |