linux 升级 claude code的坑
问题:
如果使用linux包管理器,例如apt 安装了 claude code,然后通过 claude update执行了更新,那么就会导致同时安装了两个版本!
核实版本:
which -a claude
输出:
/home/用户名/.local/bin/claude # 这是claude update安装的版本,优先级最高
/usr/bin/claude # 这是apt等安装的版本
/bin/claude #这是软连接,指向/usr/bin/claude
APT安装
linux(debian or ubuntu)下,可以通过apt安装claude code,官方脚本
先设置 claude apt仓库
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \
-o /etc/apt/keyrings/claude-code.asc
echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \
| sudo tee /etc/apt/sources.list.d/claude-code.list
执行安装
sudo apt update
sudo apt install claude-code
或者通过代理安装
sudo apt -o Acquire::http::Proxy="http://127.0.0.1:你的代理端口" -o Acquire::https::Proxy="http://127.0.0.1:你的代理端口" update
sudo apt -o Acquire::http::Proxy="http://127.0.0.1:你的代理端口" -o Acquire::https::Proxy="http://127.0.0.1:你的代理端口" install claude-code
上述安装命令,安装目录为/usr/bin/claude。
更新
安装完毕后,后期要通过apt更新claude code,千万别执行claude update!
sudo apt update
sudo apt upgrade claude-code
通过代理更新
sudo apt -o Acquire::http::Proxy="http://127.0.0.1:你的代理端口" -o Acquire::https::Proxy="http://127.0.0.1:你的代理端口" update
sudo apt -o Acquire::http::Proxy="http://127.0.0.1:你的代理端口" -o Acquire::https::Proxy="http://127.0.0.1:你的代理端口" upgrade claude-code
claude update 是为非 root 用户设计的自更新机制。为了避免请求 sudo 密码,它默认将新版本安装到用户级目录 ~/.local/bin。在绝大多数 Linux 发行版中,~/.local/bin 在 $PATH 中的顺序优先于 /usr/bin
如果不小心使用了 claude update 进行了升级,可以删掉
# 验证
which -a claude
输出:
/home/用户名/.local/bin/claude
/usr/bin/claude
/bin/claude
# 删除用户级版本, ~/.local/bin/claude 是软链接,实际指向 ~/.local/share/claude/claude.版本号
rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claude
# 刷新 Shell 的缓存
hash -r
# 再次验证
which -a claude
输出:
/usr/bin/claude
/bin/claude
💡 未来的更新策略(二选一)
为了防止以后再搞混,建议统一更新渠道:
-
方案 A(坚持用 APT):删除
~/.local/bin/claude,永远不再执行claude update。以后只通过sudo apt update && sudo apt upgrade claude-code来更新。 -
方案 B(改用自更新):卸载 APT 版本(
sudo apt remove claude-code),只保留~/.local/bin/claude,以后只用claude update来升级。
浙公网安备 33010602011771号