linux user group brescia

immagine del castello

Archivio della mailing list

check-update

Enrico Colombini erix a erix.it
Mer 5 Mar 2003 17:16:47 UTC
Segue mini-script in perl che confronta i pacchetti installati sulla propria 
RedHat con quelli elencati sul mirror indicato (modificare a piacere) e 
produce in output l'elenco delle differenze.

Domandina: quanto ci si puo' fidare dei pacchetti scaricati da un mirror come 
quello di Edisontel? E' meglio verificarli?

  .Erix.

---------------------------------------------------------------------

#!/usr/bin/perl -W
#
# check-update: download list of update rpm packages,
# list packages that could be updated
#
# E.Colombini, 3/2003 
# v 1.0 - public domain


# URL of ftp page containing a list of updates
$updateListPage =
 'ftp://ftp.edisontel.com/pub/RedHat_Mirror/linux/updates/8.0/en/os/i386';

# download the updates list page from the chosen site into $updateList
$updateList = `wget -t 1 -O - $updateListPage/.`;
($? == 0) || die "can't get update list from $updateListPage\n";

# extract a list of package names from the downloaded list to @packages
@packages = ();
while ($updateList =~ m|/([^/]*?\.rpm)|g) {
  push @packages, $1; 
}

# check each package name against the installed version
foreach $pak (@packages) {
  # split package name into (name)-(version+release)
  $pak =~ m|(.+)-(.+?-.+?)\.i\d86|;
  $pkname = $1;
  $pkversion = $2; 
  # if a matching package is installed, get its version
  $instpak = `rpm -q $pkname`;
  if ($? == 0) {
    chomp $instpak;
    $instpak =~ m|(.+)-(.+?-.+)|;
    $instversion = $2;
    # show only packages whose version differs
    if ($pkversion ne $instversion) {
      print("$pkname: $instversion -> $pkversion\n");
    }
  }
}





Maggiori informazioni sulla lista Lug