[project @ steve@lobefin.net-20090227091206-lez14xlz4om1744m]
authortailor <steve@lobefin.net>
Fri, 27 Feb 2009 09:12:06 +0000 (09:12 +0000)
committertailor <steve@lobefin.net>
Fri, 27 Feb 2009 09:12:06 +0000 (09:12 +0000)
A first pass attempt at making check-packages do the right thing on
machines where packages from the wrong arch are installed.

dsa-nagios-nrpe-config/dsa-check-packages

index ee0027c..b5615e4 100755 (executable)
@@ -77,10 +77,14 @@ sub get_packages {
        my $installed = $pkgs{'ii'};
        delete $pkgs{'ii'};
 
+       open my $olderr, ">&STDERR"   or die "Can't dup STDERR: $!";
+       open     STDERR, ">/dev/null" or die "Can't dup STDOUT: $!";
+
        open (F, "apt-cache policy ".(join(" ", keys(%$installed)))." |") or die ("Cannot run apt-cache policy: $!\n");
        @lines = <F>;
        close(F);
        chomp(@lines);
+       open STDERR, ">&", $olderr  or die "Can't dup OLDERR: $!";
 
        my $line;
        my $pkgname = undef;
@@ -105,6 +109,11 @@ sub get_packages {
        for my $pkgname (keys %$installed) {
                my $pkg = $installed->{$pkgname};
 
+               unless (defined($pkg->{'candidate'})) {
+                        $obsolete{$pkgname} = $pkg;
+                        next;
+              }
+                       
                if ($pkg->{'candidate'} ne $pkg->{'installed'}) {
                        $outofdate{$pkgname} = $pkg;
                        next;