#!/usr/bin/perl -w use strict; my @pkgs; my %installed; foreach (<*.rpm>) { my $name = rpm_name($_); my $out = `rpm -q $name 2>&1`; chomp $out; if ($out =~ /^package (.+) is not installed$/) { my $pkg = $1; push @pkgs, $pkg; $installed{$pkg} = 0; } elsif ($out =~ /^$name-/) { push @pkgs, $out; $installed{$out} = 1; } else { die "bad line from rpm: $out" } } foreach (sort @pkgs) { if ($installed{$_}) { print "$_\n" } else { print "! $_\n" } } sub rpm_name($) { chomp (my $r = `rpm --queryformat "%{NAME}" -qp $_[0]`); $r; }