2016-01-20 8 views
30

Sul mio MacMini con El Capitan non riesco più a funzionare. Ottengo il seguente errore:Homebrew non preparerà più

/usr/local/Library/Homebrew/config.rb:34:in `initialize': no implicit conversion of nil into String (TypeError) 
    from /usr/local/Library/Homebrew/config.rb:34:in `new' 
    from /usr/local/Library/Homebrew/config.rb:34:in `<top (required)>' 
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /usr/local/Library/Homebrew/global.rb:18:in `<top (required)>' 
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /usr/local/Library/brew.rb:10:in `<main>' 

Le autorizzazioni di/usr/local sono corrette.

Il file config.rb, che non ho cambiato simile a questa:

def cache 
    if ENV["HOMEBREW_CACHE"] 
    Pathname.new(ENV["HOMEBREW_CACHE"]).expand_path 
    else 
    # we do this for historic reasons, however the cache *should* be the same 
    # directory whichever user is used and whatever instance of brew is executed 
    home_cache = Pathname.new("~/Library/Caches/Homebrew").expand_path 
    if home_cache.directory? && home_cache.writable_real? 
     home_cache 
    else 
     Pathname.new("/Library/Caches/Homebrew").extend Module.new { 
     def mkpath 
      unless exist? 
      super 
      chmod 0775 
      end 
     end 
     } 
    end 
    end 
end 

HOMEBREW_CACHE = cache 
undef cache 

# Where brews installed via URL are cached 
HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE+"Formula" 

unless defined? HOMEBREW_BREW_FILE 
    HOMEBREW_BREW_FILE = ENV["HOMEBREW_BREW_FILE"] || which("brew").to_s 
end 

# Where we link under 
HOMEBREW_PREFIX = Pathname.new(ENV["HOMEBREW_PREFIX"]) 

# Where .git is found 
HOMEBREW_REPOSITORY = Pathname.new(ENV["HOMEBREW_REPOSITORY"]) 

HOMEBREW_LIBRARY = Pathname.new(ENV["HOMEBREW_LIBRARY"]) 
HOMEBREW_CONTRIB = HOMEBREW_REPOSITORY/"Library/Contributions" 

# Where we store built products 
HOMEBREW_CELLAR = Pathname.new(ENV["HOMEBREW_CELLAR"]) 

HOMEBREW_LOGS = Pathname.new(ENV["HOMEBREW_LOGS"] || "~/Library/Logs/Homebrew/").expand_path 

HOMEBREW_TEMP = Pathname.new(ENV.fetch("HOMEBREW_TEMP", "/tmp")) 

unless defined? HOMEBREW_LIBRARY_PATH 
    HOMEBREW_LIBRARY_PATH = Pathname.new(__FILE__).realpath.parent.join("Homebrew") 
end 

HOMEBREW_LOAD_PATH = HOMEBREW_LIBRARY_PATH 

Lo stesso errore si verifica con birra, birra medico, aggiornamento birra ecc

Tutte le idee, ciò che potrebbe essere in errore?

+0

Potrebbe modificare la tua domanda con 'più/usr/local/Library/Homebrew/config.rb'? –

risposta

54

Ho avuto lo stesso problema - sembrava essere il risultato di un aggiornamento di birra che non ha potuto completare a causa di problemi di autorizzazioni.

Per prima cosa ho ripristinare il repo all'ultima testa:

cd /usr/local/bin 
git reset --hard HEAD 

poi ho potuto correre:

brew doctor 

che ha trovato problemi di autorizzazioni. La correzione di tali autorizzazioni come da istruzioni mi ha permesso infine di eseguire:

brew update 
+2

Questa era probabilmente la ragione del mio problema. La versione precedente di Sophos incasinato con le autorizzazioni in/usr/local/bin e/usr/local/share. L'aggiornamento delle autorizzazioni con sudo chown -R $ (whoami)/usr/local/bin e .../share non mi ha aiutato. – Arwed

+0

Sì, il mio problema inizia anche con Sophos. E continua a farlo: | – gollyg

+1

È necessario Sophos 9.4 che si trova ancora nello stato Anteprima. – Arwed

0

un po 'sporco, ma ho appena disinstallato e reinstallato homebrew. ATTENZIONE: questo disinstallerà tutti i pacchetti installati brew.

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" 
$ sudo chown -R $USER /usr/local/ 
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
+1

Questo è esattamente quello che dovevo evitare. – Arwed

5

OS X incasina le autorizzazioni con ogni aggiornamento.

Prova questo:

sudo chown -R $(whoami) /usr/local/share/man/man1 

e

sudo chown -R $(whoami) /usr/local/share/man 

e garantire che l'utente corrente (quella in esecuzione brew) dispone dell'autorizzazione per accedere /usr/local.

+1

Nel mio caso non era OSX ma Sophos che ha incasinato le autorizzazioni. Con la versione 9.4.1 hanno risolto il problema. – Arwed

+0

È interessante! Ho Sohpos 9.2.9 e non causa problemi. Anche se la mia non è la versione Home. – Pouria