Ehhez ugyebár ki kéne deríteni a pacman cache-ből, hogy mely csomagoknak létezik alacsonyabb verziószámú változata a telepítettnél. Íme egy kis perl szkript hozzá.
#!/usr/bin/perl
use strict;
use Text::Tabs;
$tabstop = 30;
my $pkgdir = "/var/cache/pacman/pkg/";
my @pkgfiles = glob "$pkgdir*.fpm";
my %pkgs;
foreach (@pkgfiles) {
m/$pkgdir(.*)-(.+)-(.+)-(.+)\.fpm/;
if($pkgs{$1}) {
# print expand("$1\talso has an older version in fpm: $pkgs{$1}\n");
my $pkginsver = `pacman -Q $1 | awk '{ print \$2; }'`;
if($pkginsver gt "$2-$3") {
print expand("For $1\tyou may use $pkgs{$1}-$4.fpm\n");
# print " instead of the installed $pkginsver";
}
}
$pkgs{$1} = "$1-$2-$3";
}Célszerűnek látszik a kimenetét átirányítani mondjuk a rev fájlba, amit aztán át kell nézni, lévén nem valószínű, hogy mindent vissza szeretnénk állítani, amiből létezik korábbi változat is. Ha már csak azon fpm-ek nevei vannak a fájlban, amit fel kéne tenni, akkor az alábbi egysoros segíthet:
for i in $(cat rev ); do sudo pacman -U /var/cache/pacman/pkg/$i; done
Természetesen jobb, szebb és gyorsabb lenne, ha perlből nem a pacmant, hanem a libalpm-et lehetne hívni, de tudomásom szerint ez a réteg még nem készült el.