linux离线装vscode插件必须用code --install-extension加绝对路径,禁用拖拽(因桌面环境拦截严重),需--allow-unverified绕证书错误,并手动同步lsp服务端及确保架构匹配。

Linux 下离线装 VSCode 插件,核心就一条:用 code --install-extension 加绝对路径,别信相对路径、别拖拽、别解压。 其他方式要么静默失败,要么漏依赖,尤其带 LSP 的插件(比如 Python、Prettier、Volar)根本跑不起来。
为什么拖拽 .vsix 到 VSCode 窗口在 Linux 上大概率没反应
不是文件坏了,是 Linux 桌面环境(GNOME/KDE/X11/Wayland)对拖放事件拦截太狠。VSCode 只在极少数组合下能收到信号——比如 GNOME + X11 + 窗口有焦点 + 未全屏 + 已打开工作区(哪怕只是空文件夹)。实测中超过 70% 的失败都卡在这儿。
- 拖进去没弹框?先按
Ctrl+Shift+P输入Developer: Toggle Developer Tools,看 Console 有没有dragover或drop事件被阻止 - Wayland 下基本无效,直接放弃;X11 下也建议优先走命令行
- 即使拖成功了,插件默认是禁用状态,还得手动点「启用」——这点很多人忽略,以为装完就能用
code --install-extension 必须用绝对路径且不能含中文
Linux 下这个命令对路径极其敏感:相对路径(如 ./ext/python.vsix)一定失败;路径含中文或空格不加引号,会报 ENOENT 但不提示具体哪错了。
- 正确写法:
code --install-extension /home/username/vscode-ext/ms-python.python-2024.6.0.vsix - 含空格必须加英文双引号:
code --install-extension "/home/username/my ext/prettier-9.10.3.vsix" - 如果提示
command not found: code,说明 CLI 没注册:在已启动的 VSCode 中按Ctrl+Shift+P,输入Shell Command: Install 'code' command in PATH并执行 - 离线环境常因证书链缺失报
INVALID_SIGNATURE,此时必须加--allow-unverified参数:code --install-extension python.vsix --allow-unverified
装上了却没语法高亮/跳转?LSP 服务根本没落地
像 ms-python.python、volarjs.volar 这类插件,.vsix 只是前端壳,首次启用时才去下载 pyright-server 或 volar-server。离线状态下它就卡在「Downloading…」或直接跳过,结果打开 .py 文件就是纯文本。
- 正确做法:在有网机器上,用相同版本 VSCode 打开一个
.py文件,等状态栏显示Python extension activated和Pyright ready后,把整个~/.vscode/extensions/ms-python.python-2024.6.0/目录(含node_modules和二进制 server)拷到内网机对应路径 - 拷完必须彻底退出 VSCode:终端执行
killall code(或pkill -f "code.*--no-sandbox"),确保托盘进程也消失,否则缓存不刷新 - 验证是否真生效:
Ctrl+Shift+P输入Developer: Show Running Extensions,看对应插件状态是不是Local而非Marketplace
最易被忽略的一点:ARM64 架构机器(比如 M1/M2 Mac 或部分国产 ARM 服务器)若装了 x64 构建的 .vsix,VSCode 不报错,只是静默跳过 native 二进制加载——结果就是 LSP 功能全丢。查方法:解压 .vsix 后看 package.json 里有没有 darwin-arm64 或 linux-arm64 字段,没有就得换包。











