#!/usr/bin/perl
# cpanel - autofixer2/fix_duplicate_cpanel_rpms   Copyright(c) 2014 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

use strict;
use warnings;

my @rpms = `rpm -qa --queryformat '%{INSTALLTIME}\t%{VERSION}\t%{RELEASE}\t%{ARCH}\t%{NAME}\n'`;
my %rpms;
my %rpm_erase;
foreach my $line (@rpms) {
    my ( $time, $version, $release, $arch, $name ) = split( qr/\t/, $line, 5 );
    chomp $name;

    # Only fix cp11## rpms.
    next if ( $release !~ m/cp\d{4}$/ );

    if ( $rpms{$name} ) {
        $rpm_erase{ sprintf( "%s-%s-%s.%s", $name, $rpms{$name}[0], $rpms{$name}[1], $rpms{$name}[2] ) } = 1;
        $rpm_erase{ sprintf( "%s-%s-%s.%s", $name, $version, $release, $arch ) } = 1;
    }
    else {

        # No duplicate found.
        $rpms{$name} = [ $version, $release, $arch ];

    }
}

exit if ( !%rpm_erase );

print "Duplicate RPMs found:\n\n";

my @cmd = ( qw{/bin/rpm -e --nodeps --justdb}, sort { $a cmp $b } keys %rpm_erase );
print "\$> " . join( " ", @cmd ) . "\n";
system(@cmd);

print "\n\$> /usr/local/cpanel/scripts/check_cpanel_rpms --fix\n";
system(qw{/usr/local/cpanel/scripts/check_cpanel_rpms --fix});
