KDE - Notifica degli aggiornamenti sulla systray: differenze tra le versioni
(inserita categoria (tips&tricks)) |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze 6.0<br/>Debian Sid|}} | |||
=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 più volte al giorno il comando: | ||
<pre># apt-get update && apt-get dist-upgrade</pre> | <pre># apt-get update && apt-get dist-upgrade</pre> | ||
Riga 10: | Riga 11: | ||
* Un job di [[Utilizzo del servizio di scheduling Cron|cron]] che lancia lo script di notifica; | * Un job di [[Utilizzo del servizio di scheduling Cron|cron]] che lancia lo script di notifica; | ||
=Script per l'aggiornamento degli indici dei pacchetti= | |||
Questo script può essere inserito in | Questo script può essere inserito in <code>/etc/cron.hourly</code> per essere lanciato ogni ora; il suo funzionamento è banale: | ||
creare, come utente root, un file contenente le seguenti righe: | creare, come utente root, un file contenente le seguenti righe: | ||
<pre>#!/bin/sh | <pre>#!/bin/sh | ||
apt-get update &>/dev/null</pre> | apt-get update &>/dev/null</pre> | ||
salvare il file in | salvare il file in <code>/etc/cron.hourly</code> e renderlo eseguibile; se ad esempio lo abbiamo chiamato ''aggiorna'': | ||
<pre># chmod +x aggiorna</pre> | <pre># chmod +x aggiorna</pre> | ||
:'''Attenzione:''' A causa del namespace dei caratteri ridotto usato dal comando ''run-parts'' (che si occupa, in | :'''Attenzione:''' A causa del namespace dei caratteri ridotto usato dal comando ''run-parts'' (che si occupa, in <code>/etc/crontab</code>, di lanciare gli script), il nome che si può scegliere per gli script inseriti in <code>/etc/cron.hourly</code>, <code>/etc/cron.daily</code>, <code>/etc/cron.weekly</code> e <code>/etc/cron.monthly</code> può contenere solo caratteri che siano lettere maiuscole, lettere minuscole, numeri, trattini( - ) o underscore ( _ ), pena il fallimento del lancio degli script stessi. | ||
Il compito di questo script è soltanto quello di aggiornare la lista degli indici dei pacchetti, senza aggiornare il sistema. L'output e gli eventuali errori del comando ''apt-get update'' vengono soppressi. Per le mie necessità è sufficiente in quanto gli errori sono spesso dovuti all'irraggiungibilità dei | Il compito di questo script è soltanto quello di aggiornare la lista degli indici dei pacchetti, senza aggiornare il sistema. L'output e gli eventuali errori del comando ''apt-get update'' vengono soppressi. Per le mie necessità è sufficiente in quanto gli errori sono spesso dovuti all'irraggiungibilità dei repository, cosa in genere risolta in poco tempo. | ||
Se si vuol far in modo che lo script venga eseguito ad intervalli diversi dall'ora, è possibile inserire un semplice file di testo, contenente un job di cron, nella directory | Se si vuol far in modo che lo script venga eseguito ad intervalli diversi dall'ora, è possibile inserire un semplice file di testo, contenente un job di cron, nella directory <code>/etc/cron.d</code> oppure, in alternativa, inserire il job attraverso il comando: | ||
<pre># crontab -e</pre> | <pre># crontab -e</pre> | ||
In entrambi i casi il formato da utilizzare è quello di [[Utilizzo del servizio di scheduling Cron#Crontab_Command_settings|crontab]].<br/> | In entrambi i casi il formato da utilizzare è quello di [[Utilizzo del servizio di scheduling Cron#Crontab_Command_settings|crontab]].<br/> | ||
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= | |||
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:link | 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:link Kdialog]: | ||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
Riga 42: | Riga 43: | ||
: '''aptitude search ~U''' fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati; | : '''aptitude search ~U''' fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati; | ||
: '''wc -l''' prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati; | : '''wc -l''' prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati; | ||
: '''--display :0''' parametro che indica a | : '''--display :0''' parametro che indica a Kdialog di utilizzare il nostro server grafico; | ||
: '''--passivepopup''' parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette; | : '''--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; | : '''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 ( | 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= | |||
Il job di cron per lanciare lo script precedente deve essere specificato nel formato di crontab: | Il job di cron per lanciare lo script precedente deve essere specificato nel formato di crontab: | ||
<pre>30 * * * * ~/scripts/notifica >/dev/null 2>&1</pre> | <pre>30 * * * * ~/scripts/notifica >/dev/null 2>&1</pre> | ||
Riga 57: | Riga 58: | ||
<pre>*/10 * * * * ~/scripts/notifica >/dev/null 2>&1</pre> | <pre>*/10 * * * * ~/scripts/notifica >/dev/null 2>&1</pre> | ||
=Conclusioni= | |||
Da questo momento in poi le notifiche degli aggiornamenti compariranno nella nostra systray. | Da questo momento in poi le notifiche degli aggiornamenti compariranno nella nostra systray. | ||
Per aggiornare il sistema sarà comunque necessario dare il comando: | Per aggiornare il sistema sarà comunque necessario dare il comando: | ||
Riga 66: | Riga 67: | ||
a seconda delle necessità. | a seconda delle necessità. | ||
=Documentazione= | |||
*[http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs:link Kdialog] | *[http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs:link Kdialog] | ||
*[http://manpages.debian.net/cgi-bin/man.cgi?query=crontab&sektion=5&apropos=0&manpath=Debian+5.0+lenny&locale=:link man crontab] | *[http://manpages.debian.net/cgi-bin/man.cgi?query=crontab&sektion=5&apropos=0&manpath=Debian+5.0+lenny&locale=:link man crontab] |
Versione delle 18:45, 10 gen 2010
Versioni Compatibili ERRORE: valore non valido ( Debian Lenny 5.0 Debian Squeeze 6.0 Debian Sid )! Vedi qui. |
Introduzione
Scrivo questa breve guida per chi, come me, esegue più volte al giorno 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:
- Uno script che effettua la risincronizzazione dei file contenenti gli indici dei pacchetti;
- 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
Questo script può essere inserito in /etc/cron.hourly
per essere lanciato ogni ora; il suo funzionamento è banale:
creare, come utente root, un file contenente le seguenti righe:
#!/bin/sh apt-get update &>/dev/null
salvare il file in /etc/cron.hourly
e renderlo eseguibile; se ad esempio lo abbiamo chiamato aggiorna:
# chmod +x aggiorna
- Attenzione: A causa del namespace dei caratteri ridotto usato dal comando run-parts (che si occupa, in
/etc/crontab
, di lanciare gli script), il nome che si può scegliere per gli script inseriti in/etc/cron.hourly
,/etc/cron.daily
,/etc/cron.weekly
e/etc/cron.monthly
può contenere solo caratteri che siano lettere maiuscole, lettere minuscole, numeri, trattini( - ) o underscore ( _ ), pena il fallimento del lancio degli script stessi.
Il compito di questo script è soltanto quello di aggiornare la lista degli indici dei pacchetti, senza aggiornare il sistema. L'output e gli eventuali errori del comando apt-get update vengono soppressi. Per le mie necessità è sufficiente in quanto gli errori sono spesso dovuti all'irraggiungibilità dei repository, cosa in genere risolta in poco tempo.
Se si vuol far in modo che lo script venga eseguito ad intervalli diversi dall'ora, è possibile inserire un semplice file di testo, contenente un job di cron, nella directory /etc/cron.d
oppure, in alternativa, inserire il job attraverso il comando:
# crontab -e
In entrambi i casi il formato da utilizzare è quello di crontab.
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=`aptitude search ~U | wc -l` if [ $NUM -eq 0 ]; then exit elif [ $NUM -eq 1 ]; then kdialog --display :0 --passivepopup "Trovato un aggiornamento" 600 else kdialog --display :0 --passivepopup "Trovati $NUM aggiornamenti" 600 fi exit
- NUM variabile che conterrà il numero di pacchetti aggiornabili;
- aptitude search ~U fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati;
- wc -l prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati;
- --display :0 parametro che indica a Kdialog di utilizzare il nostro server grafico;
- --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 dato il comando:
$ crontab -e
Nell'esempio indicato, il job di cron verrà lanciato ogni ora e quando i minuti valgono 30 (1,30h 2,30h 3,30h e così via). L'intervallo di tempo è liberamente modificabile; ad esempio, se si vuol lanciare il job ogni 10 min:
*/10 * * * * ~/scripts/notifica >/dev/null 2>&1
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à.