错误:无法以 Intel 默认前缀 (/usr/local) 在 ARM 处理器上的 Homebrew 中安装

Pra*_*ams 50 macos homebrew arm macos-big-sur apple-silicon

我使用最新的Apple M1芯片处理器。而且我在应用程序安装时不断收到错误消息。

说。,

brew install openjdk@11
Run Code Online (Sandbox Code Playgroud)
Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
Please create a new installation in /opt/homebrew using one of the
"Alternative Installs" from:
  https://docs.brew.sh/Installation
You can migrate your previously installed formula list with:
  brew bundle dump
Run Code Online (Sandbox Code Playgroud)

需要帮助以了解要遵循的确切步骤。

gan*_*arg 127

在终端中运行它可以解决问题

eval "$(/opt/homebrew/bin/brew shellenv)"

  • 运行此命令后,我可以毫无问题地运行“brew install php” (4认同)
  • + 将该行添加到您的 shell(在我的情况下为 .zshrc)可以防止您每次关闭和打开终端时都必须编写该行 (4认同)
  • 这解决了我运行“$brew doctor”后的问题 (2认同)
  • 这解决了我的问题,出现以下错误:错误:无法在 Intel 默认前缀 (/usr/local) 的 ARM 处理器上安装 Homebrew!请使用 https://docs.brew.sh/Installation 中的“替代安装”之一在 /opt/homebrew 中创建新安装 您可以使用以下命令迁移以前安装的公式列表:brew bundle dump (2认同)
  • 运行此命令后,我能够运行brew install python@3.8 (2认同)

小智 110

值得一提的是,在安装 Homebrew 之前,您需要为新的 ARM 芯片(M1 芯片)安装 Rosetta2 模拟器。我刚刚通过终端安装了 Rosetta2,使用:

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

这将安装 rosetta2,无需点击额外的按钮。

在上面安装 Rosetta2 之后,您可以使用 Homebrew cmd 并为 ARM M1 芯片安装 Homebrew: arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

安装 M1 ARM 的 Homebrew 后,使用此 Homebrew 命令安装软件包: arch -x86_64 brew install <package>

  • 将别名 `alias brew86="arch -x86_64 /usr/local/homebrew/bin/brew"` 添加到您的 `.zshrc` 以方便将来 (21认同)
  • 在执行此命令:“/usr/sbin/softwareupdate --install-rosetta --agree-to-license”之后,我得到“不支持在此系统上安装 Rosetta 2”。 (9认同)
  • 我也面临同样的问题是否有任何其他解决方法“不支持在此系统上安装 Rosetta 2”。 (5认同)
  • 取消选中在终端中运行 Rosetta,它可以安装 Rosetta 2。它对我有用 (5认同)
  • 我遇到错误“不支持在此系统上安装 Rosetta 2。”,并通过执行以下操作解决了该问题: 1. 我之前已将终端设置为“使用 Rosetta 运行”,因此我决定复制它并重命名新应用程序“Rosetta-Terminal”(可选,但如果您需要用 Rosetta 来做其他事情,则很好) 2. 在“终端”的“获取信息”中取消选中“用 Rosetta 运行”。3.退出并重新打开终端...运行命令并且它起作用了 (3认同)

小智 68

只需使用:

arch -arm64 brew install package-name
Run Code Online (Sandbox Code Playgroud)

