diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index b55e686fc4..027343a079 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -344,30 +344,6 @@ class FormulaInstaller Homebrew::Install.perform_build_from_source_checks end - # not in initialize so upgrade can unlink the active keg before calling this - # function but after instantiating this class so that it can avoid having to - # relink the active keg if possible (because it is slow). - if formula.linked_keg.directory? - message = <<~EOS - #{formula.name} #{formula.linked_version} is already installed - EOS - if Homebrew::EnvConfig.no_install_upgrade? && formula.outdated? && !formula.head? - message += <<~EOS - To upgrade to #{formula.pkg_version}, run: - brew upgrade #{formula.full_name} - EOS - elsif only_deps? - message = nil - else - # some other version is already installed *and* linked - message += <<~EOS - To install #{formula.pkg_version}, first run: - brew unlink #{formula.name} - EOS - end - raise CannotInstallFormulaError, message if message - end - # Warn if a more recent version of this formula is available in the tap. begin if formula.pkg_version < (v = Formulary.factory(formula.full_name, force_bottle: force_bottle?).pkg_version) diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index 48f75516d0..4db75301ee 100644 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -270,10 +270,29 @@ module Homebrew verbose: verbose, ) - if !Homebrew::EnvConfig.no_install_upgrade? && f.outdated? && !f.head? - kegs = Upgrade.outdated_kegs(f) - linked_kegs = kegs.select(&:linked?) - Upgrade.print_upgrade_message(f, fi.options) + if f.linked_keg.directory? + if Homebrew::EnvConfig.no_install_upgrade? + message = <<~EOS + #{f.name} #{f.linked_version} is already installed + EOS + message += if f.outdated? && !f.head? + <<~EOS + To upgrade to #{f.pkg_version}, run: + brew upgrade #{f.full_name} + EOS + else + <<~EOS + To install #{f.pkg_version}, first run: + brew unlink #{f.name} + EOS + end + raise CannotInstallFormulaError, message unless only_deps + elsif f.outdated? && !f.head? + puts "#{f.name} #{f.linked_version} is installed but outdated" + kegs = Upgrade.outdated_kegs(f) + linked_kegs = kegs.select(&:linked?) + Upgrade.print_upgrade_message(f, fi.options) + end end fi.prelude