如何在 M1 Macbook 上的 Rosetta 2 下运行 Homebrew 安装程序

Wat*_*son 100 macos homebrew apple-silicon rosetta-2

我在 M1 MacBook 上。这是我尝试安装 Homebrew 时的错误:

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

Homebrew is not (yet) supported on ARM processors!
Rerun the Homebrew installer under Rosetta 2.
If you really know what you are doing and are prepared for a very broken experience you can use another installation option for installing on ARM:
  https://docs.brew.sh/Installation

Run Code Online (Sandbox Code Playgroud)

那么我如何“在 Rosetta 2 下重新运行 Homebrew 安装程序”?

Wat*_*son 113

从 Homebrew github https://github.com/Homebrew/brew/issues/9173 中的开发人员那里得到了答案

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Run Code Online (Sandbox Code Playgroud)

使用它来安装软件包:

arch -x86_64 brew install <package>
Run Code Online (Sandbox Code Playgroud)

如果您尚未安装 Rosetta 2 以在 ARM Mac 上模拟 Intel CPU,您将收到错误消息arch: posix_spawnp: /bin/bash: Bad CPU type in executable。使用以下命令提示 Rosetta 2 安装:

softwareupdate --install-rosetta
Run Code Online (Sandbox Code Playgroud)

  • 我收到错误:``` 错误:无法在 ARM 默认前缀 (/opt/homebrew) 中的 Rosetta 2 下安装!要在 ARM 下重新运行,请使用: arch -arm64 brew install ... 要在 x86_64 下安装,请将 Homebrew 安装到 /usr/local 中。``` 这为我解决了这个问题:`arch -x86_64 /usr/local/Homebrew/bin/brew install node@10` (4认同)
  • 谢谢你。让我的开发环境恢复得很好,相当于它。我一直在使用 vagrant 和 virtualbox 运行东西。但虚拟机不工作。所以我能够使用自制程序重新创建它。拿起 Mac mini M1,它运行得很好。运行凉爽,风扇尚未旋转。但我的 2016 MBP i7 却不能这么说。它可以工作,但是很热并且有声音。 (2认同)
  • @flypenguin 你先运行了“softwareupdate --install-rosetta”吗?如果是这样,您之后是否尝试重新启动终端和/或您的计算机?在您执行此操作之前,macOS 可能无法识别它现在可以运行 x86_64 代码。 (2认同)

Ala*_*eng 49

另一种选择是在 Finder 中进入您的应用程序,选择终端并按 cmd(?)+I 并选中“使用 Rosetta 打开”选项。

对不起,如果格式关闭,第一次发布解决方案。

  • 请注意,这将默认“Terminal.app”_始终_模拟 Intel CPU。如果您正在过渡并希望所有旧脚本都能工作,这可能很有用,但可能不是您想要的。 (15认同)
  • 对此答案的改进(已被广泛报道)是复制 Terminal.app 并为该副本选择“使用 Rosetta 打开”。使用 Homebrew 的 Intel 仿真版本。金子。https://www.macrumors.com/2020/11/18/apple-m1-mac-tidbits/ https://osxdaily.com/2020/11/18/how-run-homebrew-x86-terminal-apple-硅-Mac/ (10认同)

Nig*_*ies 34

我安装了两个 brew 实例,使用 Rosetta2 运行并安装到 /usr/local/bin 的 Intel 版本和本机运行并安装到 /opt/homebrew/bin 的 Arm 版本。现在一切正常,我不必使用 Rosetta 启动 iTerm。

我有这些别名来达到这两个版本。

ibrew='arch -x86_64 /usr/local/bin/brew'
mbrew='arch -arm64e /opt/homebrew/bin/brew'
Run Code Online (Sandbox Code Playgroud)

我首先在我的路径中有本机版本:

path=( /opt/homebrew/bin /opt/homebrew/opt /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin )
Run Code Online (Sandbox Code Playgroud)

现在我可以尝试mbrew searchmbrew install。如果它们有效,我很乐意使用本机程序。例如:

mbrew install ag
Run Code Online (Sandbox Code Playgroud)

如果brew失败,我尝试从源代码构建,并带有详细的输出,例如

