aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/formula_installer.rb17
-rw-r--r--Library/Homebrew/test/cmd/install_spec.rb2
2 files changed, 14 insertions, 5 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index 2153e7671..1d8346f13 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -217,11 +217,20 @@ class FormulaInstaller
# 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?
- # some other version is already installed *and* linked
- raise CannotInstallFormulaError, <<-EOS.undent
- #{formula.name}-#{formula.linked_keg.resolved_path.basename} already installed
- To install this version, first `brew unlink #{formula.name}`
+ message = <<-EOS.undent
+ #{formula.name} #{formula.linked_keg.resolved_path.basename} is already installed
EOS
+ message += if formula.outdated? && !formula.head?
+ <<-EOS.undent
+ To upgrade to #{formula.version}, run `brew upgrade #{formula.name}`
+ EOS
+ else
+ # some other version is already installed *and* linked
+ <<-EOS.undent
+ To install #{formula.version}, first run `brew unlink #{formula.name}`
+ EOS
+ end
+ raise CannotInstallFormulaError, message
end
check_conflicts
diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb
index 034bdd53f..b819c17be 100644
--- a/Library/Homebrew/test/cmd/install_spec.rb
+++ b/Library/Homebrew/test/cmd/install_spec.rb
@@ -77,7 +77,7 @@ describe "brew install", :integration_test do
EOS
expect { brew "install", "testball1" }
- .to output(/first `brew unlink testball1`/).to_stderr
+ .to output(/`brew upgrade testball1`/).to_stderr
.and not_to_output.to_stdout
.and be_a_failure