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

Posted

技术标签:

【中文标题】如何在 M1 Macbook 上的 Rosetta 2 下运行 Homebrew 安装程序【英文标题】:How to run the Homebrew installer under Rosetta 2 on M1 Macbook 【发布时间】:2021-03-01 02:26:26 【问题描述】:

我使用的是 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

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

【问题讨论】:

【参考方案1】:

在 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)"

使用它来安装包:

arch -x86_64 brew install <package>

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

softwareupdate --install-rosetta

【讨论】:

感谢您。让我的开发环境恢复得很好,相当于它。我一直在使用 vagrant 和 virtualbox 运行东西。但 virtualbox 不工作。所以我能够使用自制软件重新创建它。拿起Mac mini M1,它运行得很好。运行凉爽,风扇尚未旋转。不能对我的 2016 MBP i7 说同样的话。它可以工作,但很热且可以听到。 如果这不起作用?当我添加前缀 arch -x86_64 时,单行安装命令失败并显示相同的错误消息(“在 m1 上不受支持”)。任何提示?我似乎是唯一一个有问题的人。另外-尝试使用rosetta(相同)运行终端,是的,我确实安装了rosetta。任何帮助表示赞赏! 好吧,出于预感,我将终端登录 shell 更改为 bash,而不是 big sur(可能是 zsh)中的默认值。然后它起作用了。我只花了 3 天,也许它可以帮助别人:) @flypenguin 你先运行softwareupdate --install-rosetta 了吗?如果是这样,您是否尝试在此之后重新启动终端和/或您的机器?在您这样做之前,macOS 可能无法识别它现在可以运行 x86_64 代码。 我已经在我的新 mac mini m1 上苦苦挣扎了一天左右,以使 php 与 SQL Server 一起工作。这成功了。要为 PHP 安装 SQL Server 扩展,请按照此处的说明进行操作 docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/…,但请确保使用前缀 brew by arch -x86_64。【参考方案2】:

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

抱歉,如果格式关闭,第一次发布解决方案。

【讨论】:

请注意,这将默认Terminal.app总是模拟 Intel CPU。如果您正在过渡并希望所有旧脚本都能正常工作,这可能会很有用,但可能不是您想要的。 我正在尝试在新 Mac 上使用 Rosetta 运行 pod install,但它不起作用。同样的错误。我想知道这是为什么 对此答案的改进(已被广泛讨论)是复制 Terminal.app 并为该副本选择“使用 Rosetta 打开”。使用 Homebrew 的英特尔仿真版本。金子。 macrumors.com/2020/11/18/apple-m1-mac-tidbitsosxdaily.com/2020/11/18/… 这不是我要采用的解决方案,但我确实认为这是一个有用的建议。谢谢你。 :) 我想通了。您必须先安装 Rosetta 2,然后再复制并将其标记为 Open with Rosetta。否则就不行了【参考方案3】:

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

【讨论】:

【参考方案4】:

安装 Rosetta 后,我添加了一个别名,这样我就可以像往常一样使用 brew install &lt;package&gt;

alias brew='arch -x86_64 brew'

我同意其他所有人的观点,因为您需要在原始命令前添加 arch -x86_64,以便考虑包含该别名以帮助任何人将来找到此线程

【讨论】:

为什么不将其别名为 brew,用于英特尔 brew。然后你可以稍后添加 mbrew="arch -arm64 /opt/homebrew/bin/brew" 以获得原生构建? 嗨奈杰尔,我不确定你的意思。你能澄清一下吗?我相信我将其别名为 brew 但您是否建议将别名为 ibrew 以作为英特尔和 arm 之间的区别? 嗨,Echen,请在下面查看我的详细回答。【参考方案5】:

在下面做

/usr/sbin/softwareupdate --install-rosetta --agree-to-license arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 别名 brew='arch -x86_64 brew' brew install azure-cli

现在尝试 az login。你可以走了

【讨论】:

【参考方案6】:

我安装了两个 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'

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

path=( /opt/homebrew/bin /opt/homebrew/opt /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin )

现在我可以试试mbrew searchmbrew install。如果他们工作,我很高兴使用本机程序。例如:

mbrew install ag

如果brew 失败,我会尝试从源代码构建,并使用详细输出,例如

mbrew install -sv rust

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

如果它仍然失败,(并且mbrew install -sv go 导致我出现分段错误)我有两个选择。使用 ibrew searchibrew install 来获取 Intel 版本,或检查详细输出并查找问题相关性。在某些情况下,依赖项上的 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. 

所以请自行决定。

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

    将已安装的 iTerm2.app 应用程序复制到 iRosetta2.app 按 command+I 以获取信息以获取 iRosetta.app,单击 使用 Rosetta2 打开 运行 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

我这样做是为了安装本机 brew,取自 Stack Overflow 和 Homebrew alternative installation site 的其他贡献者,使用 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

编辑

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

2 月 21 日编辑

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

【讨论】:

嗨@nigel。我在这里是 macOS 的新手。什么时候应该使用“arm64”,什么时候应该在“arch”之后使用“arm64e”? 'man arch' 返回 'arm64e' 作为 M1 和 'arm64' 作为默认 arm64。 @FernandoGarcíaRedondo 你的观察很好。我修改了别名并使用 mbrew 重新安装。现在效果更好了,可能是因为 Homebrew 的人做出了改进。 使用 arm native 和 rosetta 的好方法,但是使用 Homebrew 的原因是对我来说很方便;(所以我在等待 brew 可以自行解决架构以切换英特尔 /手臂二进制。【参考方案7】:

您可以更改终端的设置以使用 Rosetta 启动它。 转到您的应用程序/实用程序文件夹,右键单击终端应用程序并选中复选框“使用 Rosetta 打开”

但老实说,我在没有 Rosetta 的情况下安装了 Homebrew。昨天刚刚删除了 x86 版本并安装了一个没有 Rosetta 的新版本。

【讨论】:

【参考方案8】:

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

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

找到您最喜欢的终端,右键单击复制它,然后重命名它以便于识别。在此示例中,我使用 Big Sur 11.2.1 上的默认终端应用程序。

右键单击Terminal Rosetta,然后转到Get Info以选中Open using Rosetta选项。

2。安装自制软件

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

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

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

3。使用自制软件

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

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

brew help

要安装一个包,你可以运行以下命令:

brew install packagename

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

编辑:谢谢大家!投票以帮助其他开发者! Homebrew 3.0.0 现在正式支持 Apple Silicon (https://brew.sh/2021/02/05/homebrew-3.0.0/)

【讨论】:

以上是关于如何在 M1 Macbook 上的 Rosetta 2 下运行 Homebrew 安装程序的主要内容,如果未能解决你的问题,请参考以下文章

macOS:M1 上安装 Rosetta 2

macOS:M1 上安装 Rosetta 2

配备 M1 Max 芯片的新 MacBook Pro 上的 Android Studio?

在 Macbook M1 上的 Xcode 12.4 中构建后,在 iOS 上的 React Native 中找不到 YogaKit.modulemap

M1 mac 上的 Android 平台工具

Xcode 在 M1 MacBook Pro 上引发构建错误