mbrew install -sv rust
Run Code Online (Sandbox Code Playgroud)

请注意,这需要一段时间并且可能仍会失败。

如果它仍然失败,(并mbrew install -sv go导致我出现分段错误)我有两个选择。使用ibrew searchibrew install来获取英特尔构建,或检查详细输出并查找问题依赖项。在某些情况下install -s,依赖项足以让本机 brew 工作。

我必须强调,本地 brew 总是打印这个警告

Warning: You are running macOS on a arm64 CPU architecture.
We do not provide support for this (yet).
Reinstall Homebrew under Rosetta 2 until we support it. 
Run Code Online (Sandbox Code Playgroud)

因此,请自行决定继续。

为了完整起见,假设你已经安装了 iTerm2、Rosetta2 和 Xcode 命令行工具,我这样做是为了在 Rosetta 下安装 brew(感谢所有在我之前发布过这个页面的人):

  1. 将已安装的 iTerm2.app 应用程序复制到 iRosetta2.app
  2. 按 command+I获取iRosetta.app 的信息,单击使用 Rosetta2 打开
  3. 运行 iRosetta2 并从https://brew.sh使用此命令

像这样

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)
alias ibrew='arch -x86_64 /usr/local/bin/brew' # put this in ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

我这样做是为了安装原生 brew,从 Stack Overflow 和Homebrew 替代安装站点的其他贡献者那里获取使用 iTerm2 而没有 Open Using Rosetta2

mkdir ~/homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
sudo mv ~/sudo mv homebrew /opt
mbrew='arch -arm64e /opt/homebrew/bin/brew' # for .zshrc
export PATH="/opt/homebrew/bin:/opt/homebrew/opt:$PATH" # also for .zshrc
Run Code Online (Sandbox Code Playgroud)

编辑

时间过去了,我在 Fernando García Redondo 观察之后将架构更改为 arm64e。现在关于不支持 Arm 架构的警告已经消失,Rust 和 Go 安装出现问题并且没有从源代码编译。我认为 Homebrew 的好人在圣诞节期间一直在努力工作。谢谢!

2月21日编辑

Homebrew 团队宣布他们支持 Apple 芯片。所以我想知道我是否可以删除我的别名并只使用 brew 来安装 Apple 芯片。最简洁的答案是不!如果您在没有 arch -x86_64 的情况下从 /usr/local 运行 brew,它会抱怨 /usr/local 被保留为 Intel 默认前缀,并且需要使用 /opt/homebrew。因此,我将保留我的两个别名并首先尝试 mbrew,并且仅在本机 brew 失败时才使用 ibrew。


小智 12

安装 Rosetta 后,我添加了一个别名,以便我可以brew install <package>像往常一样使用。

alias brew='arch -x86_64 brew'

我同意其他人的看法,因为您需要arch -x86_64在原始命令前面添加 ,因此认为包含该别名以帮助将来找到此线程的任何人


Kha*_*war 11

运行 Homebrew 的最简单方法是使用 Rosetta 2。

1. 为 Rosetta 复制您最喜欢的终端

找到你喜欢的终端,右击复制,重命名方便识别。在本示例中,我使用的是 Big Sur 11.2.1 上的默认终端应用程序。

复制终端右键单击选项

复制终端 rosetta m1 自制软件

右键单击“终端 Rosetta”并转到“获取信息”以检查“使用 Rosetta 打开”选项。

在此处输入图片说明

2. 安装 Homebrew

打开 rosetta 终端并运行以下命令:

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

运行此命令将要求您输入密码,然后它会为您提供有关将安装的所有内容以及将创建的新目录的信息。

3. 使用 Homebrew

安装 HomeBrew 后,您可以开始使用它将所需的软件包安装到 M1 Mac 中。

运行以下命令以获取 brew 帮助:

brew help
Run Code Online (Sandbox Code Playgroud)

要安装软件包,您可以运行以下命令:

brew install packagename
Run Code Online (Sandbox Code Playgroud)

这就是在 Apple M1 Mac 上安装和开始使用 Homebrew 的全部内容。


小智 8

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh )" 在我的新 M1 Mac 上工作


小智 6

在下面做

现在尝试az登录。你已准备好出发