大家好,我是冯哥的缓存。上一篇我们搞定了 Python 环境,这一篇继续讲另外两个开发者最常用的运行时:Node.js和Java。两者各有一个优秀的版本管理工具——nvm 和 sdkman,掌握了就可以随时切换版本,再也不怕"版本对不上"。
Node.js 篇
Linux 上装 Node.js 的几种方式
安装方式 | 优点 | 缺点 | 推荐程度 |
apt 安装(系统仓库) | 简单快速 | 版本极旧(Ubuntu 22.04 仓库只有 Node 12) | ❌ 不推荐 |
NodeSource 官方 deb | 版本较新,稳定 | 只能装一个版本,切换麻烦 | ✅ 临时用 |
nvm(版本管理器) | 随时切换版本,互不干扰 | 需要多几步配置 | ⭐⭐⭐⭐⭐ |
snap 安装 | 自动更新 | 启动略慢,和系统工具有隔离问题 | ⚠️ 不推荐 |
💡提示:强烈推荐用 nvm。现实开发中,项目 A 要求 Node 18,项目 B 要求Node 20,这种情况很常见,nvm 一条命令就能切换。
方案一:NodeSource deb(快速单版本)
如果只是临时测试或者确定只用一个版本,用 NodeSource 最省事:
#安装Node.js 20 LTS(以 20.x 为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
#验证
node --version
npm --version
⚠️注意:setup_20.x中的 20可换成 18、22等版本号。安装后自带 npm,不需要单独装。
方案二:nvm 安装与使用(推荐)
安装 nvm
#下载并执行 nvm 安装脚本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
💡提示:如果 GitHub 访问慢,可以用镜像:
curl -o- https://gitee.com/mirrors/nvm/raw/v0.39.7/install.sh | bash
安装完毕后,将以下内容写入~/.bashrc(nvm 安装脚本通常会自动添加,检查一下有没有):
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
然后重载配置:
source ~/.bashrc
nvm --version# 有输出就是安装成功
用 nvm 安装 Node.js
#安装最新LTS 版本
nvm install --lts
#安装指定版本
nvm install 20
nvm install 18
#查看已安装版本
nvm ls
#切换到指定版本
nvm use 20
#设置默认版本(新终端自动使用)
nvm alias default 20
#查看当前使用版本
node --version
nvm 常用命令速查
命令 | 说明 |
nvm install --lts | 安装最新 LTS |
nvm install 20 | 安装 Node 20.x 最新小版本 |
nvm install 20.11.0 | 安装精确版本 |
nvm use 20 | 临时切换到 Node 20 |
nvm alias default 20 | 设置默认版本 |
nvm ls | 列出本机所有已安装版本 |
nvm ls-remote --lts | 列出远程所有 LTS 版本 |
nvm uninstall 18 | 卸载某版本 |
nvm current | 查看当前使用版本 |
为项目固定 Node 版本(.nvmrc)
在项目根目录创建.nvmrc文件,写入版本号:
echo"20" > .nvmrc
以后进入这个项目目录,运行nvm use就会自动切换到对应版本,无需手动指定。
npm 的国内镜像源(避免下包慢)
装好 Node.js 后,npm 默认连的是境外服务器,速度很慢。换成淘宝镜像:
#永久换成淘宝镜像
npm config set registry https://registry.npmmirror.com
#验证
npm config get registry
#测试安装一个包
npm install -g nodemon
nodemon --version
💡提示:如果某个包在淘宝镜像上找不到,临时用官方源安装:
npm install --registry https://registry.npmjs.org <包名>
npm 基础命令速查
命令 | 说明 |
npm init -y | 初始化项目(生成 package.json) |
npm install | 安装 package.json 中所有依赖 |
npm install express | 安装包(写入 dependencies) |
npm install --save-dev jest | 安装开发依赖(写入 devDependencies) |
npm install -g typescript | 全局安装 |
npm uninstall express | 卸载包 |
npm update | 更新所有依赖 |
npm list | 查看当前项目依赖树 |
npm list -g --depth=0 | 查看全局安装的包 |
npm run <脚本名> | 运行 package.json 中的 scripts |
Node.js 常见报错速查
报错信息 | 原因 | 解决方法 |
nvm: command not found | nvm 没加入 PATH | source ~/.bashrc或重启终端 |
npm WARN EBADENGINE | 包要求的 Node 版本更高 | nvm install --lts升级版本 |
EACCES: permission denied | npm 全局目录权限问题 | 换用 nvm 管理 Node,不要 sudo npm install -g |
npm ERR! network | 网络超时 | 换淘宝镜像:npm config set registry https://registry.npmmirror.com |
node_modules体积爆炸 | 正常现象 | 用 npx代替全局安装;定期 npm prune |
Java 篇
先搞清楚:Linux 上装 Java 的几种方式
安装方式 | 说明 | 推荐程度 |
apt 安装 OpenJDK | Ubuntu 仓库自带,稳定 | ✅ 单版本日常用 |
手动下载 Oracle JDK | 商业授权,功能全 | ⚠️除非需要 Oracle 特性 |
sdkman 管理 JDK | 多版本切换,支持 Maven/Gradle/Kotlin 等 | ⭐⭐⭐⭐⭐ |
💡提示: Java 版本迭代快,大多数企业项目用Java 8 或 Java 17(LTS),个人学习建议装 Java 21(最新 LTS)。sdkman可以同时管理多个版本。
方案一:apt 安装 OpenJDK(快速单版本)
#安装OpenJDK 21
sudo apt update
sudo apt install -y openjdk-21-jdk
#验证
java -version
javac -version
如果要同时装多个版本,可以用update-alternatives切换:
#查看系统里所有 Java 版本
sudo update-alternatives --list java
#切换默认Java 版本
sudo update-alternatives --config java
方案二:sdkman 管理 Java 多版本(推荐)
sdkman 类似 Node 的 nvm,但功能更强——不只管Java,还能管 Maven、Gradle、Kotlin、Scala 等 JVM 生态工具,一个管理器搞定全套。
安装 sdkman
curl -s "https://get.sdkman.io" | bash
安装完毕后重载配置:
source"$HOME/.sdkman/bin/sdkman-init.sh"
sdk version# 有输出就是成功
💡提示: sdkman 会自动把初始化脚本写入 ~/.bashrc / ~/.zshrc,以后每次启动终端自动生效。
用 sdkman 安装 Java
#列出所有可用 Java 版本(内容很多,建议搭配 grep 筛选)
sdk list java
#筛选Temurin(社区最推荐的 OpenJDK 发行版)
sdk list java | grep tem
#安装Java 21 LTS(Temurin 版)
sdk install java 21.0.3-tem
#安装Java 17 LTS
sdk install java 17.0.11-tem
#安装Java 8
sdk install java 8.0.412-tem
sdkman 常用命令速查
命令 | 说明 |
sdk list java | 查看所有可用 Java 版本 |
sdk install java 21.0.3-tem | 安装指定版本 |
sdk use java 17.0.11-tem | 临时切换版本(当前终端有效) |
sdk default java 21.0.3-tem | 设置全局默认版本 |
sdk current java | 查看当前使用版本 |
sdk uninstall java 8.0.412-tem | 卸载某版本 |
sdk list | 列出 sdkman 能管理的所有工具 |
sdk install maven | 安装 Maven |
sdk install gradle | 安装 Gradle |
sdk install kotlin | 安装 Kotlin |
sdk selfupdate | 更新 sdkman 本身 |
为项目固定 Java 版本(.sdkmanrc)
在项目根目录创建.sdkmanrc文件:
# .sdkmanrc
java=17.0.11-tem
然后在项目目录运行:
sdk env# 自动切换到 .sdkmanrc 中指定的版本
sdkman 管理 Maven 和 Gradle
Java 项目几乎离不开构建工具。sdkman可以直接管理 Maven 和 Gradle,比手动下载方便得多:
#安装Maven
sdk install maven
#安装Gradle
sdk install gradle
#验证
mvn --version
gradle --version
Maven 基础命令速查
命令 | 说明 |
mvn --version | 查看版本 |
mvn clean | 清理编译产物 |
mvn compile | 编译 |
mvn test | 运行测试 |
mvn package | 打包(生成 jar/war) |
mvn install | 安装到本地仓库 |
mvn dependency:tree | 查看依赖树 |
配置 Maven 国内镜像(阿里云)
Maven 默认从中央仓库下载,速度很慢。编辑 ~/.m2/settings.xml(没有就新建):
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>阿里云 Maven 镜像</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
Java 常见报错速查
报错信息 | 原因 | 解决方法 |
java: command not found | Java 没安装或 PATH 没配置 | sudo apt install openjdk-21-jdk或 source ~/.bashrc |
sdk: command not found | sdkman 没初始化 | source "$HOME/.sdkman/bin/sdkman-init.sh" |
JAVA_HOME not set | 环境变量没配置 | export JAVA_HOME=$(sdk home java current)写入 ~/.bashrc |
UnsupportedClassVersionError | 代码用更新 Java 编译,当前运行时版本太旧 | sdk use java切换到对应版本 |
Maven 下载依赖超时 | 网络问题 | 配置阿里云镜像(见上文) |
Node.js 与 Java 版本选择建议
用途 | Node.js 推荐版本 | Java 推荐版本 |
学习/入门 | 最新 LTS(当前 Node 20) | Java 21 LTS |
企业项目维护 | 与项目保持一致 | Java 8 或 Java 17 |
全栈开发(React/Vue/Next.js) | Node 20 LTS | — |
Spring Boot 项目 | — | Java 17 或 21 |
Android 开发 | — | Java 17 |
老项目迁移 | Node 18 LTS | Java 8 或 11 |
实战练习
按顺序操作,把两个工具都跑通:
# ===== Node.js 部分=====
# 1. 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
# 2. 安装最新LTS 并设为默认
nvm install --lts
nvm alias default node
# 3. 验证
node --version
npm --version
# 4. 换淘宝镜像
npm config set registry https://registry.npmmirror.com
# 5. 测试:用npm 装一个全局工具
npm install -g nodemon
nodemon --version
# ===== Java 部分=====
# 1. 安装sdkman
curl -s "https://get.sdkman.io" | bash
source"$HOME/.sdkman/bin/sdkman-init.sh"
# 2. 安装Java 21 LTS
sdk install java 21.0.3-tem
# 3. 验证
java -version
# 4. 安装Maven
sdk install maven
mvn --version
# 5. 配置阿里云 Maven 镜像
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << 'EOF'
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>阿里云 Maven 镜像</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
EOF
下一篇预告:开发环境的最后一块:《VS Code 在 Linux 上的安装与配置》——Git 配置规范、Docker 安装入门,把开发工具链大致闭环。