ArchLinux下VSCode无法联网下载扩展

1. 简介

VSCode 作为「宇宙最强编辑器」,在日常生活办公中自然不可或缺。VSCode 目前有好几个版本,分别是 Code-OSS、Visual-Studio-Code 以及 VSCodium,它们的区别是:

  • Code-OSS 是通过官方源码编译的开源版本。
  • Visual-Studio-Code 是微软官方版本,专有软件。
  • VSCodium 是社区驱动的完全开源版本。

至于它们具体的功能区别参见微软官方介绍 Differences between the repository and Visual Studio Code

2. 问题

Code-OSS 和 VSCodium 作为开源版本,因此微软并没有将扩展商店的 url 提供出来,从而导致这两个版本无法正常联网下载微软源中的扩展(VSCodium 可以下载 open-vsx 源中的扩展)。对于这两个版本,我个人安装的软件包对应为:code、vscodium-bin,如果想要下载微软源中的扩展,它们的解决方案有两种:

2.1 安装 AUR 软件

对于开源版本无法联网下载扩展的问题,已经有大佬在 AUR 上传了对应软件包解决这个问题。

  • 对于 code,需要安装 code-marketplace 包:
1
yay -S code-marketplace
  • 对于 vscodium-bin,需要安装 vscodium-bin-marketplace 包:
1
yay -S vscodium-bin-marketplace

2.2 手动修改 product.json

由微软官方介绍 Differences between the repository and Visual Studio Code 可知,开源版本都维护了一个 product.json 文档来进行私有设置,而扩展商店 url 的设置也在其中,因此我们可以修改 product.json 中扩展商店的 url 来解决问题。

  • 对于 code,product.json 在 ArchLinux 上的路径为 /usr/lib/code/product.json
  • 对于 vscodium-bin,product.json 在 ArchLinux 上的路径为 /usr/share/vscodium-bin/resources/app/product.json

具体做法是将 product.json 中的以下代码

1
2
3
4
"extensionsGallery": {
"serviceUrl": "https://open-vsx.org/vscode/gallery",
"itemUrl": "https://open-vsx.org/vscode/item"
},

替换为

1
2
3
4
5
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
"itemUrl": "https://marketplace.visualstudio.com/items"
},

【注】其实使用第一种方案本质上主要是修改了 product.json 中的这段代码,大家可以在使用第一种方案后尝试对比安装前后的 product.json 的区别。

附录

参考资料: