#!/usr/bin/perl @ARGV and die "usage: rpm-find-leaves\n"; use rpmtools; $db = rpmtools::db_open(''); rpmtools::db_traverse($db, [ qw(name version release provides requires) ], sub { push @packages, $_[0]; }); rpmtools::db_close($db); foreach my $pkg (@packages) { $l{$pkg->{name}} = 1; push @{$provides{$_}}, $pkg->{name} foreach @{$pkg->{provides} || []}; } foreach my $pkg (@packages) { delete @l{grep { $_ ne $pkg->{name} } @{$provides{$_} || []}} foreach @{$pkg->{requires} || []}; } print "$_\n" foreach sort keys %l;