aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorJack Nagel2012-02-09 17:32:41 -0600
committerMike McQuaid2012-02-10 08:57:11 +0000
commit511598fa3731158a933aee6ee9a6014f339dc283 (patch)
tree26586064c652f3a6ec2d4ea644317ff10bed178d /Library/Homebrew
parent6cfe4b320870b6c12b6c88e4eac483f4e8d22315 (diff)
downloadbrew-511598fa3731158a933aee6ee9a6014f339dc283.tar.bz2
install: unlink old kegs
If a formula makes it all the way to the actual install step, it is safe to unlink the keg before linking; this will prune dead symlinks in the case where a keg was removed with `rm -rf <keg>` but not unlinked with `brew unlink`. Fixes Homebrew/homebrew#10077. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/cmd/install.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index 5aa198f31..4260eaac9 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -103,6 +103,10 @@ module Homebrew extend self
begin
fi = FormulaInstaller.new(f)
fi.install
+ # Due to the nature of Keg#unlink, this will remove symlinks from an
+ # older keg, which may still be present if an uninstallation was done
+ # via `rm -rf <keg>`; this is desired.
+ Keg.new("#{f.rack}/#{f.version}").unlink
fi.caveats
fi.finish
rescue FormulaAlreadyInstalledError => e