Linux 開發環境設定:zsh、zinit、pyenv、poetry、docker
最近為了升級 Ubuntu 版本,重建了工作上的 Linux VM(直接升級會怕),所以又得重新設定一次開發環境。
軟體界有一句名言叫「 吃自己的狗糧 」,通常指的是自己開發的工具,自己先使用。而每次重設 Linux 開發環境時,我也都在吃自己的狗糧 — 看自己寫的教學文章。
不誇張,就是一篇篇看,把指令複製貼上,一步一步將環境設定到位。
做了好幾次以後,這次不禁想到:「 咦?我乾脆整理成一篇就好了啊! 」
本文主旨
沒錯!本篇講述的是:當我拿到一個 全新的 Linux VM,為了開發方便,一定會安裝、設定的工具 — 主要基於「 Python 後端 」角度。
內容參考自以往數篇文章,且只關注在 建立開發環境的必要步驟 ,並適時給出一些額外的提醒與建議。
如此一來,我們就不必在文章間穿梭,力求節省時間、一步到位!
本文是以 Ubuntu 20.04 實作,如果你用的是別的 Linux 發行版,肯定會有一些差別,這部分還請留意。
用 yadm 管理 dotfiles
Dofiles 是指「設定檔」,例如 .zshrc
、.vimrc
、.gitconfig
等等。
使用 zinit、Powerlevel10k、pyenv 之前,都要先設定.zshrc
。
如果你已經有使用相關工具來管理並同步你的 dotfiles,那麼以下關於.zshrc
內容的新增、修改,理論上都可以跳過——直接透過工具同步即可。
如果你還沒接觸過任何 dotfiles 管理工具,那麼我推薦 yadm,可參考文章:
話不多說,讓我們開始。
一、設定 SSH 連線
這部分我並沒有寫成文章,因為網路上的資源已經非常多,而且步驟也不算太複雜。
對我而言,主要設定下面兩種 SSH 連線:
- 本機電腦與遠端 VM 的連線。
- VM 與 GitHub(或其它 Git 服務)的連線。
至於具體要怎麼做,還請自行 Google。
二、設定 zsh、zinit、Powerlevel10k
參考原文:
安裝 zsh
sudo apt-get update;
sudo apt-get upgrade -y;
sudo apt-get install -y zsh;
將 zsh 設為登入時的「預設」shell
sudo usermod -s /bin/zsh $USER
提醒:請務必先確認 zsh 本身的安裝、設定沒問題,可以正常使用。否則登入後可能直接卡住,需要透過別的帳號例如 admin 來處理。
新增.zshrc
與.zprofile
touch .zshrc
touch .zprofile
安裝 zinit 套件管理器
bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"
設定 zinit 套件
安裝完後,zinit 已經自動在.zshrc
新增部分內容,請接著繼續新增下列內容:
# zsh 套件四天王
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-history-substring-search
zinit light zdharma-continuum/fast-syntax-highlighting
# Oh My Zsh 功能
zinit snippet OMZ::lib/completion.zsh
zinit snippet OMZ::lib/history.zsh
zinit snippet OMZ::lib/key-bindings.zsh
zinit snippet OMZ::lib/theme-and-appearance.zsh
# key binding
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey ',' autosuggest-accept
# 其他
zinit load djui/alias-tips
存檔後,重啟 shell。(如果要一併安裝 Powerlevel10k,可先不用重啟。)
安裝 Powerlevel10k 佈景主題
非常簡單,只要在 zinit 的設定內容後面,再加上這行即可:
# Powerlevel10k
zinit ice depth=1; zinit light romkatv/powerlevel10k
存檔,重啟 shell,此時就會開始安裝 Powerlevel10k,隨即會進入「 外觀樣式選擇與設定 」畫面。
之後如果要重新設定,可使用指令 p10k configure
。
三、設定 pyenv
安裝 dependency
sudo apt-get update;
sudo apt-get install -y --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
安裝 pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
設定 pyenv
這裡直接採用 pyenv 2.3.0 以後的設定方式,大幅簡化操作 — — 變得更加無腦、易用,好評! — — 且 zsh 或 bash 在設定上已無差別。
一律在.zshrc
或.bashrc
中,新增下列內容:
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
官方的 shell 指令版本(for zsh):
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
pyenv 安裝 Python 3.10.10 並設為全域
通常需要等待好一段時間,安裝才會完成。🐸
接著透過 pyenv,將系統全域的 Python 設定為 3.10.10 (或其他版本):
pyenv global 3.10.10
不再安裝 pyenv-virtualenv
因為 Poetry 自帶了虛擬環境管理功能,容易和 pyenv-virtualenv 疊床架屋,徒增 管理上的混淆,所以我現在 一律只使用 Poetry + venv 來管理 Python 虛擬環境 。
這也是我目前覺得 最簡潔 的做法。
四、設定 Poetry
安裝 Poetry
curl -sSL https://install.python-poetry.org | python3 -
新增poetry
指令至 PATH
在.zshrc
新增以下內容:
export PATH=$PATH:$HOME/.local/bin
修改config
,改用專案內的.venv
虛擬環境
poetry config virtualenvs.in-project true
五、安裝 Docker
安裝細節常常隨著 Docker 版本的更新而有所變動,建議直接看 官方文件 即可。
這次安裝有兩個發現:
- 最新版似乎已經不需要將使用者加入 Docker 群組了。
docker compose
改以 plugin 的形式安裝,變成 Docker client 的子命令,而不再採用舊版的docker-compose
。
Originally published at https://blog.kyomind.tw on February 19, 2023.