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连接,发现成功。
特此记录一下不同的解决思路,以备不时之需。