diff options
Diffstat (limited to 'urpm/select.pm')
-rw-r--r-- | urpm/select.pm | 18 |
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) = @_; |