Rationale: it breaks stuff. You should not be able to install over something already installed *and* linked. brew now prompts you to unlink the existing linked keg first.
I came to fix this because I discovered that `brew install foo` works without --force provided foo's formula version is different to that which is installed and linked. I'm not sure if this was intentionally broken, but it led to at least two tickets I found where people were getting crazy issues trying to install over the top of already installed previous versions.
So I also fixed a whole category of other issues, mostly by moving error handling into FormulaInstaller. Now error's can be caught in Homebrew.install and handled on a formula-by-formula basis. I will next port this behaviour to upgrade.
Manpage updated.
The -s switch is "scrub" and removes downloads for uninstall formula which are downloads for the latest version of that formula still.
Please NOTE cache is NOT cleaned if a formula argument is provided. I couldn't be bothered. Patches welcome :)
ClosesHomebrew/homebrew#2923.
If there are multiple dependencies missing, 'brew doctor' can suggest
that you run something like:
brew install autoconf libyaml autoconf, libyaml
This commit improves that output.
ClosesHomebrew/homebrew#10720.
Signed-off-by: Max Howell <max@methylblue.com>
In fixing this I also made it so that ARGV.kegs will return the LinkedKeg if the symlink is set. Which is almost always is. This neatly avoids most multiple-kegs issues.
FixesHomebrew/homebrew#10685.
If a user has set core.autocrlf = true (which shouldn't ever be used on
OS X, but alas...), a subsequent `brew update` will check out files with
CRLF line endings. Setting core.autocrlf = false in Homebrew's repo
config will override this global setting, and let us check out files
with their in-repository line endings.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
The order of things made the check for git in the path pointless (and
was my fault); this is a better way to do it.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
`brew install > file` should not give "export CC=/foo" output on Build Failures.
Also moved the "Using clang" output to brew when BuildError is thrown as that is where it is interesting, and not if you just do `brew --env`.
This reverts commit 21acfc1c7e66babf112196812fdfcf442edf3a97.
This was reverted because we tried to leave /usr/local with root permissions, but
this caused problems for us. Sorry Rogue Amoeba. I'd suggest not installing your
App's tools into /usr/local. It's outside your App's domain, so you can't be sure
what will happen there.
There are still methods and variables with the word "folder" in the
name, but at least user-facing messages and warnings should use the
correct terminology.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Calling Keg#unlink on "#{f.rack}/#{f.version}" will perform the unlink
relative to the _new_ keg, rather than the keg we are upgrading from.
Fix this by resolving the linked_keg entry and unlinking relative to it.
FixesHomebrew/homebrew#10296.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>