Comment éviter «ne peut pas charger un tel fichier - utils / popen» à partir de homebrew sur OSX

327

Je reçois une erreur lorsque je cours brewdans le terminal:

 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- utils/popen (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/utils.rb:6:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:9:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:16:in `<main>'

Ce sont mes paramètres de gemme:

- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) [universal.x86_64-darwin13]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - universal-darwin-13
- GEM PATHS:
  - /Library/Ruby/Gems/2.0.0
  - /Users/ronaldkwan/.gem/ruby/2.0.0
  - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
  - :update_sources => true
  - :verbose => true
  - :backtrace => false
  - :bulk_threshold => 1000
Kerokero
la source
1
Pouvez-vous ajouter des informations? Quelle commande avez-vous exécutée exactement?
Unihedron
je viens de taper "brew" en unix
kerokero
Que se passe-t-il lorsque vous courez brew doctor?
grenierm5
même erreur. voici mes paramètres env gem
kerokero
Il semble que votre installation Ruby soit incomplète. Essayez de réinstaller ou d'utiliser une autre installation ruby.
gorootde

Réponses:

803

Le problème se produit principalement après la mise à jour d'OS X vers El Capitan (OS X 10.11) ou macOS Sierra (macOS 10.12).

Cela est dû à des problèmes d'autorisation de fichier avec le nouveau processus SIP d'El Capitan ou d'une version ultérieure de macOS . Essayez de modifier les autorisations pour le /usr/localrépertoire:

$ sudo chown -R $(whoami):admin /usr/local  

Si cela ne fonctionne toujours pas, utilisez ces étapes dans une session de terminal et tout ira bien:

cd /usr/local/Library/Homebrew  
git reset --hard  
git clean -df
brew update

Cela peut être dû au fait que l'homebrew n'est pas mis à jour.

Vineet Kapoor
la source
39
J'ai eu le problème causé par la mise à jour d'El Capitan. Cela a résolu le problème. Merci.
Vivek
4
Même chose ici, la mise à niveau vers El Capitan l'a cassé, j'ai d'abord dû réinitialiser les autorisations, puis exécuter les commandes git et la mise à jour de brew a fonctionné. Merci.
Bob
4
C'est la bonne réponse si vous rencontrez ce problème après la mise à niveau vers El Capitan :)
chemic
3
Eu ce problème après la mise à niveau vers macOS Sierra . Cela l'a résolu, merci! Cependant, la modification des autorisations sur /usr/localne semble pas être nécessaire maintenant. "Homebrew n'a plus besoin d'avoir la propriété de / usr / local. Si vous le souhaitez, vous pouvez revenir /usr/localà sa propriété par défaut avec: sudo chown root:wheel /usr/local"
Bert
5
La deuxième méthode a fonctionné pour moi. J'avais juste besoin de trouver où se trouvait le HOMEBREWrépertoire. Dans mon cas:/usr/local/Library/Homebrew
Alexander
378

Tout d'abord, ouvrez une session de terminal et exécutez:

cd /usr/local/
git status

pour voir si Homebrew est propre.

S'il est sale, lancez:

git reset --hard && git clean -df

puis

brew doctor
brew update

S'il est toujours cassé, essayez ceci dans votre session:

sudo rm /System/Library/Frameworks/Ruby.framework/Versions/Current
sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/1.8 /System/Library/Frameworks/Ruby.framework/Versions/Current

Cela forcera Homebrew à utiliser Ruby 1.8 à partir de l'installation du système.

richarddong
la source
7
Probablement une bonne réponse, mais BTW, j'obtiens d'autres erreurs lors de l'exécution des deux commandes (je mentionne que personne ne veut couvrir ce scénario supplémentaire): - rm: /System/Library/Frameworks/Ruby.framework/Versions/Current: Opération non autorisée
PandaWood
4
J'ai simplement réinstallé homebrew avec une nouvelle version et il a commencé à fonctionner. Vérifiez la page d'accueil de homebrew avec le lien pour installer, et lorsque vous l'essayez, il se plaindra que homebrew est déjà installé et vous apprendra comment désinstaller.
pertz
La désinstallation / réinstallation a donc permis à Homebrew de fonctionner à nouveau pour moi. Il a également supprimé tout ce qu'il avait installé, jetant essentiellement mon système. Ce n'est donc pas une excellente solution.
Evan Knowles
Si vous rencontrez des erreurs avec ruby ​​et que vous utilisez RVM, essayez d'émettre rvm use systempour vous assurer que vous utilisez le ruby ​​de Mac OS X lors de l'exécutionbrew update
DavidJ
Notez que le Ruby par défaut sur les versions récentes d'OS X est 2.0, pas 1.8.
bfontaine
82

Désinstaller homebrew:

 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

Réinstallez ensuite

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Avertissement: ce script supprimera: / Library / Caches / Homebrew / - thks benjaminsila

odemolliens
la source
1
Je lance une désinstallation de Homebrew puis une réinstallation. Correction du problème. @OsTa ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )" Avertissement: ce script supprimera: / Library / Caches / Homebrew /
BenJaminSila
3
Une sorte d'approche au fusil de chasse, mais cela a fonctionné plus facilement que d'essayer de gérer les autorisations de fichiers ...
BenKarl
1
A travaillé pour moi Sur un système mis à niveau vers 10.12 (Sierra), après la désinstallation / réinstallation, j'ai pu exécuter «brew doctor» et j'ai suivi les instructions pour résoudre quelques problèmes d'autorisations. Fonctionne bien maintenant
codesponge
Après un crash du disque dur, mon référentiel git sous-jacent a été corrompu et alors que la réinitialisation de git ne fonctionnerait pas, la désinstallation / réinstallation a fonctionné. Cependant, j'ai dû réinstaller tous mes packages installés.
bsumirak
26

Dans mon cas, j'avais juste besoin de supprimer l'exécutable de Homebrew en utilisant:

sudo rm -f `which brew`

Réinstallez ensuite Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Inanc Gumus
la source
2
Au cas où vous seriez coincé après cela dans la boucle d'installation / désinstallation de brew, utilisez le lien suivant - github.com/Homebrew/homebrew/issues/44460
fortm
Avez-vous eu ce message en essayant la 2e commande (ce qui semble être une indication que quelque chose a mal tourné, mais pas une erreur)? - Le contenu actuel de / usr / local sont bin Cave CODEOFCONDUCT.md CONTRIBUTING.md etc git cadres comprennent lib bibliothèque LICENSE.txt opt Qt4.7 README.md part SUPPORTERS.md var .git .gitignore
PandaWood
@PandaWood non, je ne l'ai pas fait. quel est le contenu du message d'erreur que vous décrivez avec «ce message» dans votre commentaire?
Inanc Gumus
@deeperx Tout après le "-". En fin de compte, j'ai dû désinstaller le brassage et réinstaller à nouveau
PandaWood
@PandaWood Utilisez-vous des virgules correctes? Pouvez-vous copier-coller ici directement?
Inanc Gumus
24

Après la mise à jour vers El Capitan, /usr/locala des root:wheeldroits.

Modifiez les droits de l'utilisateur en utilisant:

sudo chown -R $(whoami):admin /usr/local

et:

brew doctor && brew update

Cela m'a aidé à faire fonctionner Homebrew à nouveau.

Josef Rysanek
la source
2
n'est-ce pas assez dangereux?
FRAGA
Les autorisations /usr/localont été modifiées dans le système d'exploitation pour des raisons de sécurité - donc, ce n'est pas parce que vous avez "renvoyé les droits comme avant" que c'est une bonne chose à faire.
leanne
8

J'ai d'abord exécuté:

sudo chown -R $(whoami):admin /usr/local

Ensuite:

cd $(brew --prefix) && git fetch origin && git reset --hard origin/master
d0ping
la source
1
Pour info, mon installation Homebrew était à /usr/local/Homebrew/donc je devais l'utiliser cd $(brew --prefix)/Homebrew.
Joshua Pinter
3

Ce problème devrait être résolu dans la dernière version de Homebrew. Essayez de le réinstaller, ce qui est décrit sur la page d'accueil de Homebrew .

Fred
la source
1

Pour moi, il me semble qu'il manque des fichiers d'en-tête pour popen, qui est une bibliothèque système C.

Vérifiez si vous avez installé xcode avec succès avec les outils de ligne de commande et avez accepté la licence.

Voir ce fil pour plus d'informations: Comment installer les outils de ligne de commande Xcode

Dennis
la source
0

Pour restaurer votre configuration Homebrew, essayez ceci:

cd /usr/local/Homebrew/Library && git stash && git clean -d -f && git reset --hard && git pull
mrded
la source