Windows WSL 开发环境配置指引(Ubuntu)

1. 更新软件包, 安装基础软件

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install powerline
sudo apt-get install autojump
sudo apt-get install zsh
chsh -s $(which zsh)
  • 建立新的会话
  • 导入 id_rsa 密钥对
  • 拉取本仓库代码
mkdir ~/Repos
git clone git@github.com:codiy1992/setup.git
cd ~/Repos/setup
bash setup.sh
  • 设置vim
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
// vim 执行下面命令
:PluginInstall
  • 安装oh-my-zsh
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  • 设置zsh
ZSH_THEME="agnoster"
plugins=(
        git
        autojump
)
# User configuration
source ~/.zshrc.linux.wsl
  • 安装 homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  • python & node & ansible
// 安装 python2.7
sudo apt-get install python
ln -s /usr/bin/python2.7 /usr/bin/python
// 安装 python3
brew install python
brew install yarn
brew install ansible
brew install frpc
apt-get install gnupg2 git rng-tools
wget [the URL of the latest .deb release]
sudo dpkg -i gopass-<version>-linux-amd64.deb
gopass clone git@github.com:codiy1992/secrets.git

2. Java 开发环境

curl -s "https://get.sdkman.io" | bash
  • 安装 AdoptOpenJDK (方式一)
sdk list java
sdk install java 11.0.9.hs-adpt
CODE_NAME=$(cat /etc/os-release | grep UBUNTU_CODENAME | cut -d = -f 2)
sudo apt-get install wget apt-transport-https gnupg
echo "deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb ${CODE_NAME} main" | sudo tee /etc/apt/sources.list.d/adoptopenjdk.list
sudo apt-get update
sudo apt-cache search adoptopenjdk
sudo apt-get install adoptopenjdk-11-hotspot

3. 为运行桌面程序安装语言包,字体库,输入法 参考 archlinux 中文配置

1. locale 设置(安装中文语言包)

  • 编辑 /etc/locale.gen 后运行 locale-gen 或运行下面命令
locale-gen zh_CN.utf8 // 安装中文语言包,以支持显示中文字符
update-locale LANG=en_US.UTF-8 // 此处保持用英文,不然 terminal 也会变成中文, 甚至可能导致意外的乱码

2. 安装字体库, 并设置中文字体配置

  • 系统字体位置 /usr/share/fonts
  • 用户字体安装位置 ~/.local/share/fonts
  • 安装字体后用命令 fc-cache -f -v 刷新字体库缓存
  • 例如安装 cascadia-code 字体 Releases
wget https://github.com/microsoft/cascadia-code/releases/download/v2009.22/CascadiaCode-2009.22.zip
unzip CascadiaCode-2009.22.zip
mv ./tff ~/.local/share/fonts/cascadia-code
fc-cache -f -v
  • 列出汉字字体 fc-list :lang=zh
  • 中文字体配置(虽然安装了语言包和字体库,但仍需定义这些中文字体在什么情况下如何被使用) 配置参考

3. 安装输入法

  • linux 常见输入法介绍
  • 安装 CJK 字体和 fcitx 核心 sudo apt install fcitx fonts-noto-cjk fonts-noto-color-emoji dbus-x11
  • 安装 fcitx 输入法 sudo apt install fcitx-googlepinyin
  • 若 /var/lib/dbus/machine-id 已存在则不执行, 否则执行 dbus-uuidgen > /var/lib/dbus/machine-id
  • 因 wsl 子系统无法开机执行用户脚本, 这里暂时放在 .zshrc.linux.wsl 中来开启 fcitx
  • 运行 fcitx-config-gtk3 对输入法进行配置
  • 参考博文

4. 安装 GUI 应用程序

  • 导出 $DISPLAY 变量供 GUI 程序找到显示位置
// 三选一, 将 DISPLAY 定位到 windows 系统中的 xlaunch 服务
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0"
export DISPLAY=$(ip route|awk '/^default/{print $3}'):0
  • 安装 google-chrome
sudo apt install gdebi-core wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo gdebi google-chrome-stable_current_amd64.deb
google-chrome
cd ~/Applications
wget https://download-cf.jetbrains.com/idea/ideaIU-2020.3.tar.gz
tar zxf ideaIU-2020.3.tar.gz
cd idea-IU-203.5981.155/bin/
./idea.sh

// 破解参考 > https://tech.souyunku.com/?p=18946

5. [Optional] 在 wsl2 中启用 snap 参考文档

snap 依赖 systemd 而 ubuntu on wsl2 使用 init 而不是 systemd, 因此 snap 无法在 wsl2 中正常工作, 虽然有启用 systemd 的方法但感觉违背了wsl的模式

// 安装
sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
// 创建一个容器让 systemd 的 pid 为 1
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
// 登陆到容器, 然后在容器内操作 snap
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME

Last modified February 14, 2022: add some docs (88132bf)