如何避免OSX上的自制软件“无法加载此类文件-utils / popen”


327

brew在终端中运行时出现错误 :

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

这些是我的宝石设置:

- 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

1
您可以添加信息吗?您究竟运行了什么命令?
Unihedron 2014年

我刚刚在Unix中键入“ brew”
kerokero 2014年

跑步时会发生什么brew doctor
grenierm5 2014年

同样的错误。这是我的环境宝石设置
kerokero

看来您的ruby安装不完整。尝试重新安装或使用其他ruby安装。
gorootde 2014年

Answers:


803

该问题主要发生在将OS X更新为El Capitan(OS X 10.11)或macOS Sierra(macOS 10.12)之后。

这是因为El Capitan或更高版本的macOS的新SIP进程存在文件许可问题。尝试更改/usr/local目录的权限:

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

如果仍然无法使用,请在终端会话中使用以下步骤,一切都会很好:

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

这可能是因为未更新自制软件。


39
我遇到了由El Capitan更新引起的问题。这样就解决了问题。谢谢。
维威克

4
同样在这里,升级到El Capitan破坏了它,我必须先重置权限,然后运行git命令,然后brew更新工作。谢谢。
鲍勃

4
如果您升级到El Capitan后遇到此问题,这是正确的答案:)
chemic

3
升级到macOS Sierra后出现此问题。这样就解决了,谢谢!不过,/usr/local现在似乎不需要更改权限。“ Homebrew不再需要拥有/ usr / local的所有权。如果您愿意,可以使用以下方式返回/usr/local其默认所有权: sudo chown root:wheel /usr/local
Bert 2016年

5
第二种方法对我有用。我只需要查找HOMEBREW目录所在的位置。就我而言:/usr/local/Library/Homebrew
亚历山大

378

首先,打开终端会话并运行:

cd /usr/local/
git status

看自制酒是否干净。

如果脏了,请运行:

git reset --hard && git clean -df

然后

brew doctor
brew update

如果仍然损坏,请在会话中尝试以下操作:

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

这将迫使Homebrew在系统安装中使用Ruby 1.8。


7
可能是一个很好的答案,但是顺便说一句,运行两个命令时,我都会遇到其他错误(我提到万一有人想涵盖这个进一步的情况):-rm:/System/Library/Frameworks/Ruby.framework/Versions/Current:不允许操作
PandaWood '16

4
我只是用新版本重新安装了homebrew,它开始工作。使用安装链接检查homebrew主页,当您尝试它时,它会抱怨homebrew已经安装,并教您如何卸载。
pertz

因此,卸载/重新安装使Homebrew再次为我工作。它还删除了已安装的所有内容,基本上破坏了我的系统。所以不是一个很好的解决方案。
埃文·诺尔斯

如果您在使用ruby时出错,并且正在使用RVM,请尝试发行rvm use system以确保在运行时使用Mac OS X的rubybrew update
DavidJ

请注意,OS X的最新版本上的默认Ruby是2.0,而不是1.8。
bfontaine

82

卸载自制软件:

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

然后重新安装

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

警告:此脚本将删除:/ Library / Caches / Homebrew / -thks benjaminsila


1
我先卸载Homebrew,然后重新安装。解决了该问题。@OsTa ruby​​ -e“ $(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall)”警告:该脚本将删除:/ Library / Caches / Homebrew /
BenJaminSila

3
有点

1
为我工作在升级到10.12(Sierra)的系统上,卸载/重新安装后,我能够运行“ brew doctor”并按照那里的说明解决一些权限问题。现在可以
正常

硬盘崩溃后,我的基础git存储库已损坏,因此虽然git reset无法正常工作,但卸载/重新安装确实有效。但是,我必须重新安装所有已安装的软件包。
bsumirak

26

就我而言,我只需要使用以下方法删除 Homebrew的可执行文件:

sudo rm -f `which brew`

然后重新安装 Homebrew:

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

2
如果您在brew安装/卸载循环中被卡住,请使用以下链接-github.com/Homebrew/homebrew/issues/44460
fortm 2015年

您是否在尝试第二个命令时得到了这种提示(这似乎表明出现了问题,尽管不是错误)?-/ usr / local的当前内容为bin Cellar CODEOFCONDUCT.md CONTRIBUTING.md等框架git include lib Library LICENSE.txt opt Qt4.7 README.md share SUPPORTERS.md var .git .gitignore
PandaWood

@PandaWood不,我没有。您在注释中用“此消息”描述的错误消息的内容是什么?
伊南克·古姆斯

@deeperx“-”之后的所有内容。最后,我必须卸载brew再重新安装
PandaWood '16

@PandaWood您使用正确的逗号吗?您可以直接复制粘贴到这里吗?
伊南克·古姆斯

24

更新为El Capitan后,/usr/local拥有root:wheel权利。

使用以下命令将权限更改回用户:

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

和:

brew doctor && brew update

这帮助我让Homebrew重新工作。


2
这不是很危险吗?
FRAGA

/usr/local出于安全原因,已在OS中更改了权限-因此,仅因为您“像以前一样退还了权限”并不意味着这是一件好事。
leanne

8

首先我执行:

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

然后:

cd $(brew --prefix) && git fetch origin && git reset --hard origin/master

1
仅供参考,我的Homebrew安装位置为,/usr/local/Homebrew/因此我必须使用cd $(brew --prefix)/Homebrew
约书亚·品特

3

最新版本的Homebrew中应解决此问题。尝试重新安装它,这在Homebrew主页上进行了介绍。


1

对我来说,感觉好像缺少popen的头文件,这是C系统库。

检查您是否已经使用命令行工具成功安装了xcode,并接受了许可证。

有关更多信息,请参见此线程:如何安装Xcode命令行工具


0

要还原您的Homebrew设置,请尝试以下操作:

cd /usr/local/Homebrew/Library && git stash && git clean -d -f && git reset --hard && git pull
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.