#!/usr/bin/php 3, // php/8.0 'php-pecl-protobuf' => 1, // php-pecl-protobuf/3 'php81-php-pecl-protobuf' => 1, 'php82-php-pecl-protobuf' => 1, 'php83-php-pecl-protobuf' => 1, 'njs' => 99, // njs/0.8.2 'libnjs-devel' => 99, // 'redis' => 3, // redis/6.2 'redis-debuginfo' => 3, // 'redis-debugsource' => 3, // 'redis-devel' => 3, // 'redis-doc' => 3, // 'redis-trib' => 3, // 'redis' => 3, // redis/6.2 'composer' => 1, // composer/2 'phan' => 1, // phan/3 'roundcubemail' => 4, // roundcubemail/1.x. 'remi-release' => 3, // remi-release/8.5 ]; if (isset($_SERVER['argv'][1])) { $keep = (int)$_SERVER['argv'][1]; } if (!$keep) { printf("\nusage %s number [ trash_path ]\n\n", $_SERVER['argv'][0]); die("Number to keep is missing\n"); } if (isset($_SERVER['argv'][2])) { $dest = $_SERVER['argv'][2]; if (!is_dir($dest)) { die("$dest is not a directory\n"); } } $rpms = []; foreach (glob("*.rpm") as $name) { $info = rpminfo($name); $i = $info['Name']; if (isset($multi[$i])) { $i .= "/" . substr($info['Version'], 0, $multi[$i]); } $ver = $info['Version'] . '-' . $info['Release']; if (isset($info['Epoch'])) { $ver = $info['Epoch'] . ':' . $ver; } $rpms[$i][$ver] = $name; } foreach($rpms as $n => $rpm) { if (count($rpm) > $keep) { uksort($rpm, "rpmvercmp"); $i = count($rpm) - $keep; while ($i--) { $name = array_shift($rpm); echo "\t$name\n"; if ($dest) rename($name, "$dest/$name"); } } }