macOS 開發環境極簡安裝指南
本指南採用 macOS 套件管理器 Homebrew 與 Python 極速套件管理器 uv。
請開啟「終端機」(Terminal,預設 shell 為 zsh),以一般使用者身分執行;遇到要求輸入密碼時,輸入本機登入密碼即可(輸入時畫面不會顯示字元)。
- 本課程只支援 Apple Silicon(M 系列晶片)Mac、macOS 12 以上。Homebrew 官方安裝腳本在 Intel Mac 上會直接中止(顯示「Homebrew on macOS is only supported on Apple Silicon processors!」)。
- 偵測到已存在的工具會保留現有版本、不會自動升級;請以各模組的「驗證」結果為準。
開始之前:若要把安裝工作交給 AI,請先完成階段一的第 1 步(安裝 Antigravity IDE)與第 2 步(取得教材)。
事前準備:Homebrew
已安裝者會自動跳過。若電腦缺少 Xcode Command Line Tools(提供編譯器與 git),Homebrew 安裝程式會自動引導安裝並等待完成,可能需要數分鐘。
# 1. 安裝 Homebrew(已安裝則跳過)
if command -v brew >/dev/null 2>&1; then
echo "[已安裝] Homebrew,跳過。"
else
echo "[缺少] 正在安裝 Homebrew ..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
# 2. 將 brew 加入 PATH(Apple Silicon 的 Homebrew 安裝在 /opt/homebrew)
if [ -x /opt/homebrew/bin/brew ]; then
grep -q 'brew shellenv' ~/.zprofile 2>/dev/null || echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
brew --version模組一:核心開發工具
包含:Git、uv、Node.js、GitHub CLI (gh)、Pandoc(Markdown、Word、HTML 等格式互轉,階段二起使用)。
- macOS 的 Git 由 Xcode Command Line Tools 提供,偵測到即沿用,不另外透過 Homebrew 安裝。
- Homebrew 的
node是最新版,不一定是 LTS;一般教學與開發使用沒有差別。
複製以下指令貼入終端機執行(已存在則自動跳過):
# 格式為「指令名稱:Homebrew 套件名稱」
coreTools=(git:git uv:uv node:node gh:gh pandoc:pandoc)
failed=()
if ! command -v brew >/dev/null 2>&1; then
echo "錯誤:找不到 brew,請先完成上方「事前準備」再執行本段。"
failed+=("Homebrew")
else
for t in "${coreTools[@]}"; do
cmd=${t%:*}; pkg=${t#*:}
if command -v $cmd >/dev/null 2>&1; then
echo "[已安裝] $cmd,跳過。"
else
echo "[缺少] 正在安裝 $pkg ..."
brew install $pkg || failed+=("$pkg")
fi
done
fi
hash -r
# 檢查 Node.js 版本(階段四需要 22.12 以上,或 20.19 以上的 20 版)
if command -v node >/dev/null 2>&1 && ! node -e "const [a,b]=process.versions.node.split('.').map(Number);process.exit(a>22||(a===22&&b>=12)||(a===20&&b>=19)?0:1)"; then
echo "[版本過舊] Node.js $(node --version):請執行 brew upgrade node;若顯示 node 不是用 Homebrew 安裝的,改用 brew install node,再重新開啟終端機。"
failed+=("Node.js 版本過舊")
fi
echo
if [ ${#failed[@]} -gt 0 ]; then
echo "以下項目安裝失敗:${failed[*]}。請查看上方錯誤訊息,處理後重新執行本段。"
else
echo "核心工具安裝檢查完成!"
fi核心工具驗證
git --version
uv --version
node --version # 階段四需要 22.12 以上(或 20.19 以上的 20 版)
npm --version
npx --version
gh --version
pandoc --version再實際把一份含中文表格的 Markdown 轉成 Word,確認 Pandoc 正常:
cd "${TMPDIR:-/tmp}"
printf '%s\n' '# 轉檔測試' '' '| 欄位 | 內容 |' '| --- | --- |' '| 中文 | 正常顯示 |' > pandoc-test.md
if pandoc pandoc-test.md -o pandoc-test.docx; then
echo "Word 轉檔成功!"
open pandoc-test.docx
else
echo "Word 轉檔失敗,請查看上方錯誤訊息。"
fiPandoc 使用範例:
pandoc report.md -o report.docx # Markdown 轉 Word
pandoc report.docx -o report.md # Word 轉 Markdown(方便交給 AI 整理)
pandoc report.md -o report.html # Markdown 轉網頁模組二:多媒體與進階 CLI 工具
分類安裝原則:
- Homebrew:安裝系統原生二進位工具(
ffmpeg,ripgrep,jq,ImageMagick)。 - uv tool:安裝 Python 生態獨立工具(
edge-tts,yt-dlp)。
請先完成模組一(需要 uv),再複製以下指令執行(已存在則自動跳過):
failed=()
# 1. Homebrew 安裝原生系統工具
systemTools=(ffmpeg:ffmpeg rg:ripgrep jq:jq magick:imagemagick)
for t in "${systemTools[@]}"; do
cmd=${t%%:*}; pkg=${t#*:}
if command -v $cmd >/dev/null 2>&1; then
echo "[已安裝] $cmd,跳過。"
else
echo "[缺少] 正在安裝 $pkg ..."
brew install $pkg || failed+=("$pkg")
fi
done
# 2. uv tool 安裝 Python 獨立命令列工具
# edge-tts 與 yt-dlp 依賴外部服務,服務改版後舊版就會失效(例如 edge-tts 出現 403 錯誤),
# 所以不論是否已安裝,一律更新到最新版:沒裝會安裝,已裝會升級
pyTools=(edge-tts yt-dlp)
for pkg in "${pyTools[@]}"; do
echo "正在透過 uv 安裝或更新 $pkg ..."
uv tool install --upgrade $pkg || failed+=("$pkg")
done
# 3. 將 uv tool 的執行檔目錄寫入 shell 設定檔(之後新開的終端機生效)
# 若顯示「already up-to-date」或「Restart your shell」屬正常,可忽略
uv tool update-shell || true
# 4. 讓目前這個終端機視窗也立即生效
export PATH="$(uv tool dir --bin):$PATH"
hash -r
echo
if [ ${#failed[@]} -gt 0 ]; then
echo "以下項目安裝失敗:${failed[*]}。請查看上方錯誤訊息,處理後重新執行本段。"
else
echo "擴充工具安裝檢查完成!"
fi擴充工具驗證
ffmpeg -version
rg --version
jq --version
magick -version
edge-tts --version
yt-dlp --version再實際產生一段語音,確認 edge-tts 能連上微軟的服務:
cd /tmp
if edge-tts --voice zh-TW-HsiaoChenNeural --text "早安" --write-media tts-test.mp3 && [ -s tts-test.mp3 ]; then
echo "語音產生成功!"
open tts-test.mp3
else
echo "語音產生失敗。若錯誤訊息含 403,執行 uv tool upgrade edge-tts 後再試一次。"
fi擴充工具使用範例
# 文字轉語音(台灣中文女聲)
edge-tts --voice zh-TW-HsiaoChenNeural --text "你好,這是測試" --write-media hello.mp3
# 專案全文搜尋:預設略過隱藏檔(如 .git);在 Git 儲存庫內會遵守 .gitignore,
# 因此通常也會跳過 node_modules 與 .venv
rg "API_KEY" # 全專案搜尋
rg -i "database_url" # 不分大小寫
rg "def main" -t py # 只搜 Python 檔
rg -l "TODO" # 只列出檔名
rg "API_KEY" -g '!node_modules/**' # 不在 Git 儲存庫時,手動排除 node_modules模組三:LaTeX(階段六使用)
包含:MacTeX(LaTeX 排版,用來輸出 PDF、撰寫論文格式)。內含完整套件,下載達數 GB,建議在家中寬頻網路安裝。階段六開始前再裝即可;PDF 輸出測試需要模組一的 Pandoc。
安裝 MacTeX 時 Homebrew 會要求輸入 Mac 的登入密碼,這是正常的(不要自己在指令前加
sudo)。安裝完成後,LaTeX 指令位於/Library/TeX/texbin。
failed=()
if command -v xelatex >/dev/null 2>&1; then
echo "[已安裝] LaTeX (xelatex),跳過。"
else
echo "[缺少] 正在安裝 MacTeX(數 GB,請耐心等候)..."
brew install --cask mactex-no-gui || failed+=("mactex-no-gui")
fi
# 讓目前視窗找得到 /Library/TeX/texbin
eval "$(/usr/libexec/path_helper)"
hash -r
echo
if [ ${#failed[@]} -gt 0 ]; then
echo "以下項目安裝失敗:${failed[*]}。請查看上方錯誤訊息,處理後重新執行本段。"
else
echo "LaTeX 安裝檢查完成!"
fiLaTeX 驗證
xelatex --version再實際輸出一份中文 PDF:
cd "${TMPDIR:-/tmp}"
printf '%s\n' '# 轉檔測試' '' '| 欄位 | 內容 |' '| --- | --- |' '| 中文 | 正常顯示 |' > pandoc-test.md
if pandoc pandoc-test.md -o pandoc-test.pdf --pdf-engine=xelatex -V CJKmainfont="Songti TC"; then
echo "PDF 輸出成功!"
open pandoc-test.pdf
else
echo "PDF 輸出失敗,請查看上方錯誤訊息。"
fiLaTeX 使用範例
# Markdown 轉 PDF(含中文)
pandoc report.md -o report.pdf --pdf-engine=xelatex -V CJKmainfont="Songti TC"
# 編譯 LaTeX 論文(有參考文獻時:xelatex → bibtex → xelatex → xelatex)
xelatex paper.tex模組四:OpenCode(選修,階段八使用)
OpenCode 是開源的終端機 AI Agent。本課程以 v1(1.19.3) 為準,用 npm 安裝指定版本。
不要用
brew install opencode,也不要執行opencode upgrade --major:Homebrew 官方套件與升級指令都會裝到設定方式不同的 OpenCode 2。
請先完成模組一(需要 Node.js),再複製以下指令執行(已存在則自動跳過):
failed=()
if command -v opencode >/dev/null 2>&1; then
ver=$(opencode --version 2>/dev/null)
major=$(echo "$ver" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 | cut -d. -f1)
if [ "$major" = "1" ]; then
echo "[已安裝] opencode ($ver),跳過。"
else
# 已裝的是 OpenCode 2 時不自動降版,避免動到使用者原本的設定
echo "[版本不同] opencode $ver:本課程以 v1 為準。教材的設定檔在 v2 預期也能用,差異見 08-opencode/reference.md;要改用 v1,先移除目前的版本再重新執行本段。"
fi
elif ! command -v npm >/dev/null 2>&1; then
echo "錯誤:找不到 npm,請先完成模組一(Node.js)。"
failed+=("Node.js")
else
echo "[缺少] 正在安裝 OpenCode 1.19.3 ..."
npm install -g opencode-ai@1.19.3 || failed+=("opencode-ai")
fi
hash -r
echo
if [ ${#failed[@]} -gt 0 ]; then
echo "以下項目安裝失敗:${failed[*]}。請查看上方錯誤訊息,處理後重新執行本段。"
else
echo "OpenCode 安裝檢查完成!"
fiOpenCode 驗證
opencode --version # 應顯示 1.19.3接上模型與使用方式,見 階段八。
常見問題排除
指令找不到(command not found):
- 請關閉並重新開啟終端機讓 PATH 設定生效。
- 確認路徑:
command -v git、command -v uv、command -v rg。
安裝 Homebrew 後
brew找不到(Apple Silicon):- 重新執行「事前準備」第 2 步,或手動執行:
eval "$(/opt/homebrew/bin/brew shellenv)"。
- 重新執行「事前準備」第 2 步,或手動執行:
出現
xcrun: error: invalid active developer path:- 系統更新後 Command Line Tools 失效,重新執行:
xcode-select --install,在跳出的視窗按「安裝」。
- 系統更新後 Command Line Tools 失效,重新執行:
Homebrew 安裝 uv 失敗時的備用方式:
- 先執行
brew update後重試。 - 仍失敗時,經使用者確認後才可改用 Astral 官方安裝指令:zsh
curl -LsSf https://astral.sh/uv/install.sh | sh
- 先執行
edge-tts 出現 403 錯誤(Invalid response status):
- 微軟的語音服務更新了驗證方式,舊版 edge-tts 會被拒絕連線,產出的 mp3 是空檔。
- 執行
uv tool upgrade edge-tts更新到最新版後再試。新版通常在服務改版後幾天內發布。 - 更新後仍失敗,表示新版還沒推出,暫時改用其他方式處理,不要反覆重試。