将“package-name”替换为您要安装的软件包。

  • 它对我不起作用。:( 我收到此错误“错误:无法在 Intel 默认前缀 (/usr/local) 的 ARM 处理器上安装 Homebrew!” (6认同)

dig*_*rms 60

这里的回复中有很多有用的信息,但似乎没有对原始请求的直接答复,“需要遵循具体步骤的帮助。

如果它可以帮助人们将来面临这个问题,我将分享我解决该问题所遵循的确切步骤。

以下 CLI 命令旨在在配备 Apple 芯片的 Mac 上运行 macOS 默认 shell Zsh 的内置终端应用程序中运行:

  1. 运行 Homebrew 命令以确认是否出现如下错误:

    $ brew install <formula>
    
    Run Code Online (Sandbox Code Playgroud)
    Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
    Please create a new installation in /opt/homebrew using one of the
    "Alternative Installs" from:
      https://docs.brew.sh/Installation
    
    Run Code Online (Sandbox Code Playgroud)

    或者:

    $ brew doctor
    
    Run Code Online (Sandbox Code Playgroud)
    Warning: Your Homebrew's prefix is not /opt/homebrew.
    Some of Homebrew's bottles (binary packages) can only be used with the default
    prefix (/opt/homebrew).
    You will encounter build failures with some formulae.
    
    Run Code Online (Sandbox Code Playgroud)

    如果出现这些错误之一,则以下步骤可能适用于您的情况。

  2. 导航到/opt文件夹:

    $ cd /opt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个名为 的文件夹homebrew。默认情况下,需要超级用户权限才能在文件夹内写入/opt,这意味着需要使用sudo

    $ sudo mkdir homebrew
    
    Run Code Online (Sandbox Code Playgroud)
  4. 授予对该homebrew文件夹的写入权限,以便您的用户可以执行 Homebrew 安装:

    $ sudo chmod go+w homebrew
    
    Run Code Online (Sandbox Code Playgroud)
  5. 执行“替代安装”页面(步骤 1 中第一条错误消息中提到的页面)上列出的四个步骤:

    1. 安装自制程序:

      $ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
      
      Run Code Online (Sandbox Code Playgroud)
    2. 在当前终端会话中设置 Homebrew 的前缀:

      $ eval "$(homebrew/bin/brew shellenv)"
      
      Run Code Online (Sandbox Code Playgroud)
    3. 更新自制程序:

      $ brew update --force --quiet
      
      Run Code Online (Sandbox Code Playgroud)
    4. 撤销对特定文件夹和文件的写访问权限:

      $ chmod -R go-w "$(brew --prefix)/share/zsh"
      
      Run Code Online (Sandbox Code Playgroud)
  6. 通过将必要的命令添加到 Zsh 的启动文件之一,在将来的终端会话中设置 Homebrew 的前缀。据我所知,.zshrc是此类命令的首选启动文件:

    $ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,如果您的计算机上有任何其他现有终端会话在运行上述命令之前已打开,则在这些会话中仍将取消设置正确的 Homebrew 前缀。

  7. 确认 Homebrew 的前缀现在已正确设置:

    $ type -a brew
    
    Run Code Online (Sandbox Code Playgroud)
    brew is /opt/homebrew/bin/brew
    brew is /usr/local/bin/brew
    
    Run Code Online (Sandbox Code Playgroud)

    或者:

    $ brew doctor
    
    Run Code Online (Sandbox Code Playgroud)
    Your system is ready to brew.
    
    Run Code Online (Sandbox Code Playgroud)

现在应该可以继续正常使用 Homebrew 了。

  • 这确实对我有帮助,但我在按照列出的步骤操作时遇到了一些错误。当运行“brew update --force --quiet”时,在“/opt/homebrew/.git/中初始化空 Git 存储库”之后,下一行是“致命:不在 git 目录中”。[这个答案](/sf/answers/4270115321/)让我认为这是一个权限问题,所以我手动创建了 .git 文件夹。之后看起来它正在工作,但随后它停止了“错误:不应直接调用更新报告!”。尽管如此,在这之后我仍然能够正常使用brew。 (3认同)
  • @KarsaiPéter,如果您运行“brew doctor”或“brew config”,是否报告任何问题?一种想法是未安装 Xcode 命令行工具。`xcode-select -p` 检查是否已安装;`xcode-select --install` 进行安装。另一个想法是[此处建议](https://github.com/Homebrew/discussions/discussions/3315#discussioncomment-2842510):您使用的是管理员帐户吗?或者,如果您的用户是“/opt/homebrew”文件夹的所有者,也许会有帮助?也许尝试“chown -R $USER /opt/homebrew”(如果需要,使用“sudo”),然后重新安装 Homebrew。 (2认同)
  • 这是最好的答案!解释清楚,格式正确,有深度的答案!这个答案应该获得更多选票! (2认同)
  • 这个答案为我节省了可能数小时的手动调试时间。谢谢你! (2认同)

cou*_*nay 30

Homebrew 需要安装在 Apple 芯片的两个位置:/usr/local 用于 rosetta 模拟(英特尔)代码,/opt/homebrew 用于 ARM64。这些有点硬编码,并且 /opt/homebrew 必须用于 ARM 代码,就像今天一样,并且是不可协商的。但是,它很容易安装,您可以按照官方文档上的一般说明进行操作。首先打开 Rosetta shell。

% arch -x86_64 zsh
% cd /usr/local && mkdir homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
Run Code Online (Sandbox Code Playgroud)

稍后,要在 intel 下安装工具,您可以使用 arch 命令 per-command 或打开 zsh 终端,如上所示。

arch -x86_64 /usr/local/homebrew/bin/brew install sometool
Run Code Online (Sandbox Code Playgroud)

对于 ARM 架构,您不需要使用,arch但需要使用 homebrew 命令的完整路径。

/opt/homebrew/bin/brew install sometool
Run Code Online (Sandbox Code Playgroud)

您可以将 brew 命令重命名为 brew86 和 brewARM 之类的名称,以帮助将它们分开。

  • 你怎么知道是否要安装一些东西到86或ARM? (9认同)
  • @indojin 您可以使用 ZSH 别名。通过将 `aliasbrew86="arch -x86_64 /usr/local/homebrew/bin/brew"` 和 `aliasbrewARM="/opt/homebrew/bin/brew"` 添加到您的 `~/.zshrc` 文件中 (7认同)
  • 我也使用了别名。我想知道为什么这不是自制安装的标准...;) (2认同)

man*_*tel 22

新 MacBook Pro M1 芯片存在此问题

错误:无法在 Intel 默认前缀 (/usr/local) 的 ARM 处理器上安装 Homebrew!

要解决,请按照以下步骤操作

步骤1

$ 酿造包转储

第2步

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh )"

