241 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Setting up WSL for Working with freeCodeCamp Locally
 | |
| 
 | |
| > [!NOTE]
 | |
| > Requirements:
 | |
| > 
 | |
| > **WSL 1**: Windows 10 64-bit, version 1607
 | |
| > 
 | |
| > **WSL 2**: Windows 10 64-bit, version 2004, Build 19041 or higher
 | |
| 
 | |
| Follow these guidelines for setting up WSL to set up freeCodeCamp locally.
 | |
| 
 | |
| This guide covers some common issues encountered with the setup of WSL.
 | |
| 
 | |
| ## Enable WSL & Download a Distro
 | |
| 
 | |
| 1) Follow the instructions given in the documentation by Microsoft to install WSL2 (Recommended Distro: Ubuntu18.04):
 | |
| [Installing WSL2](https://docs.microsoft.com/en-us/windows/nodejs/setup-on-wsl2#install-windows-10-insider-preview-build)
 | |
| 
 | |
| > [!NOTE]
 | |
| > You can download a different distro, but the setup might differ.
 | |
| 
 | |
| 2) On the same page, ensure to follow the instructions about installing Nodejs and NPM through the NVM.
 | |
| 
 | |
| **NOTE:** If you encounter errors on step 2, skip to the next step, and return when prompted
 | |
| 
 | |
| ## Setting Up Git
 | |
| 
 | |
| It is likely you will be unable to clone your fork of freeCodeCamp, without running these steps, but there is no harm in trying. Just follow the instructions on [the Contributors Site](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally).
 | |
| 
 | |
| If you run into any issues related to Git, follow through with one of the following alternatives. If that does not resolve the issue, try the next alternative:
 | |
| 
 | |
| ### ALTERNATIVE 1 - Use apt-get to Install the Latest Version of Git
 | |
| 
 | |
| 1) Update your distribution:
 | |
| 
 | |
| ```sh
 | |
| sudo apt update && sudo apt upgrade
 | |
| ```
 | |
| 
 | |
| 2) Download and install Git:
 | |
| 
 | |
| ```sh
 | |
| sudo apt install git
 | |
| ```
 | |
| 
 | |
| 3) Verify the installed version:
 | |
| 
 | |
| ```sh
 | |
| git --version
 | |
| ```
 | |
| 
 | |
| ### ALTERNATIVE 2 - Use SSH to Work on Your Fork
 | |
| 
 | |
| 1) Follow the instructions on [GitHub](https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh) to generate a new SSH key, and add it to your account.
 | |
| 
 | |
| 2) If you encounter an error similar to this, perform the rest of this alternative:
 | |
| 
 | |
|  >ssh: connect to host `github.com` port 22: Connection refused
 | |
| 
 | |
| 3) `cd` into the `.ssh` folder, and create a config file:
 | |
| 
 | |
| ```sh
 | |
| cd ~/.ssh && touch config
 | |
| ```
 | |
| 
 | |
| 4) Open the file with your favourite text editor:
 | |
| 
 | |
| Open VS Code: `code .`
 | |
| 
 | |
| Alternatively, open the folder in the explorer, and use the Windows built-in text editor: `explorer.exe .`
 | |
| 
 | |
| > [!NOTE]
 | |
| > This command works for VS Code, and you might be asked to install an extension for this to work
 | |
| 
 | |
| 5) Add this to the config file to allow GitHub's domain through your firewall:
 | |
| 
 | |
| ```
 | |
| # GitHub Account
 | |
| Host github.com
 | |
|     HostName ssh.github.com
 | |
|     Port 443
 | |
|     PreferredAuthentications publickey
 | |
|     IdentityFile ./id_rsa.pub
 | |
| ```
 | |
| 
 | |
| > [!DANGER]
 | |
| > Provided you have not deviated from the default setup, the `IdentityFile` will be as above.
 | |
| 
 | |
| 6) Return to the GitHub SSH setup to test your connection
 | |
| 
 | |
| ### ALTERNATIVE 3 - Last Resort
 | |
| 
 | |
| 1) Install build-essential, fakeroot and dpkg-dev using the following command:
 | |
| 
 | |
| ```sh
 | |
| sudo apt-get install build-essential fakeroot dpkg-dev
 | |
| ```
 | |
| 
 | |
| 2) Create a directory named git-rectify in the home folder using the following command:
 | |
| 
 | |
| ```sh
 | |
| mkdir ~/git-rectify
 | |
| ```
 | |
| 
 | |
| 3) Change directory to the `get-rectify` directory and get the git source files:
 | |
| 
 | |
| ```sh
 | |
| cd ~/git-rectify
 | |
| ```
 | |
| 
 | |
| 4) This command creates a copy of your `sources.list` file, for safe keeping.
 | |
