Be more verbose when users insist on being sudoers

If you google for "Cowardly refusing to sudo brew" you get a lot of confused users who didn't read any of the Homebrew documentation and then had a hissy-fit.
This commit is contained in:
Max Howell 2012-08-10 09:33:33 -04:00
parent f5eaef0aee
commit 45b84df1bd
3 changed files with 11 additions and 7 deletions

View File

@ -2,7 +2,7 @@ require 'formula_installer'
require 'hardware'
require 'blacklist'
module Homebrew extend self
module Homebrew extend self
def install
raise FormulaUnspecifiedError if ARGV.named.empty?
@ -15,9 +15,7 @@ module Homebrew extend self
end unless ARGV.force?
if Process.uid.zero? and not File.stat(HOMEBREW_BREW_FILE).uid.zero?
# note we only abort if Homebrew is *not* installed as sudo and the user
# calls brew as root. The fix is to chown brew to root.
abort "Cowardly refusing to `sudo brew install'"
raise "Cowardly refusing to `sudo brew install'\n#{SUDO_BAD_ERRMSG}"
end
install_formulae ARGV.formulae

View File

@ -4,9 +4,7 @@ module Homebrew extend self
raise KegUnspecifiedError if ARGV.named.empty?
if Process.uid.zero? and not File.stat(HOMEBREW_BREW_FILE).uid.zero?
# note we only abort if Homebrew is *not* installed as sudo and the user
# calls brew as root. The fix is to chown brew to root.
abort "Cowardly refusing to `sudo brew link'"
raise "Cowardly refusing to `sudo brew link'\n#{SUDO_BAD_ERRMSG}"
end
if ARGV.force? then mode = :force

View File

@ -179,3 +179,11 @@ class ChecksumMismatchError < RuntimeError
super + advice.to_s
end
end
module Homebrew extend self
SUDO_BAD_ERRMSG = <<-EOS.undent
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.
EOS
end