SDK环境安装记录

0x01 Java

$HOME/.data/java/current

将 Java SDK 文件夹放在同级目录

ln -s $HOME/.data/java/graalvm-v17.0.14 $HOME/.data/java/current

$HOME/.data/java/env

export JAVA_HOME="$XDG_DATA_HOME"/java/current
export PATH=$PATH:$JAVA_HOME/bin

0x02 Maven

$HOME/.data/maven/current

将 Maven SDK 文件夹放在同级目录

ln -s $HOME/.data/maven/v3.9.10 $HOME/.data/maven/current

$HOME/.data/maven/current/conf/settings.xml

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <localRepository>/root/.data/maven/repo</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>
  <profiles>
  </profiles>
</settings>

$HOME/.data/maven/env

export MAVEN_HOME="$XDG_DATA_HOME"/maven/current
export PATH=$PATH:$MAVEN_HOME/bin

0x03 Go

$HOME/.data/go/current

将 Go SDK 文件夹放在同级目录

ln -s $HOME/.data/go/v1.26.2 $HOME/.data/go/current
mkdir -p $XDG_DATA_HOME/go/storage

$HOME/.data/go/env

export GOENV="$GOPATH/env"
export GOROOT="$XDG_DATA_HOME/go/current"
export GOPATH="$XDG_DATA_HOME/go/storage"
export GOMODCACHE="$GOPATH/module"
export GOCACHE="$GOPATH/build"
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"

0x04 Node.js

$HOME/.data/nodejs/current

将 Node.js SDK 文件夹放在同级目录

ln -s $HOME/.data/nodejs/v22.20.0 $HOME/.data/nodejs/current

$HOME/.data/nodejs/current/npmrc

固定NPM全局包安装位置以及定义NPM缓存目录

prefix=${NODE_HOME}
cache=${NODE_HOME}/lib/node_cache

$HOME/.data/nodejs/env

把版本固定在sdk内部

export NODE_HOME="$XDG_DATA_HOME"/nodejs/v25.9.0
export NODE_PATH="$NODE_HOME"/lib/node_module
export PNPM_HOME="$NODE_HOME"/lib/pnpm_data
export NPM_CONFIG_GLOBALCONFIG="$NODE_HOME"/npmrc # NPM全局配置固定
export PATH=$NODE_HOME/bin:$NODE_PATH:$PNPM_HOME:$PATH

0x05 Bun

$HOME/.data/bun/current

ln -s $HOME/.data/bun/v1.3.13 $HOME/.data/bun/current
mkdir -p $HOME/.data/bun/current/bin
mv $HOME/.data/bun/current/bun $HOME/.data/bun/current/bin/

$HOME/.data/bun/env

# Bun 根目录指向 current 软链接
export BUN_INSTALL="$XDG_DATA_HOME/bun/current"

# Bun缓存目录
export BUN_INSTALL_CACHE_DIR="$BUN_INSTALL/cache"

# 将 Bun 的 bin 目录加入 PATH
export PATH="$BUN_INSTALL/bin:$PATH"

0x06 Rust

$HOME/.data/rust/current

# 先在 .zshrc 中把环境变量配置一下
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

0x07 uv

$HOME/.data/uv/current

# 建立软链接
ln -s $HOME/.data/uv/v0.11.7 $HOME/.data/uv/current

$HOME/.data/uv/env

# uv 二进制文件所在位置
export UV_HOME="$XDG_DATA_HOME"/uv/current

# 核心:将缓存、数据、Python 解释器全部收拢到 uv 的目录下
export UV_CACHE_DIR="$XDG_CACHE_HOME"/uv
export UV_DATA_DIR="$UV_HOME"/data
export UV_PYTHON_INSTALL_DIR="$UV_HOME"/python

# 将 uv 及其安装的工具 bin 目录加入 PATH
export PATH=$PATH:$UV_HOME:$UV_DATA_DIR/bin

0xFF Environment Variables

/etc/zsh/zshenv

添加到 zshenv 文件中

export ZDOTDIR=$HOME/.config/zsh
export XDG_CONFIG_HOME=$HOME/.config
export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.data
export XDG_STATE_HOME=$HOME/.state

$HOME/.config/zsh/.zshrc

添加到 .zshrc 文件中

# java
source $HOME/.data/java/env

# Maven
source $HOME/.data/maven/env

# go
source $HOME/.data/go/env

# nodejs
source $HOME/.data/nodejs/env

# bun
source $HOME/.data/bun/env

# uv
source $HOME/.data/uv/env

# Rust
export RUST_HOME="$XDG_DATA_HOME"/rust
export RUSTUP_HOME="$RUST_HOME"/rustup
export CARGO_HOME="$RUST_HOME"/cargo
export PATH=$PATH:$CARGO_HOME/bin