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

Posted

技术标签:

【中文标题】如何避免在 OSX 上从自制​​软件中“无法加载此类文件 - utils/popen”【英文标题】:How to avoid "cannot load such file -- utils/popen" from homebrew on OSX 【发布时间】:2014-08-30 10:31:27 【问题描述】:

我在终端中运行 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>'

这些是我的 gem 设置:

- 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

【问题讨论】:

可以补充信息吗?你到底运行了什么命令? 我刚刚在 unix 中输入了“brew” 运行brew doctor会发生什么? 同样的错误。这是我的 env gem 设置 看起来您的 ruby​​ 安装不完整。尝试重新安装或使用其他 ruby​​ 安装。 【参考方案1】:

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

cd /usr/local/
git status

查看 Homebrew 是否干净。

如果脏了,运行:

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。

【讨论】:

可能是一个很好的答案,但是顺便说一句,我在运行这两个命令时遇到了其他错误(我提到以防万一有人想进一步介绍这种情况):-rm:/System/Library/Frameworks/Ruby.framework /版本/当前:不允许操作 我只是用新版本重新安装了自制软件,它就开始工作了。查看 homebrew 主页有安装链接,尝试时会提示 homebrew 已安装并教你如何卸载。 所以,卸载/重新安装让 Homebrew 再次为我工作。它还删除了它安装的所有东西,基本上破坏了我的系统。所以不是一个很好的解决方案。 如果您遇到 ruby​​ 错误并且您正在使用 RVM,请尝试发出 rvm use system 以确保您在运行 brew update 时使用 Mac OS X 的 ruby​​ 请注意,最新版本的 OS X 上的默认 Ruby 是 2.0,而不是 1.8。【参考方案2】:

这个问题应该在最新版本的 Homebrew 中得到修复。尝试重新安装它,在Homebrew 主页上进行了描述。

【讨论】:

【参考方案3】:

在我的情况下,我只需要使用 删除 Homebrew 的可执行文件:

sudo rm -f `which brew`

然后重新安装 Homebrew:

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

【讨论】:

如果您在 brew install / uninstall 循环中遇到此问题,请使用以下链接 - github.com/Homebrew/homebrew/issues/44460 您是否在尝试第二个命令时收到此消息(这似乎表明出现问题,但不是错误)? - /usr/local 的当前内容是 bin Cellar CODEOFCONDUCT.md CONTRIBUTING.md etc Frameworks git include lib Library LICENSE.txt opt Qt4.7 README.md share SUPPORTERS.md var .git .gitignore @PandaWood 不,我没有。您在评论中使用“此消息”描述的错误消息的内容是什么? @deeperx “-”之后的所有内容。最后,我不得不卸载 brew 并重新安装 @PandaWood 你使用正确的逗号吗?可以直接复制粘贴到这里吗?【参考方案4】:

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

使用以下方法将权限更改回用户:

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

和:

brew doctor && brew update

这帮助我让 Homebrew 再次工作。

【讨论】:

不是很危险吗? 出于安全原因在操作系统中更改了/usr/local 的权限 - 因此,仅仅因为您“像以前一样返回权利”并不意味着这是一件好事。【参考方案5】:

原答案

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

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

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

如果它仍然不起作用,请在终端会话中使用这些步骤,一切都会好起来的:

cd /usr/local/Homebrew
git reset --hard origin/master
brew update

如果/usr/local/Library/Homebrew 不起作用,请尝试/usr/local/Homebrew。问题可能是 Homebrew 已经过时了。

2021 年 4 月更新

上述命令不适用于 macOS High Sierra 或更高版本,如GitHub issue 中所述。您必须改为运行它:

sudo chown -R $(whoami) $(brew --prefix)/*

【讨论】:

我遇到了由 El Capitan 更新引起的问题。这解决了问题。谢谢。 这里一样,升级到 El Capitan 破坏了它,我必须先重置权限,然后运行 ​​git 命令和 brew update 工作。谢谢。 如果您在升级到 El Capitan 后遇到这个问题,这是正确的答案:) 升级到 macOS Sierra 后出现此问题。这解决了,谢谢!不过,现在似乎不需要更改 /usr/local 的权限。 "Homebrew 不再需要拥有 /usr/local 的所有权。如果您愿意,可以使用以下命令将 /usr/local 恢复为其默认所有权:sudo chown root:wheel /usr/local" 第二种方法对我有用。我只需要找到HOMEBREW 目录所在的位置。就我而言:/usr/local/Library/Homebrew【参考方案6】:

卸载自制软件:

 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

【讨论】:

我卸载了 Homebrew,然后重新安装。修复了问题。 @OsTa ruby​​ -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall)" 警告:此脚本将删除:/Library/Caches/Homebrew/ 有点像霰弹枪的方法,但这比尝试管理文件权限更容易...... 为我工作在升级到 10.12 (Sierra) 的系统上,卸载/重新安装后,我能够运行“brew doctor”并按照那里的说明修复一些权限问题。现在工作正常 硬盘崩溃后,我的底层 git 存储库已损坏,虽然 git reset 无法正常工作,但 un-/reinstalling 可以。但是,我必须重新安装所有已安装的软件包。【参考方案7】:

首先我执行了:

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

然后:

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

【讨论】:

仅供参考,我的 Homebrew 安装在 /usr/local/Homebrew/,所以我不得不使用 cd $(brew --prefix)/Homebrew【参考方案8】:

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

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

有关更多信息,请参阅此主题:How to install Xcode Command Line Tools

【讨论】:

【参考方案9】:

要恢复您的 Homebrew 设置,请尝试以下操作:

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

【讨论】:

以上是关于如何避免在 OSX 上从自制​​软件中“无法加载此类文件 - utils/popen”的主要内容,如果未能解决你的问题,请参考以下文章

自制 Maven 升级后的 OSX Maven 问题

sh [在MAC OSX上配置允许多个用户的自制权限]。管理员组中的任何用户都可以管理自制软件和c

如何在 OSX 上从源代码安装 libDb

OSX自制软件Lua51找不到lua命令

如何将 ntfs-3g 与自制软件链接?

无法通过自制 OSX Yosemite 安装 mcrypt