簡體   English   中英

在 M1 macOS 上安裝 Hive

[英]Installing Hive on M1 macOs

當我嘗試通過自制軟件安裝 Hive 時,它會拋出以下錯誤:

homebrew install hive
Error: openjdk@8: no bottle available!

有沒有人解決過這個問題? 我在谷歌做了一些研究,有人說“這是因為 M1 芯片需要它自己的特殊版本的 OpenJDK”。

最后,我找到了解決方案。 首先,我們需要在 /usr/local 下使用 Rosetta 安裝 Homebrew,然后我們可以嘗試以相同的方式安裝所有內容。

Apple Silicon M1 和類似處理器具有ARMv8.4架構和rosetta2 ,可在 arm64 處理器上啟動本機 amd64 二進制文件。 所以蘋果硅膠可能會啟動幾乎所有為英特爾平台編譯的應用程序(有一些例外,例如,舊版本的 PostgreSQL 不會被 Rosetta2 啟動)。

默認情況下, homebrew會檢測安裝的平台並嘗試找到適合 arm64 的瓶子。 在某些情況下,某些應用程序是沒有瓶子的(例如,您無法在 arm64 上安裝openjdk@8 ,因為沒有瓶子)。 但是您可以安裝,例如 oracle JDK,因為有 arm64 的瓶子(但它會安裝 amd64 二進制文件)。 這是一個相當混亂的情況,不是嗎?

決定是將 homebrew 的第二個副本安裝到/usr/local/homebrew目錄中,並使用命令arch -x86_64以兼容模式啟動它。 您不會使用此命令啟動原始homebrew ,因為它會混合 arm64 和 amd64 二進制文件(如果您需要為兩個平台使用相同的庫,您將做什么?以 libpq 為例)。

所以有一步一步的指南:

  1. 下載自制軟件curl -L https://github.com/Homebrew/brew/tarball/master --output homebrew.tar
  2. 解壓壓縮包到/usr/local/homebrew
  3. chown -R 允許從此文件夾啟動應用程序
  4. 為您的 ~/.zshrc 文件添加別名
# If you come from bash you might have to change your $PATH. # need this for x86_64 brew export PATH=$HOME/bin:/usr/local/bin:$PATH # for intel x86_64 brew alias axbrew='arch -x86_64 /usr/local/homebrew/bin/brew'
  1. 現在啟動新控制台並啟動安裝,例如axbrew install openjdk@8

以相同的方式安裝您需要的其他英特爾二進制文件。 請記住,它將被安裝到/usr/local/homebrew/目錄中 - 如果您想使用其他東西,請隨意填寫以創建符號鏈接。 輕微的缺點 - java_version工具不會在/user/local directory中看到 OpenJDK,但是到/Library/Java/JavaVirtualMachines/的符號鏈接將解決這個問題。

結合 Gleb Yan 的答案和另一個網站的解決方案https://github.com/Homebrew/discussions/discussions/2723 我所做的是

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

然后運行

arch -x86_64 /usr/local/homebrew/bin/brew install openjdk@8

然后

arch -x86_64 /usr/local/homebrew/bin/brew install hive

提醒您機器上的兩個單獨的 Homebrew 層次結構,一個在 /usr/local 下僅適用於 Intel,在 /opt/homebrew 下僅適用於 M1

這個鏈接可能是一個很好的資源,可以完全理解答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM