Rilevare gli aggiornamenti upstream

Nessuna risposta
Ritratto di mcortese
mcortese
(Guru)
Offline
Guru
Iscritto: 27/02/2009
Messaggi: 640

In attesa di Debian CUT (Constantly Usable Testing), la mia politica di aggiornamento della testing è sempre stata quella di lanciare periodicamente aptitude, ma limitare l'aggiornamento a quei pacchetti che hanno subìto cambiamenti upstream. Questo si può fare esaminando la versione del pacchetto, che è sempre composta da due campi separati da un trattino.

(versione upstream)-(revisione debian)

Automatizzare il tutto è facile: si tratta di 3 semplici passi.

  1. Chiedere ad aptitude la lista dei pacchetti da aggiornare (search '~U'), con l'indicazione della versione attuale e quella nuova (-F '%p %V %v').
  2. Passare l'output attraverso awk, isolando la versione upstream, sia l'attuale sia la nuova, (split(campo,array,"-")) e filtrando i pacchetti in cui la versione non cambia (if Attuale[1] != Nuova[1] print).
  3. Se è rimasto qualcosa([ -s file ]), aggiornarlo tramite aptitude.

Ed ecco lo script nudo e crudo (omessi controlli ed eccezioni varie, nella versione definitiva occorre assicurarsi di essere root, ecc.).

#!/bin/bash
 
tmp=`tempfile`
 
aptitude search '~U' -F '%p %?V %?v' | \
  awk '{split($2,Attuale,"-");split($3,Nuova,"-"); if (Attuale[1] != Nuova[1]) print $1}' >$tmp
 
[ -s $tmp ] && aptitude install $(<$tmp)
 
rm $tmp