移機到 Mac M1 後 git 出現錯誤

使用「系統移轉輔助程式.app」將舊筆電資料從 Mac Intel 轉移到 Mac M1。使用 PhpStorm 跳出錯誤訊息 「Git is not installed xcrun: error: unable to load libxcrun」。解決方法:使用 Homebrew 安裝 git 或者是安裝 Command Line Tools for Xcode 13.2

Web Developer Free Stock Image
Photo by Christina Morillo on StockSnap

錯誤狀況

Git is not installed xcrun: error: unable to load libxcrun (dlopen(/Library/Developer/CommandLineTools/usr/lib/libxcrun.dylib, 0x0005): tried: '/Library/Developer/CommandLineTools/usr/lib/libxcrun.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/lib/libxcrun.dylib' (no such file)).

打開「終端機.app」輸入指令,了解系統預設呼叫的 git 的檔案路徑
which git
回傳結果
/usr/bin/git
輸入指令
/usr/bin/git --version

顯示同樣的錯誤訊息,推測「系統移轉輔助程式.app」將舊筆電的 git 程式複製過來到新筆電。但是因為硬體架構不相同,導致發生錯誤。


解決方式

解決方法 1:使用 Homebrew 安裝 git,快速!

因為下載安裝 Xcode 很花時間,比較快速的解決方式是透過 Homebrew 安裝 git

  1. 如果還沒有安裝 Homebrew,打開「終端機.app」輸入指令:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 按 Enter
  3. 「終端機.app」輸入指令:
    brew install git
  4. 按 Enter
完成安裝 git
  1. 「終端機.app」輸入指令
    where git
  2. 我的狀況回傳 
    /usr/local/bin/git
    /usr/bin/git
  3. 「終端機.app」輸入指令
    vi ~/.zshrc
  4. 加入這一行 
    alias git='/usr/local/bin/git'
  5. 輸入 :wq 儲存檔案,為了讓設定生效,需要關閉「終端機.app」再重新啟動「終端機.app」。PhpStorm 同樣要重新啟動。
  6. 返回「終端機.app」輸入指令 
    which git
  7. 原本回傳結果是 /usr/bin/git ,現在改成 /usr/local/bin/git
  8. 回到 PhpStorm 偏好設定,「Path to Git executable」輸入「git」或完整路徑「/usr/local/bin/git」。
  9. 再點選下圖「Test」按鈕,可以順利顯示 git 版本資訊,而不會出現 錯誤訊息,代表設定正確。
PhpStorm GIT 偏好設定

解決方法 2:Command Line Tools for Xcode 13.2

  1. 前往 More - Downloads - Apple Developer 下載 「Xcode 13.2」 與「Command Line Tools for Xcode 13.2」(CLT)。其中 Xcode 約 32 GB ,需要花一些時間下載。
  2. 安裝 「Xcode 13.2」 與「Command Line Tools for Xcode 13.2」
  3. 「終端機.app」輸入指令 
    /usr/bin/git --version
  4. 預期出現 git 版本資訊,而不是文章一開始提到的錯誤訊息。如果有執行解決方式 2 的修改 .zshrc 檔案,再自行刪除這一行即可:
    alias git='/usr/local/bin/git'

無效的嘗試

  • 嘗試直接刪除 sudo rm -rf /usr/bin/git 失敗,因為 System Integrity Protection (SIP)系統完整性保護
  • 「終端機.app」輸入指令 xcode-select --install 顯示結果「xcode-select: error: command line tools are already installed, use "Software Update" to install updates」
  • 「終端機.app」輸入指令 softwareupdate --all --install --force 顯示結果「No updates are available.」

參考資料

留言