Step3 编辑下面的文件

$ vi ~/.bashrc 或 vi ~/.zshrc

编辑上面文件中的以下行

导出 PATH=/opt/homebrew/bin:$PATH

  • 问题在于,最终您将需要使用两个自制版本。答案至少应该指出这种变化的后果......;) (4认同)
  • 支持上面@Martin 的注释。无论您的经历如何,让人们意识到这一点都是件好事。 (3认同)

Rod*_*rry 14

请参阅: https: //docs.brew.sh/Installation

\n

1.克隆自制程序

\n
$ cd /opt\n$ sudo git clone https://github.com/Homebrew/brew homebrew\n
Run Code Online (Sandbox Code Playgroud)\n

2. chown目录

\n
$ sudo chown -R $(whoami):staff /opt/homebrew\n
Run Code Online (Sandbox Code Playgroud)\n

3.暂时更新新的brew shellenv,更多shellenv含义参见man brew

\n
$ eval "$(homebrew/bin/brew shellenv)"\n
Run Code Online (Sandbox Code Playgroud)\n

4.新的酿造更新

\n
$ brew update --force --quiet\n==> Homebrew has enabled anonymous aggregate formula and cask analytics.\nRead the analytics documentation (and how to opt-out) here:\n  https://docs.brew.sh/Analytics\nNo analytics have been recorded yet (nor will be during this `brew` run).\n\n==> Tapping homebrew/core\nCloning into \'/opt/homebrew/Library/Taps/homebrew/homebrew-core\'...\nremote: Enumerating objects: 1265097, done.\nremote: Counting objects: 100% (207/207), done.\nremote: Compressing objects: 100% (97/97), done.\nremote: Total 1265097 (delta 120), reused 192 (delta 110), pack-reused 1264890\nReceiving objects: 100% (1265097/1265097), 517.64 MiB | 3.02 MiB/s, done.\nResolving deltas: 100% (872476/872476), done.\nTapped 3 commands and 6273 formulae (6,616 files, 566.4MB).\n
Run Code Online (Sandbox Code Playgroud)\n

5. 确保删除其他人写入权限

\n
$ chmod -R go-w "$(brew --prefix)/share/zsh"\n
Run Code Online (Sandbox Code Playgroud)\n

6.确认新的brew版本

\n
$ brew --version\nHomebrew 3.6.0\nHomebrew/homebrew-core (git revision 57f5c02ec6a; last commit 2022-09-10)\n
Run Code Online (Sandbox Code Playgroud)\n

7.Brew配置显示

\n
/opt/homebrew on \xee\x82\xa0 stable (93ea8cb2c)  17:17:54\n$ brew config\nHOMEBREW_VERSION: 3.6.0\nORIGIN: https://github.com/Homebrew/brew\nHEAD: 93ea8cb2c40e1ef25f1489b0267526bd47bc8030\nLast commit: 3 days ago\nCore tap ORIGIN: https://github.com/Homebrew/homebrew-core\nCore tap HEAD: 57f5c02ec6af877482ecd8753066d6a277cd3213\nCore tap last commit: 72 minutes ago\nCore tap branch: master\nHOMEBREW_PREFIX: /opt/homebrew\nHOMEBREW_REPOSITORY: /opt/homebrew\nHOMEBREW_CELLAR: /opt/homebrew/Cellar\nHOMEBREW_CASK_OPTS: []\nHOMEBREW_MAKE_JOBS: 10\nHomebrew Ruby: 2.6.8 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby\nCPU: 10-core 64-bit westmere\nClang: 13.1.6 build 1316\nGit: 2.32.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git\nCurl: 7.79.1 => /usr/bin/curl\nmacOS: 12.5.1-x86_64\nCLT: 13.4.0.0.1.1651278267\nXcode: 13.4.1\nRosetta 2: true\n
Run Code Online (Sandbox Code Playgroud)\n

8. 将新的brew shellenv 添加到strart bash shell,例如。~/.zshrc\xe3\x80\x81~/.barshrc

\n
eval "$(/opt/homebrew/bin/brew shellenv)"\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这是从没有安装brew 的地方开始的。OP似乎已经安装了brew并期望它能够工作。如果您已有目录 /opt/homebrew,该怎么办?如何安全地从我描述的状态过渡到 OP 期望的最终状态(在 M1 mac 上安装了brew并正常运行)? (4认同)

Pra*_*ams 12

通过Open using RosettaUtilities文件夹中的终端应用程序中启用选项进行了临时修复。

但是,知道使用本机方式解决此问题的实际解决方案会很棒。

在此处输入图片说明


小智 12

可能这个错误与在 M1/M2 Mac 而不是基于 Intel 的 Mac 上运行 brew 有关,至少在我的情况下是这样。我之前已将 Time Machine 备份从 Intel 恢复到 M2。

根据 Homebrew 文档,默认安装脚本将 Homebrew 安装到/usr/localmacOS Intel 的首选位置和 Apple Silicon 的 /opt/homebrew 位置。

你可以很好地使用这个,因为它对我很有用-

  1. 通过在终端中运行它来重新安装brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 跑步brew bundle dump

你应该善于使用brew


Ali*_*opf 11

Homebrew 现已可用于新的 Apple M1 芯片,网址为https://docs.brew.sh/Installation。该脚本安装在新位置 \xe2\x80\x98/opt/homebrew\xe2\x80\x99 而不是 \xe2\x80\x98/usr/local\xe2\x80\x99 ,这需要您实现几行安装后的脚本,替换您的用户名。您可以从安装中的注释中复制/粘贴。只是不要\xe2\x80\x99t 跳过这些步骤。

\n
==> Next steps:\n- Add Homebrew to your PATH in /Users/[username]/.zprofile:\n    echo \'eval "$(/opt/homebrew/bin/brew [username])"\' >> /Users/[username]/.zprofile\n    eval "$(/opt/homebrew/bin/brew [username])"\n
Run Code Online (Sandbox Code Playgroud)\n

注意:这适用于在新机器上全新安装 Homebrew。如果您已经安装了旧版本的 Homebrew 并使其正常工作,我相信您需要先卸载它 - 或者 - 您可能会发现这是一个更快的解决方法http://blog.wafrat.com/homebrew-on-mac -与-m1/ . 未测试。

\n


cri*_*fan 8

  • 背景
    • 酿造位置/版本
      • 默认=X86= Intel/usr/local
      • M1/M2= arm=苹果硅:/opt/homebrew
  • 已经完成了
    • 安装的罗塞塔
    • x86 酿造
      • arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 解决方案
    • 对于arm=Apple Silicon
      • arch -arm64 /opt/homebrew/bin/brew install package_name
    • 对于x86=Intel
      • arch -x86_64 /usr/local/bin/brew install package_name
  • 优化