Linux 下 Claude Code 安装与更新指南
Claude Code 简介
Claude Code 是 Anthropic 推出的命令行 AI 编程助手,基于 Claude 大模型,能在终端中直接进行代码编写、调试、重构等操作。支持多文件编辑、Git 集成、Shell 命令执行,是开发者的效率利器。
官方推荐通过 npm 安装,但国内网络环境下 npm 下载 GitHub 资源经常超时。本文介绍一种更可靠的方式:通过淘宝 npm 镜像下载预编译包,绕过网络限制,实现快速安装与更新。
方法一:npm 安装(官方方式)
最简单的方式是通过 npm 全局安装:
npm install -g @anthropic-ai/claude-code
安装完成后直接使用:
claude
注意:npm 安装过程会从 GitHub 下载预编译二进制文件,国内网络可能超时。如果遇到网络问题,推荐使用下面的方法二。
方法二:预编译包手动安装(推荐国内用户)
Claude Code 的 npm 包 @anthropic-ai/claude-code 实际上是 JS wrapper,真正的二进制文件在平台特定的包里。Linux x64 对应的包名为 @anthropic-ai/claude-code-linux-x64。
下载与安装
通过淘宝 npm 镜像下载预编译包:
# 获取最新版本号
VERSION=$(curl -sf https://registry.npmmirror.com/@anthropic-ai/claude-code-linux-x64 \
| python3 -c "import sys,json;print(json.load(sys.stdin)['dist-tags']['latest'])")
echo "Latest version: $VERSION"
# 下载 tarball
curl -fSL -o claude.tgz \
"https://registry.npmmirror.com/@anthropic-ai/claude-code-linux-x64/-/claude-code-linux-x64-${VERSION}.tgz"
# 解压到安装目录
INSTALL_DIR="$HOME/.local/share/claude/versions/$VERSION"
mkdir -p "$INSTALL_DIR"
tar xzf claude.tgz -C "$INSTALL_DIR"
rm claude.tgz
# 创建符号链接
mkdir -p "$HOME/.local/bin"
ln -sfn "$INSTALL_DIR/package/claude" "$HOME/.local/bin/claude"
# 验证
claude --version
这种方式的优点:
- 速度快:淘宝镜像 CDN 在国内下载速度可达 10MB/s+
- 离线可用:下载的 tarball 可以离线安装
- 多版本共存:每个版本独立目录,方便回滚
更新
更新只需重复上述步骤,下载新版本后更新符号链接即可。旧版本目录可保留作为回滚:
# 查看当前版本
claude --version
# 按上面的步骤下载新版本,符号链接会自动指向新版本
# 如需回滚到旧版本
ln -sfn "$HOME/.local/share/claude/versions/2.1.165/package/claude" "$HOME/.local/bin/claude"
自动化升级脚本
如果经常需要更新,可以写一个简单的升级脚本,核心逻辑如下:
#!/usr/bin/env python3
"""Claude Code upgrade via Taobao npm mirror."""
import os, re, subprocess, sys, tarfile, tempfile
from pathlib import Path
NPM_REGISTRY = "https://registry.npmmirror.com"
PACKAGE = "@anthropic-ai/claude-code-linux-x64"
VERSIONS_DIR = Path.home() / ".local" / "share" / "claude" / "versions"
BIN_LINK = Path.home() / ".local" / "bin" / "claude"
def get_current():
r = subprocess.run([str(BIN_LINK), "--version"], capture_output=True, text=True)
m = re.search(r"([\d.]+)", r.stdout.strip())
return m.group(1) if m else "unknown"
def get_latest():
r = subprocess.run(
f'curl -sf "{NPM_REGISTRY}/{PACKAGE}" | python3 -c '
'"import sys,json;print(json.load(sys.stdin)[\'dist-tags\'][\'latest\'])"',
shell=True, capture_output=True, text=True)
v = r.stdout.strip()
return v if re.match(r"^\d+\.\d+\.\d+$", v) else None
def install(version):
url = f"{NPM_REGISTRY}/{PACKAGE}/-/{PACKAGE.replace('@','').replace('/','-')}-{version}.tgz"
dest = VERSIONS_DIR / version
dest.mkdir(parents=True, exist_ok=True)
with tempfile.NamedTemporaryFile(suffix=".tgz", delete=False) as tmp:
subprocess.run(f'curl -fSL -o "{tmp.name}" "{url}"', shell=True)
with tarfile.open(tmp.name, "r:gz") as tf:
tf.extractall(dest, filter="data")
os.unlink(tmp.name)
binary = dest / "package" / "claude"
binary.chmod(0o755)
BIN_LINK.unlink(missing_ok=True)
BIN_LINK.symlink_to(binary)
old = get_current()
latest = get_latest()
if old == latest:
print(f"Already up-to-date: v{latest}")
else:
install(latest)
print(f"Updated: v{old} → v{latest}")
将脚本保存为 claude_upgrade.py,每次更新只需运行:
python3 claude_upgrade.py
对于国内 Linux 用户,推荐使用淘宝 npm 镜像下载预编译包的方式,兼顾速度和可靠性。配合自动化脚本,更新体验与 npm 方式一样便捷。