安装通用开发工具

适用读者:已完成 Arch Linux 安装(无论实体机还是 WSL),想搭建完整开发环境的读者。本文所有步骤在两种环境下均适用。


前言:我们要装什么?

一个典型的全栈开发环境需要:

工具 用途
git 版本控制,几乎所有项目必备
yay AUR 助手,扩展 Arch 软件源
sdkman Java/Maven 版本管理
nvm Node.js 版本管理
uv Python 虚拟环境和包管理(Rust 写的,极快)
go Go 语言工具链
docker 容器化运行环境
neovim + LazyVim 高效终端编辑器
kitty GPU 加速终端模拟器(实体机)
zip / unzip 压缩解压工具(sdkman 依赖)

一、安装 git(通过 pacman)

为什么先用 pacman 安装 git?

后续安装 yay(AUR 助手)需要从 GitHub 克隆代码,而克隆就需要 git。pacman 是 Arch 内置的包管理器,git 在官方源里有,直接装:

1
sudo pacman -S git

验证安装:

1
2
git --version
# 输出类似:git version 2.x.x

配置你的身份(git commit 时会用到):

1
2
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

二、安装 yay(AUR 助手)

2.1 什么是 AUR?

AUR(Arch User Repository)是 Arch Linux 的社区软件仓库,里面有官方源没有的软件,比如各种专有软件、开发工具、字体等。官方源用 pacman 管理,AUR 需要 AUR 助手来自动化编译安装过程。

yay 是目前最流行的 AUR 助手,它完全兼容 pacman 的命令语法,你可以把它当 pacman 的超集来用——yay 既能装官方源的包,也能装 AUR 的包。

2.2 安装前置依赖

yay 本身需要 base-devel(编译工具集)才能从 AUR 编译软件:

1
sudo pacman -S base-devel

base-devel 包含 gcc、make、binutils 等编译必需的工具链。

2.3 克隆并编译 yay

1
2
3
4
5
6
7
8
# 克隆 yay 的 AUR 构建脚本到临时目录
git clone https://aur.archlinux.org/yay.git /tmp/yay

# 进入目录
cd /tmp/yay

# 编译并安装(-si 表示安装依赖并安装软件包)
makepkg -si

