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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Testing_2015}}
{{Versioni compatibili| Buster}}


== Introduzione ==
== Introduzione ==
Scrivo questa breve guida per chi, come me, esegue il comando:
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 12: Riga 12:
* Un job di Cron che lancia lo script di notifica;
* Un job di Cron che lancia lo script di notifica;


== Script per l'aggiornamento degli indici dei pacchetti e il download==
== Cronjob per l'aggiornamento degli indici dei pacchetti e il download ==
Con i permessi di [[root]] eseguire il comando:
Con i permessi di [[root]] eseguire il comando:
<pre>
<pre>
Riga 19: Riga 19:
e inserire le seguenti righe:
e inserire le seguenti righe:
<pre>
<pre>
30 15,18,21 * * * /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade
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
@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-get]] e a "dist-upgrade" che può essere sostituito con "upgrade" in base alle proprie esigenze.<br/>
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/>
Il download automatico dei pacchetti (opzione "-d") permette un successivo aggiornamento del sistema in maniera molto più veloce.
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.
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.


Riga 30: Riga 29:


== 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 Kdialog<sup>[[#Documentazione|[1]]]</sup>.
Lo script che si occupa di far comparire la notifica nella systray fa uso di [[#Kdialog|Kdialog]].
<pre>#!/bin/bash
<pre>#!/bin/bash


NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))
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 43: Riga 44:
; <code>'''NUM'''</code>: variabile che conterrà il numero di pacchetti aggiornabili;
; <code>'''NUM'''</code>: variabile che conterrà il numero di pacchetti aggiornabili;
; <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>'''(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>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>
{{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 64: Riga 63:


== 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 il comando:
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, per un utente <code>pippo</code> e con lo script chiamato <code>notifica</code> contenuto in <code>/home/pippo/scripts/</code>, il comando diventa:
In particolare, con lo script chiamato <code>notifica</code> contenuto nella sottodirectory <code>scripts/</code> della propria directory home, il comando diventa:
<pre>
$ ln -s /home/pippo/scripts/notifica /home/pippo/.kde/Autostart/notifica
</pre>
o, più semplicemente:
<pre>
<pre>
$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica
$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica
</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 ==

Versione attuale delle 17:01, 28 set 2019

Debian-swirl.png 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 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

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 Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

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