VSCode is pretty good multi-platform editor made by Microsoft that's available as a snap. Unfortunately, this snap is released under Microsoft's standard product EULA along with the builds available on their GitHub. Fortunately, the source code is available under MIT license. Here's how I built it.
The following work served as a great introduction to gulp, a JS build system, and yarn, a JS package manager.
You can either use LXD or systemd-nspawn to create a container to build it. Or you can build it locally if you already have yarn installed but I wanted to separate the two as I move to creating my build server in the near future.
I pulled a lot of build instructions from the Azure Pipelines YAML file Microsoft uses to build the binary.
Create and start container using LXD.
lxc init images:debian/buster/amd64 vscode lxc start vscode $ lxc exec vscode -- /bin/bash
Install the latest yarn
# apt install gpg curl apt-transport-https lsb-release # curl -Ss https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - # echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list # apt update && apt install yarn
Install the latest Node
# curl -Ss https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - # echo "deb https://deb.nodesource.com/node_10.x buster main" | tee -a /etc/apt/sources.list.d/nodesource.list # echo "deb-src https://deb.nodesource.com/node_10.x buster main" | tee -a /etc/apt/sources.list.d/nodesource.list # apt update && apt install nodejs
Install build tools
# apt install gcc g++ make
Install VSCode dependencies
# apt install git make pkg-config fakeroot libx11-dev libxkbfile-dev libsecret-1-dev libgtk-3-0 libasound2 libnotify4
Clone and build VSCode as a local user
# adduser vscode # su -l vscode $ git clone https://github.com/Microsoft/vscode.git $ cd vscode/build (increase max memory usage for Node) $ export NODE_OPTIONS="--max-old-space-size=4096" $ yarn global add typescript gulp-yarn gulp-cli $ yarn $ yarn postinstall $ yarn gulp $ yarn gulp compile-build $ yarn gulp compile-extensions-build $ yarn gulp minify-vscode $ yarn gulp vscode-linux-x64-min-ci $ yarn gulp vscode-linux-x64-build-deb # dpkg -i /home/vscode/vscode/.build/linux/deb/amd64/deb/code-*.deb
Forward X11 socket to display on container host
Install X11 dependencies in the container
# apt install xorg xpra ssh
Install X11 dependencies in the host
$ sudo apt install xpra
Run VSCode - OSS version from the host
(get IP address of container from lxc ls) $ xpra start ssh:vscode@<ip-address> --start=code-oss
If you'd rather not follow through with these instructions, you can also install a prebuilt OSS version at VSCodium.
Addendum: gpg keys
For posterity's sake I'm including the GPG signatures so you can verify that you've imported the right ones.
## YARN $ curl -Ss https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --show-keys pub rsa4096 2016-10-05 [SC] 72ECF46A56B4AD39C907BBB71646B01B86E50310 uid Yarn Packaging <email@example.com> sub rsa4096 2016-10-05 [E] sub rsa4096 2016-10-05 [S] [expired: 2017-10-05] sub rsa4096 2016-10-30 [S] [expired: 2019-01-01] sub rsa4096 2017-09-10 [S] [expired: 2019-01-01] sub rsa4096 2019-01-02 [S] [expires: 2020-02-02] sub rsa4096 2019-01-11 [S] [expires: 2020-02-02] --- ## NODESOURCE (NODEJS) $ curl -Ss https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --show-keys pub rsa4096 2014-06-13 [SC] 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280 uid NodeSource <firstname.lastname@example.org> sub rsa4096 2014-06-13 [E]