diff --git a/client/text_ui.py b/client/text_ui.py index 20dd30a92..5ef51f8cd 100644 --- a/client/text_ui.py +++ b/client/text_ui.py @@ -389,6 +389,12 @@ def upgrade_packages(onlyfetch = False, replay = False, resume = False, # verify that client database idpackage still exist, # validate here before passing removePackage() wrong info remove = [x for x in remove if E_CLIENT.clientDbconn.isIdpackageAvailable(x)] + # Filter out packages installed from unavailable repositories, this is + # mainly required to allow 3rd party packages installation without + # erroneously inform user about unavailability. + remove = [x for x in remove if \ + E_CLIENT.clientDbconn.getInstalledPackageRepository(x) in \ + E_CLIENT.validRepositories] if remove and E_CLIENT.validRepositories and (not onlyfetch): remove = sorted(remove) diff --git a/sulfur/src/sulfur/packages.py b/sulfur/src/sulfur/packages.py index eea042c30..cfa626c21 100644 --- a/sulfur/src/sulfur/packages.py +++ b/sulfur/src/sulfur/packages.py @@ -695,6 +695,12 @@ class EntropyPackages: def _pkg_get_orphans(self): updates, remove, fine, spm_fine = self.Entropy.calculate_updates( critical_updates = False) + # Filter out packages installed from unavailable repositories, this is + # mainly required to allow 3rd party packages installation without + # erroneously inform user about unavailability. + remove = [x for x in remove if \ + self.Entropy.clientDbconn.getInstalledPackageRepository(x) in \ + self.Entropy.validRepositories] return [x for x in map(self.__inst_pkg_setup, remove) if not \ isinstance(x, int)]