#!/usr/bin/perl =head1 NAME clean-duplicates - duplicate packages cleaner =head1 SYNOPSIS clean-duplicates [options] Options: -v verbose run -t test run -h print this help message =cut use Youri::Repository::PLF; use Youri::Package::RPM::Test; use Youri::Package::RPM::URPM; use Getopt::Std; use Pod::Usage; use strict; my %opts; getopts('vth', \%opts); pod2usage(-verbose => 0) if $opts{h}; my $root = "$ENV{HOME}/ftp/mandriva"; my $repository = Youri::Repository::PLF->new( install_root => $root ); my $pattern = Youri::Package::RPM::URPM->get_pattern(); foreach my $target (qw/cooker 2006.0 10.2 10.1/) { foreach my $section (qw/free non-free/) { foreach my $arch (qw/i586 x86_64 ppc src/) { my $path = $repository->get_install_path( Youri::Package::RPM::Test->new(tags => { name => 'foo', arch => $arch }), $target, { section => $section } ); foreach my $package ( map { Youri::Package::RPM::URPM->new(file => $_) } $repository->get_files( $root, $path, $pattern ) ) { my @newer = $repository->get_newer_revisions( $package, $target ); if (@newer) { print "$package has newer revisions for target $target\n" if $opts{v}; unlink $package->as_file() unless $opts{t}; } } } } }