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
|