vscode-server端问题记录

问题描述

vscode-remote连接某国产平台时,vscode-server触发了更新,由于复杂的网络问题,导致一直卡在vscode-server的下载安装和初始化部分。长时间停留在installing and setting up visual studio coder server.....无响应。

失败方案

1. 离线更新vscode-server

我最先想到的方案是关闭远程连接的尝试,删除 ~/.vscode-server/bin/<commit-id>下的文件。

首先遇到了:

  • 无法删除 .nfs000000000000001709cf70000000059353等的设备忙或资源忙
  • 无法删除node_moudules.node-pty/build/release 目录非空

通过fuser -km <directory>的方式,可以把占用的进程杀死,踢出用户。 然后重新ssh登录就可以删除。

然后,前往下述网站下载最新的server包(将<commit-id>替换成具体的id)。

https://update.code.visualstudio.com/commit:<commit-id>/server-linux-x64/stable

接着,上传到服务器并解压。

scp ~/Downloads/vscode-server-linux-x64.tar.gz sw:~/.vscode-server/bin/
#切到神威上
cd ~/.vscode-server/bin/
mkdir -p <commit-id> 
tar -zxvf vscode-server-linux-x64.tar.gz 
mv vscode-server-linux-x64/*   <commit-id>/
rm -rf vscode-server-linux-x64* 

尝试从宿主机重启vscode,初次成功登录远端主机,但很快进入远程主机重新加载,再次陷入installing and setting up visual studio coder server.....无响应。

2. 强制本地scp

关闭vscode的远端连接,删除上述内容后。找到vscode 设置(可以直接在设置面板搜索download):

Remote.SSH: Local Server Download
(扩展是否可以在客户端上下载 VS Code 服务器,并使用 scp 将其传输到主机,而不是将其下载到主机上。)

将上述设置的选项调为always

Cmd/Ctrl+Shift+P重载vscode窗口,重新连接,仍然是上述问题。

3. 尝试从其他服务器端复制vscode-server

由于笔者所在的SW终端机实际架构是沿用Centos,因此在连接的客户端相同的情况下,vscode-server是和其他linux主机相同的。我尝试在网络状况较好的实验室主机hades0上,由服务器端更新了vscode-server,并将~/.vscode-server/bin/<commit-id>打包传输到sw相同目录下,具体步骤仍然是同 方案1。

仍然失败,但日志中多了一些scp命令,根据显示来看是将sw主机端中的一部分cli相关文件,拷贝到~/.vscode-server/cli/servers/,同时由主机端再次尝试下载vscode-server

成功解决

借鉴了上述第三步中的日志,初步猜测是vscode在server上的命令行工具(cli)和vscode-server的适配有些问题。我尝试将hades0上更新成功的cli相关文件一起拷贝到了sw上:

#hades0上
cd ~/.vscode-server/cli
tar -zcvf vscode-server-cli.tar.gz ./servers
scp vscode-server-cli.tar.gz sw:~/.vscode-server/cli/
#sw上
cd ~/.vscode-server/cli/ 
#风险操作 但因为hades0上只有我的commit-id文件 因此直接覆盖到sw对应目录下
#建议先解压到其他位置 再将包含自己commit-id的目录 移动到servers下面
tar -zxvf vscode-server-cli.tar.gz 

起作用的是下面两个目录。

Stable-<commit-id>
Stable-<commit-id>.staging

要保证~/.vscode-server/bin/<commit-id>的文件和上述cli文件是适配的。最好是从相同服务器上复制过来的相同commit-id文件。

再次重载vscode,尝试remote-ssh连接,发现成功。

特此记录一下不同的解决思路,以备不时之需。


vscode-server端问题记录
http://example.com/posts/b6e3bc27/
发布于
2023年9月9日
许可协议