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 方式一样便捷。