github-desktop/docs/contributing/setup-linux.md
David Ferenczy Rogožan c1f15fb395 Python dependency upgraded to version 3
node-gyp officially requires Python 3
2021-05-13 04:01:43 +02:00

2.1 KiB

Setting Up Development Dependencies on Linux

You will need to install these tools on your machine:

  • Node.js
  • Yarn
  • Python 3
  • Electron dependencies

Node.js

The NodeJS project has instructions for installing across a variety of distributions and package managers.

Find your distribution on this list and follow the instructions to install the version you require.

Ensure that you also choose the option for building native Node modules, as those are used in some dependencies used in GitHub Desktop.

Yarn

Follow this guide to install a system-level yarn for your distribution. GitHub Desktop uses a local version of yarn, but it needs a version on your PATH to bootstrap itself.

This is important because yarn uses lock files to pin dependencies. If you find yourself changing packages, this will prevent mismatches in versions between machines.

If you're not familiar with yarn, please read this document to help familiarize yourself with how to do the common package tasks that are relevant to Desktop.

Python 3

Refer to your distributions package manager to obtain the latest version of the Python 3 series.

Electron dependencies

There are some additional dependencies which are required as part of building and running GitHub Desktop locally:

  • libsecret-1.so.0 for reading and writing credentials using keytar
  • libXss.so.1 - the library for the X11 screen saver extension
  • libgconf-2-4.so.4 - library for accessing GNOME configuration database

Where to find these will vary based on your distribution, but below are some examples of distributions we've tested.

Fedora 26 and later

$ sudo dnf install -y libsecret-devel libXScrnSaver

Ubuntu 14.04 and later

$ sudo apt install libsecret-1-dev libgconf-2-4

Back to setup

Once you've installed the necessary dependencies, head back to the setup page to finish getting set up.