目录

0 前言
在此前的文章《初识 WSL2:以 Ubuntu 24.04 安装为例》中,我们以 Ubuntu 24.04 为例,介绍了 WSL2 的安装、配置及 D 盘迁移过程。后续,笔者本想以此为基础配置一套深度学习环境用于开发验证,但实践中发现坑点很多,比如 GPU、CUDA、cuDNN、PyTorch 等组件的版本需要严格匹配,反复的软件安装卸载令人崩溃。
由此,基于最佳实践搭建了一个简洁的 Linux 开发环境配置框架 my-dev-env,将整个环境配置过程拆成基础配置与 Docker 配置两个环节,框架便于新增基础配置或新增 Docker 镜像。此外,该框架可以便捷地嵌套进其它开发项目中进行使用。
本文将阐述 my-dev-env 的主要特性及其使用方法。
1 特性
1.1 基础环境
apt软件源自动修改为阿里云,加速软件安装速度- 安装
wgetcurlgitvimbuild-essential等基础工具,并设置了常用git alias - 安装
locales解决潜在的字符编码问题 - 安装 Docker 及 NVIDIA Container Toolkit 等虚拟化工具,便于进行容器化开发
1.2 效率工具
本项目默认安装了下述工具用于提升开发体验和效率:
- shfmt:shell 脚本格式化工具,可配合 vscode shell-format 插件(v7.0.1)使用
- zoxide:目录快速跳转工具,bash / fish / zsh 均已配置,通过
z或zz命令快速唤起 - fzf:命令行交互式过滤工具,典型应用如历史命令快速查找,bash / fish / zsh 均已配置,通过
CTRL + R快速唤起 - fish shell:开箱即用的现代化交互式 shell,包含语法高亮、命令智能提示、TAB 补全等诸多特性,在易用性上显著优于其它 shell,但与 POSIX 不兼容导致在使用某些软件(如 ROS、Conda)时可能有兼容性问题,一般也不难解决
- z-shell:zsh,强大的交互式 shell,兼容 POSIX,依赖丰富的社区插件扩展其能力。本项目不依赖 Oh My Zsh 框架对 zsh 进行配置(过于臃肿),直接通过下面 4 个插件增强 zsh(体验接近 fish 且兼容性更强):
- fzf-tab:基于 fzf 的 zsh tab 补全增强
- zsh-autosuggestions:命令输入智能提醒
- zsh-completions:zsh 补全增强
- zsh-syntax-highlighting:语法高亮,错误命令红色提醒
Tips
- 可单独执行
common_scripts/install_efficiency_tools.sh脚本单独一键安装配置高效开发工具,提升开发体验和效率(注意安装完需重启系统以使改动生效) - 可通过执行
common_scripts/change_shell.sh脚本修改系统默认交互式 shell(bash / fish / zsh),最佳实践:- 交互式 shell 使用 fish 或 zsh,提升效率
- shell 脚本中设置 shebang 为
#!/bin/bash(使用 bash 作为脚本解释器),确保脚本兼容性
1.3 Docker 环境
docker目录用于存储自定义 docker 镜像的构建文件及docker-compose.yml- 为简化使用,
docker-compose.sh对docker compose -f命令及docker-compose.yml进行了简单封装 - 为支持不同类型开发镜像的构建需求,通过 YAML 锚点模块化
docker-compose.yml的 service 配置,具体可参考项目文档 docker_env_guide - 可将本项目嵌套进其它开发项目进行使用(如 deep-learner),可方便地新增自定义镜像,具体参考 docker_env_guide
2 使用方法
2.1 克隆仓库
1 | git clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/RocShi/my-dev-env.git |
2.2 主机环境配置
2.2.1 WSL2 配置
首先需要在 Windows 环境中下载并安装 NVIDIA App,并通过该软件直接安装 NVIDIA 驱动;然后在 WSL2 终端中执行下述命令完成基础开发环境的配置:
1 | cd my-dev-env/host && chmod +x setup_wsl2.sh && ./setup_wsl2.sh |
2.2.2 Linux 配置
需要在 Linux 环境中安装 NVIDIA 驱动,其它配置步骤与 WSL2 类似,待实现。
2.3 Docker 环境配置
上述步骤已完成 docker 及 NVIDIA Container Toolkit 的安装,此处直接构建并使用指定的 docker 镜像即可:
1 | cd my-dev-env && chmod +x docker-compose.sh |
3 小结
my-dev-env 通过将“基础脚本 + 环境配置 + 容器模板”打包在一个仓库里,可以帮助笔者在不同项目之间快速复用开发栈,工作流主要包含以下三个步骤:
- 首先,跑一遍
setup_wsl2.sh,保障主机环境 - 然后,依据项目复制一份镜像目录、写好 Compose 覆盖
- 最后,直接
docker exec进入容器完成开发
Taste is all you need!