require 'rpm' require 'getopts' group='System/Libraries' if ((!getopts('g?h', 'help')) || $OPT_h || $OPT_help) puts "usage: #{$0} [-h] [-g [group]] -h|--help print this help message. -g [group] restrict results to given group or #{group} if none" exit 1 end if($OPT_g) restrict_group = true group = $OPT_g unless $OPT_g==true group = /#{Regexp.quote(group)}/i end db = RPM::DB.new provides={} notleaves={} db.each{ |package| package.provides.each{|provide| begin provides[provide.name].push package.name rescue provides[provide.name]=[package.name] end } if ((!restrict_group) || (group =~ package[RPM::TAG_GROUP])) notleaves[package.name] = false end } db.each{ |package| package.requires.each{|req| if(provides[req.name]) provides[req.name].each{|p| notleaves[p]=true if p!=package.name} end } } leaves=[]; db.each{|package| notleaves[package.name]==false and leaves << package.name} puts leaves.sort.uniq.join("\n")