最近換了搭載 M1 晶片的 mac mini,x86 架構轉換到 arm 架構遇到一些套件相容問題,這篇就來做個整理與說明一些套件的設定方法。
Rosetta
M1 是基於 ARM 指令集架構的自研晶片系統,之前用習慣 x86 的系統,在安裝一些平常在使用的軟體可能會遇到無法編譯的問題,想要安裝就需要透過 Rosetta
這編譯軟體來幫忙。
Rosetta 是蘋果電腦公司發布的在 Mac OS X 上的一個二進位編譯器軟體,2020年 macOS 11.0 Big Sur 內建 Rosetta 2 可以讓在 Intel 平台上開發的軟體在 ARM 架構的 mac 上順利執行
如果尚未安裝 Rosetta 可執行
softwareupdate --install-rosetta
Homebrew
Homebrew 是開發 Apple 軟體工程師必備的套件管理,我們會安裝兩個版本,一個是原生 M1 架構,另一個則是 x86_64 架構下使用 (在支援 M1 的軟體比較成熟之前,安裝 x86_64 的軟體是個過渡時期的解決方案)
2022/01/20更新:arm 架構的 M1 問世也過了許多時間,很多套件也跟著做相容了,如果自己使用起來沒什麼相容問題的話 x86 的版本就不見得需要再安裝。 Does It ARM 可以參考哪些是已經支援 ARM 架構的套件
- 安裝 arm64 的版本
# 預設路徑會安裝在 `/opt/homebrew/` 底下
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安裝 x86_64 的版本
# 路徑會裝在 `/usr/local/bin` 底下
# 安裝 x86_64 的軟體需要下 arch --x86_64 的指令
arch --x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- 建立 alias 給兩個不同的版本
打開 ~/.bashrc
or ~/.zshrc
輸入
# x86_64 version brew path
# 這邊會把舊版本取為 brow (o for old)
alias brow='arch --x86_64 /usr/local/Homebrew/bin/brew'
- 重開 terminal 測試看看別名有沒有設定成功
brew --prefix
# /opt/homebrew
brow --prefix
# /usr/local
iTerm2
iTerm2 是取代 Mac 內建的 terminal 終端機,如果不喜歡蘋果內建的 Terminal 不仿可以安裝看看。
這邊介紹幾個小技巧:
- 滑鼠反白選取即 copy
- 快捷鍵的調整,因為 iTerm2 預設的快捷鍵跟 Terminal 不同,尤其在操作指令的時候可能會不太習慣,可以調整它的 key mappings,到路徑
Preferences
>Profiles
>Keys
>Key Mappings
,然後選取下方的Presets...
然後選擇Natural Text Editing
就可以改回習慣同 Terminal 的操作方式
Zsh
Z shell(Zsh) 如同 bash 一樣是一個命令直譯器,其他還有 Fish ,每個命令直譯器都有各自的優缺點,有空皆可以玩玩看,2019 年起 macOS 的預設 Shell 已從 Bash 改為 Zsh,可以打開 terminal 看一下,目前的終端機使用哪個,如果還不是 zsh,可以參照下面的步驟切換
- 設定 > 使用者與群組 > 打開鎖頭 > USER 頭像上 cmd + 滑鼠右鍵 > 進階選項
- 「登入 Shell 」改為
/bin/zsh/
保存之後 - 重新開啟 terminal 就是
zsh
了
oh-my-zsh
oh-my-zsh
是 zsh 社群裡最大的開源套件之一,不但可以客製化自己的 theme,也可以擴充非常多的
plugin
,大家常用的 git
command shortcut 就已經內建了
安裝的方式如下
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安裝完成之後,就會有預設的 theme 可以使用,也可以打開 ~/.zshrc
看他的設定檔有什麼可以調整。
pure-prompt
如果想要有更簡潔的 zsh,可以試試
pure-prompt
,需透過 npm
來安裝,所以這邊會先安裝個 node 的版本控制軟體 -
nvm
(Node Version Manager) 是 Node.js 的版本管理工具。如果是要手動安裝 pure-prompt 的話則可略過。
2022/01/20 更新:pure prompt 作者提供了 homebrew 的安裝方法
brew install pure
就可直接安裝了
安裝 nvm
# 依照官方教學安裝
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
把下面的環境變數加入到 ~/.zshrc
或 ~/.bashrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
編輯完成之後新開一個 terminal 或重 load source ~/.zshrc
看看是不是正常
如果有出現
zsh compinit: insecure directories, run compaudit for list.
的提示的話 可以輸入compaudit | xargs chmod g-w
來改寫 directory 權限
檢視 nvm 版本
# 列出所有可安裝的版本
nvm ls-remote
# 建議安裝最新的 LTS 版本
nvm install <version>
其他常用的指令
# 查看目前已經安裝的版本
nvm ls
# 切換版本
nvm use <version>
# 移除指定版本
nvm uninstall <version>
## check npm installed list global
npm list -g --depth 0
安裝 pure-prompt
npm install -g pure-prompt
Pure Prompt Configuration
最後打開 ~/.zshrc
把最基本的設定範例貼上
# .zshrc
autoload -U promptinit; promptinit
# optionally define some options
PURE_CMD_MAX_EXEC_TIME=10
# change the path color
zstyle :prompt:pure:path color white
# change the color for both `prompt:success` and `prompt:error`
zstyle ':prompt:pure:prompt:*' color cyan
# turn on git stash status
zstyle :prompt:pure:git:stash show yes
prompt pure
若想了解更多 zsh 的設定可以至 zsh prompt expansion 看看相關說明
最後 run source ~/.zshrc
就可以有非常簡潔的 zsh 終端機!