30 votes

Homebrew ne brassera plus

Sur mon MacMini avec El Capitan, je ne peux plus lancer d'infusion. J'obtiens l'erreur suivante:

 /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>'
 

Les autorisations de / usr / local sont correctes.

Le fichier config.rb, que je n'ai pas modifié, ressemble à ceci:

 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
 

La même erreur se produit avec brew, brew doctor, brew update etc.

Des idées, qu'est-ce qui pourrait être faux?

55voto

gollyg Points 511

J'ai eu le même problème - semblait être le résultat d'une mise à jour de brassage qui n'a pas pu se terminer en raison de problèmes d'autorisations.

Je remets d'abord le repo à la dernière tête:

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

Ensuite, je pouvais courir:

 brew doctor
 

Qui a trouvé des problèmes d'autorisations. La fixation de ces autorisations selon les instructions m'a finalement permis d'exécuter:

 brew update
 

6voto

OS X gâche les autorisations à chaque mise à jour.

Essaye ça:

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

et

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

et assurez-vous que l'utilisateur actuel (celui qui exécute brew ) est autorisé à accéder à /usr/local .

2voto

Arwed Points 318

J'ai remplacé le script / usr / local / bin / brew par la nouvelle version que j'ai trouvée sur github. Maintenant, tout va bien à nouveau.

Le dernier fichier, dont, peut être trouvé ici: https://github.com/Homebrew/homebrew/blob/master/bin/brew

0voto

user1985756 Points 1

Un peu sale mais j'ai juste désinstallé homebrew et réinstallé. AVERTISSEMENT: cela désinstallera tous les packages installés par 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)"
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X