⚠️ AUR 的软件不能以 root 身份编译,请确保你是普通用户(提示符末尾是 $ 而不是 #)。

安装完成后验证:

1
yay --version

三、使用 yay 批量安装开发工具

有了 yay,后续安装无论官方包还是 AUR 包,语法完全一致。

3.1 安装 zip 和 unzip(sdkman 的前置依赖)

sdkman 的安装脚本和下载逻辑依赖 zipunzip,必须提前装好:

1
yay -S zip unzip

3.2 批量安装其余工具

1
yay -S git yay sdkman nvm uv kitty go docker neovim

说明

  • gityay 已经装了,再执行不会报错,yay 会提示”已是最新版本”并跳过
  • kitty 是 GPU 加速终端,WSL 环境下用不上(WSL 没有独立的窗口系统),实体机用户安装
  • sdkmannvm 在 AUR 里,yay 会自动处理编译

四、安装并配置 LazyVim

4.1 什么是 LazyVim?

LazyVim 是基于 Neovim 的一套完整配置框架,集成了 LSP(语言服务器协议,实现代码补全、跳转定义等)、文件树、模糊搜索、git 集成等常用插件,开箱即用,同时保持高度可扩展性。

LazyVim 是本次配置中唯一不由 yay 管理的组件,它通过官方推荐的方式直接以配置文件形式安装,由 Neovim 的插件管理器 lazy.nvim 在首次启动时自动下载。

4.2 备份旧配置(如有)

1
2
3
4
5
# 备份已有的 Neovim 配置(如果有的话)
mv ~/.config/nvim ~/.config/nvim.bak 2>/dev/null
mv ~/.local/share/nvim ~/.local/share/nvim.bak 2>/dev/null
mv ~/.local/state/nvim ~/.local/state/nvim.bak 2>/dev/null
mv ~/.cache/nvim ~/.cache/nvim.bak 2>/dev/null

4.3 克隆 LazyVim 起始配置

LazyVim 官方提供了一个 starter 仓库,直接克隆到 Neovim 配置目录:

1
2
3
4
git clone https://github.com/LazyVim/starter ~/.config/nvim

# 删除 .git 目录,方便后续用自己的 git 管理配置
rm -rf ~/.config/nvim/.git

4.4 首次启动

1
nvim

第一次打开 Neovim,lazy.nvim 会自动下载并安装所有插件(需要访问 GitHub,国内可能较慢,耐心等待)。

安装完成后界面会变得非常漂亮,有文件树、状态栏、语法高亮等。

常用快捷键:

  • Space:打开命令菜单(LazyVim 的核心入口)
  • Space + e:打开/关闭文件树
  • Space + ff:模糊搜索文件
  • :q:wq:退出

五、配置 sdkman(Java/Maven 版本管理)

5.1 什么是 sdkman?

sdkman 是 JVM 生态的版本管理工具,可以方便地安装和切换不同版本的 JDK、Maven、Gradle 等工具。类似 Python 的 pyenv、Node.js 的 nvm。

5.2 激活 sdkman

通过 yay 安装的 sdkman 包会在 /opt/sdkman 下放置文件,但还需要在 shell 配置文件中激活它:

1
2
# 激活 sdkman(这条命令也需要加入 .bashrc,见第九节)
source /opt/sdkman/bin/sdkman-init.sh

验证:

1
sdk version

5.3 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 列出可安装的 JDK 版本
sdk list java

# 安装 JDK 21(LTS 版本,推荐)
sdk install java 21.0.x-tem

# 安装特定的 JDK,比如 Temurin(原 AdoptOpenJDK)
sdk install java 21.0.5-tem

# 安装 Maven
sdk install maven

# 查看当前使用的版本
sdk current java
sdk current maven

# 在当前 shell 临时切换版本
sdk use java 17.0.x-tem

# 设置默认版本
sdk default java 21.0.x-tem

5.4 安装 JDK 和 Maven

1
2
3
4
5
# 安装 JDK 21(当前 LTS 版本)
sdk install java

# 安装 Maven
sdk install maven

直接 sdk install java 不指定版本时,会安装 sdkman 推荐的默认版本。

验证:

1
2
java -version
mvn -version

六、配置 nvm(Node.js 版本管理)

6.1 什么是 nvm?

nvm(Node Version Manager)允许你在同一台机器上安装和切换多个 Node.js 版本。不同项目可能需要不同的 Node.js 版本,nvm 让切换变得简单。

6.2 激活 nvm

通过 yay 安装的 nvm 包同样需要在 shell 配置中激活(见第九节,这里先手动激活验证):

1
source /usr/share/nvm/init-nvm.sh

6.3 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 列出可用的 Node.js 版本
nvm ls-remote

# 安装最新 LTS 版本
nvm install --lts

# 安装指定版本
nvm install 20

# 列出已安装的版本
nvm ls

# 切换版本
nvm use 20

# 设置默认版本(新 shell 会使用此版本)
nvm alias default 20

6.4 安装 Node.js

1
2
3
4
5
# 安装当前 LTS 版本
nvm install --lts

# 设为默认
nvm alias default node

验证:

1
2
node --version
npm --version

七、配置 uv(Python 环境管理)

7.1 什么是 uv?

uv 是由 Astral 公司用 Rust 编写的 Python 包管理和项目管理工具,速度比 pip 快 10~100 倍。它整合了虚拟环境创建、包安装、Python 版本管理等功能。

为什么不用 pyenv?

Arch Linux 默认会预装系统 Python(python3),日常开发直接用 uv 创建虚拟环境即可,不需要用 pyenv 再管理一套 Python 版本。uv 自身也可以安装指定版本的 Python。

7.2 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看 uv 版本
uv --version

# 创建虚拟环境(在当前目录创建 .venv/)
uv venv

# 激活虚拟环境
source .venv/bin/activate

# 在虚拟环境中安装包
uv pip install requests fastapi

# 退出虚拟环境
deactivate

# 使用项目模式(推荐,会自动管理虚拟环境)
uv init myproject # 创建新项目
cd myproject
uv add requests # 添加依赖(自动创建虚拟环境)
uv run python main.py # 在虚拟环境中运行脚本

# 安装特定版本的 Python
uv python install 3.12

八、配置 Go

8.1 设置 GOPATH 和 GOMODCACHE

Go 安装完后,默认的工作目录是 ~/go,通常不需要修改。但在国内,访问 Go 官方模块代理(proxy.golang.org)会很慢,需要配置国内代理:

1
2
3
4
5
# 设置国内模块代理(七牛云)
go env -w GOPROXY=https://goproxy.cn,direct

# 设置模块私有化白名单(按需,公司内网仓库用)
# go env -w GONOSUMCHECK=your.private.domain

GOPROXY=https://goproxy.cn,direct 的含义:先从 goproxy.cn 下载,如果没有再直连(direct),兼容私有模块。

8.2 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看 Go 版本
go version

# 初始化一个新模块
go mod init myapp

# 下载依赖
go mod tidy

# 编译
go build -o myapp .

# 运行
go run main.go

# 安装工具(安装到 $GOPATH/bin/,需要将其加入 PATH)
go install golang.org/x/tools/gopls@latest

8.3 将 Go 工具目录加入 PATH

Go 安装的工具(通过 go install)默认放在 ~/go/bin/,需要将这个目录加入 PATH 才能直接运行。这在第九节的 .bashrc 配置中一并完成。


九、.bashrc 配置详解

.bashrc 是 bash shell 每次启动时自动执行的配置文件,里面放置环境变量、PATH 配置、alias 等。

编辑:

1
nano ~/.bashrc

完整配置如下(含解析):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# ===== 系统自带部分(通常已存在,不需要动) =====

# 如果不是交互式 shell,直接退出(脚本中被 source 时的保护)
[ -z "$PS1" ] && return

# 历史记录设置
HISTCONTROL=ignoredups:ignorespace # 忽略重复命令和以空格开头的命令
HISTSIZE=1000 # 内存中保留 1000 条历史
HISTFILESIZE=2000 # 历史文件最多 2000 条

shopt -s histappend # 多个终端同时运行时,历史追加而非覆盖
shopt -s checkwinsize # 每条命令后自动更新终端窗口大小变量

# ===== 终端提示符(PS1)=====

# 自定义一个简洁、带颜色的提示符
# 格式:用户名@主机名 当前目录 $
# 颜色说明:\033[36m = 青色,\033[33m = 黄色,\033[32m = 绿色,\033[0m = 重置颜色
PS1='\[\033[36m\]\u@\h\[\033[0m\] \[\033[33m\]\W\[\033[0m\] \[\033[32m\]$ \[\033[0m\]'

# ===== PATH 扩展 =====

# Go 工具安装目录
export PATH="$HOME/go/bin:$PATH"

# ===== sdkman 初始化 =====
# sdkman 通过修改 PATH 来切换 JDK/Maven 版本
# THIS MUST BE AT THE END OF THE FILE for sdkman to work!!!
export SDKMAN_DIR="/opt/sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"

# ===== nvm 初始化 =====
# nvm 同样通过修改 PATH 来切换 Node.js 版本
source /usr/share/nvm/init-nvm.sh

关键点解析:

  • \[\033[36m\]:ANSI 转义序列,设置终端颜色。\[...\] 包裹是告诉 bash 这部分不可见,用于正确计算光标位置。36m 是青色。
  • \u:当前用户名;\h:主机名;\W:当前目录名(仅最后一级)
  • \[\033[0m\]:重置颜色,防止颜色”溢出”影响后续输出
  • sdkman 必须在文件末尾:sdkman 的注释里明确要求这一点,因为它需要最后修改 PATH 以确保优先级

修改完 .bashrc 后,让当前 shell 加载新配置:

1
source ~/.bashrc

十、Docker 配置

10.1 启动并设置 Docker 开机自启

Docker 安装后不会自动启动,需要手动开启:

1
2
3
4
5
# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自动启动 Docker
sudo systemctl enable docker

为什么要用 systemctl?

Arch Linux 使用 systemd 作为 init 系统,所有后台服务(守护进程)通过 systemctl 管理。enable 命令会在 /etc/systemd/system/ 下创建符号链接,让系统启动时自动拉起 Docker 守护进程。

10.2 将用户加入 docker 组

默认情况下,运行 docker 命令需要 sudo。将当前用户加入 docker 组可以避免每次都输密码:

1
sudo usermod -aG docker $USER

重新登录后生效(或执行 newgrp docker 立即在当前 shell 生效)。

10.3 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 验证 Docker 安装
docker --version
docker run hello-world

# 镜像操作
docker pull nginx # 拉取镜像
docker images # 列出本地镜像
docker rmi nginx # 删除镜像

# 容器操作
docker run -d -p 8080:80 nginx # 后台运行 nginx,映射端口 8080→80
docker ps # 列出运行中的容器
docker ps -a # 列出所有容器(含已停止)
docker stop <容器ID> # 停止容器
docker rm <容器ID> # 删除容器
docker logs <容器ID> # 查看容器日志

# 进入运行中的容器
docker exec -it <容器ID> bash

# Docker Compose
docker compose up -d # 后台启动
docker compose down # 停止并删除
docker compose logs -f # 跟踪日志

10.4 WSL 中的 Docker 注意事项

WSL2 环境下,systemd 默认不启用。可以在 /etc/wsl.conf 中启用它:

1
sudo nano /etc/wsl.conf

写入:

1
2
[boot]
systemd=true

重启 WSL(在 PowerShell 执行 wsl --shutdown)后,systemctl 命令就能正常使用了。

或者,如果不想开启 systemd,也可以手动启动 Docker:

1
sudo dockerd &

小结

这一篇完成了完整开发环境的搭建:

  1. git → 版本控制基础
  2. yay → 打开 AUR 生态的大门
  3. sdkman → Java/Maven 多版本管理
  4. nvm → Node.js 多版本管理
  5. uv → 现代化 Python 环境管理
  6. Go → Go 工具链及国内代理配置
  7. LazyVim → 开箱即用的 Neovim 配置
  8. .bashrc → 将所有配置串联起来
  9. Docker → 容器化运行环境

下一篇:niri 和 Hyprland 配置,通过 DMS 让你的窗口管理器真正”能用”起来。