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.