Apple Silicon(m1…etc.)MB安裝 CocoaPods Issue

春麗 S.T.E.M.
5 min readApr 11, 2023

--

目錄

⦿ gem install
⦿ gem uninstall / rm -rf
⦿ Homebrew
⦿ zsh: command not found brew
⦿ pod install
⦿ 結論

gem install

自 Apple 的 ARM 架構 CPU 推出以來,大小問題不斷,當你用 Xcode 開發 iOS APP 時,除了以 SPM 安裝套件之外,也常會使用 CocoaPods 來管理你的套件。

這篇文章主要整理 CocoaPods 會碰到的問題流程處理方式,一般而言,安裝 CocoaPods 只要在 Terminal 輸入 sudo gem install cocoapods 即可,若安裝成功,那麼恭喜你(在這個步驟)。

gem uninstall / rm -rf

若不幸地在這一步驟出了錯誤,像是出現下面這個錯誤訊息:

you don't have write permissions for the /system/library/frameworks/ruby.framework/versions/2.6/usr/lib/ruby/gems/2.6.0 directory.

我們會輸入 sudo gem uninstall,反安裝(移除) CocoaPods;或者,我們先 which pod,找到如 /usr/local/bin/pod 這個安裝位置,輸入 sudo rm -rf /usr/local/bin/pod,表示用 root 權限強制刪除這個資料夾。

但還沒完,這時候我們還需 gem list,去找到 CocoaPods 的安裝包位置:

gem list

*** LOCAL GEMS ***
...
cocoapods (1.11.2)
cocoapods-core (1.11.2)
cocoapods-try (1.2.0)

接著,再一個個移除,sudo gem uninstall cocoapods-coresudo gem uninstall cocoapods-try 等等,如果你反安裝(移除)完成,這時再輸入 brew install cocoapods,看到了嗎?是 brew,多數做法都是要你別用 gem,而是改用 Homebrew。

Homebrew

如果你沒安裝過 Homebrew,我們改輸入如下:

curl -fsSL -o install.sh https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh

這表示將 Homebrew 安裝的腳本下載到 install.sh 檔案裡,那麼,你就可以簡單地執行這個腳本來安裝 Homebrew。

於是輸入以下:

/bin/bash install.sh

當然,我們可以更簡單地將這兩行合併如下:

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

這樣就只要一行指令,return 後,等待 Homebrew 安裝完成,輸入以下:

brew install cocoapods

若不幸地跳出錯誤為 zsh: command not found: brew,我們必須再做處理。

zsh: command not found: brew

若很不幸地又跳出錯誤訊息 zsh: command not found: brew,這時你就深深感受到 Apple Silicon 的麻煩之處了,原來前面 Homebrew 的安裝若在 Mac Intel 上,環境變數就匹配了,而在 Apple Silicon 上,我們得重新設置它,指回正確的路徑。

Add Homebrew to your PATH in /Users/daniel/.zprofile

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/daniel/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

分別輸入後,我們再試試看 brew install cocoapods,就完成啦!

繼續閱讀|回目錄

pod install

如果你 gem install cocoapods 沒有問題,那麼,我們不一定要移除 cocoapods,再改用 brew 安裝。

但仍可能在 pod install 時出問題,當跳出錯誤訊息其中一行如下:

LoadError - dlsym(0x7f8926035eb0, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle

於是先輸入:

sudo arch -x86_64 gem install ffi

意思是用 arch -x86_64 架構去安裝 ffi;或者,我們也可用 Rosetta 2 打開 Terminal,那麼,就只要 sudo gem install ffi,ffi 是 Ruby 的 Library,因為前面吐出的錯誤跟 ffi 有關,所以這邊重新安裝 ffi。

接著再輸入:

arch -x86_64 pod install

就完成了!

繼續閱讀|回目錄

結論

如果在 Apple Silicon 的 MB 上,用 gem 安裝 CocoaPods 出問題,理想情況是用 Homebrew 重新安裝一次。

若是 pod install 出問題,試著重新安裝 ffi,再次 pod install 就正常了。

另外,有時候在 CLI(Commnad Line Interface)安裝時似停頓,例如安裝 CocoaPods 時像是卡住,這時我們可以輸入:

sudo gem install cocoapods -V

加上 -V 就可清楚看到一步步的安裝過程,好了!

這次就分享到這,感謝您的閱讀。

繼續閱讀|回目錄

Reference:

--

--

春麗 S.T.E.M.
春麗 S.T.E.M.

Written by 春麗 S.T.E.M.

Do not go gentle into that good night, Old age should burn and rave at close of day; Rage, rage, against the dying of the light.

No responses yet