| 
 | |
| ```sh
 | |
| sudo cp /etc/apt/sources.list /etc/apt/sources.list~
 | |
| ```
 | |
| 
 | |
| > [!NOTE]
 | |
| > If you encounter any errors with the directory not existing, or the file being copied to already existing, follow this step:
 | |
| 
 | |
|  - Enter the directory
 | |
| 
 | |
| ```sh
 | |
| cd ~/git-rectify/etc/apt
 | |
| ```
 | |
| 
 | |
|  - Open your file explorer
 | |
| 
 | |
| ```sh
 | |
| explorer.exe .
 | |
| ```
 | |
| 
 | |
|  - Manually create a copy of the `sources.list` file, and save it with a different name.
 | |
|  - Change directory back to `git-rectify`
 | |
| 
 | |
| ```sh
 | |
| cd ../..
 | |
| ```
 | |
| 
 | |
| Continue from these steps:
 | |
| 
 | |
| 5) Now, you need to uncomment the sources in the ../ file
 | |
| 
 | |
| ```sh
 | |
| sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
 | |
| ```
 | |
| 
 | |
| 6) Get the source files from the list:
 | |
| 
 | |
| ```sh
 | |
| apt-get source git
 | |
| ```
 | |
| 
 | |
| 7) Install all the git dependencies:
 | |
| 
 | |
| ```sh
 | |
| sudo apt-get build-dep git
 | |
| ```
 | |
| 
 | |
| 8) Install libcurl with all development files:
 | |
| 
 | |
| ```sh
 | |
| sudo apt-get install libcurl4-openssl-dev
 | |
| ```
 | |
| 
 | |
| 9) Unpack all the source packages using the following command:
 | |
| 
 | |
| > [!NOTE]
 | |
| > The name `git_2.17.1-1ubuntu0.1` could vary based on the latest version. So look into the directory for the correct version name.
 | |
| 
 | |
| ```sh
 | |
| dpkg-source -x git_2.17.1-1ubuntu0.1
 | |
| ```
 | |
| 
 | |
| 10) Change directory in to `git_2.17.1` folder and open the control file located inside debian folder (git_2.17.1/debian/control) in a text editor. Replace all the occurrences of _“libcurl4-gnutls-dev”_ to _“libcurl4-openssl-dev”_.
 | |
| 
 | |
| 11) Also open _“debian/rules”_ file and delete the line _“TEST=test”_
 | |
| 
 | |
| 12) Build the package files using the following command.
 | |
| 
 | |
| ```sh
 | |
| sudo dpkg-buildpackage -rfakeroot -b
 | |
| ```
 | |
| 
 | |
| 13) Install the package:
 | |
| 
 | |
| ```sh
 | |
| sudo dpkg -i git_2.17.1_amd64.deb
 | |
| ```
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Setup MongoDB on WSL
 | |
| 
 | |
| > [!NOTE]
 | |
| > Remember to return to **step 2** of [Enabling WSL](#enable-wsl-amp-download-a-distro), if you skipped it.
 | |
| 
 | |
| You might find that setting up MongoDB Server on Windows to be the easiest, but connecting to the server from WSL might lead to permission denied errors.
 | |
| 
 | |
| 1) Follow the instructions on the [Microsoft Documentation](https://docs.microsoft.com/en-us/windows/nodejs/databases) for setting up MongoDB on WSL.
 | |
| 
 | |
| If you encounter any errors similar to this:
 | |
| >NonExistentPath: Data directory /data/db not found.
 | |
| 
 | |
| Follow these steps:
 | |
| 
 | |
| 2) Create the path for the database:
 | |
| 
 | |
| ```sh
 | |
| sudo mkdir -p /data/db
 | |
| ```
 | |
| 
 | |
| 3) Try to start the server again. If you encounter a `permission denied` error, start the server with:
 | |
| 
 | |
| ```sh
 | |
| sudo mongod
 | |
| ```
 | |
| 
 | |
| If you encounter another `path` error, manually tell MongoDB where to store the database:
 | |
| 
 | |
| ```sh
 | |
| mongod --dbpath=data/db
 | |
| ```
 | |
| 
 | |
| > [!NOTE]
 | |
| > The path `data/db` must exist beforehand.
 | |
| 
 | |
| ## Other Possible Issues
 | |
| 
 | |
| > ERR! build error gyp ERR! stack Error: not found: make
 | |
| 
 | |
| - Install missing dependencies
 | |
| 
 | |
| ```sh
 | |
| sudo apt-get install -yq /
 | |
| gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 /
 | |
| libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 /
 | |
| libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1libxcursor1 /
 | |
| libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates /
 | |
| fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
 | |
| ```
 |