summaryrefslogtreecommitdiffstats
path: root/urpm
diff options
context:
space:
mode:
Diffstat (limited to 'urpm')
-rw-r--r--urpm/select.pm18
1 files changed, 18 insertions, 0 deletions
diff --git a/urpm/select.pm b/urpm/select.pm
index c67f4edc..608540d6 100644
--- a/urpm/select.pm
+++ b/urpm/select.pm
@@ -282,6 +282,24 @@ sub resolve_dependencies {
$need_restart;
}
+sub select_replacepkgs {
+ my ($urpm, $state, $requested) = @_;
+
+ my $db = urpm::db_open_or_die($urpm, $urpm->{root});
+ foreach my $id (keys %$requested) {
+ my @pkgs = $urpm->find_candidate_packages_($id);
+ if (my @installed = grep { URPM::is_package_installed($db, $_) } @pkgs) {
+ foreach my $pkg (@installed) {
+ $urpm->{debug_URPM}("selecting replacepkg " . $pkg->fullname) if $urpm->{debug_URPM};
+ $pkg->set_flag_requested;
+ $state->{selected}{$pkg->id} = undef;
+ }
+ } else {
+ $urpm->{fatal}(1, N("found package(s) %s in urpmi db, but none are installed", join(', ', map { scalar($_->fullname) } @pkgs)));
+ }
+ }
+}
+
sub _priority_upgrade_pkgs {
my ($urpm, $priority_upgrade_string) = @_;