Skip to content

General Information and Checklist

Covers the minimum setup needed to turn Linux into a developer machine.

This document is written for Ubuntu versions. (Mainly for Ubuntu 18.04 LTS (Bionic Beaver)) It will soon be prepared for Debian 10 (Buster) as well.


root and sudo users and user directories


To install programs or make system-level changes on Linux, there is a built-in user called root. Without leaving your own user space, you temporarily become the root user and install things. However, this is not a good method, because the root user of a machine is the god of that machine, and if you make a mistake as root, there is no going back.

For this reason, ordinary users of the system are given some of the privileges of the root user. On Ubuntu this happens automatically during installation.

A user who has been given some of the privileges of the root user is called a sudo user. On Linux systems, user directories are located in the /home directory. It is dangerous to dance around in directories outside /home.

Root folder

Root folder home

Root folder home users

$USER is a system variable and refers to the name of the user currently using the system.

Attention! Linux (unlike Windows) is a case-sensitive operating system. That is, uppercase and lowercase letters are treated as different.

If you type echo $USER in the terminal and press enter, you will see your username.

If you get lost in the terminal, you can type the pwd command and press enter to see the directory you are currently in.

In the terminal, ./ refers to the directory you are in and ../ refers to the parent directory.

Basic System Update and Package Installation Commands

To install a program on Linux (from now on let's call it a package), type the following in the terminal

sudo apt install [package_name]

and run it.

At this point sudo asks for a password. This password is your computer's login password.

Updating the packages already installed on the computer (system update) before starting the installation is not mandatory, but it is a good practice (best practice).

To do this, run the following in the terminal

# fetches package information from the repositories
sudo apt update
# optionally, if you want to see the list of packages
# that will be upgraded before installing them
apt list --upgradable
# upgrades/installs the new packages that need to be updated
sudo apt upgrade

or, in short

sudo apt update && sudo apt upgrade

type it and press enter to run it.

After the update finishes, you can start doing any installations you like.

Please refer to this snippet: Updating ubuntu 18.04 for easy updating script.

General Installations

Installed with the package manager (apt)

Refer to this for Debian 10 (Buster) PHP repos.

sudo add-apt-repository universe
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# One-liner
sudo apt install -y \
  git curl jq unrar-free p7zip-full p7zip-rar unzip \
  gimp wine-stable vokoscreen gnome-tweaks

sudo apt install -y apache2 apache2-utils

# php 7.4
sudo apt install -y \
  php7.4 php7.4-cli php7.4-common php7.4-mbstring \
  php7.4-zip php7.4-xml php7.4-curl php7.4-bcmath \
  php7.4-json php7.4-gd php7.4-mysql php7.4-opcache \
  php7.4-xml libapache2-mod-php7.4 php7.4-apcu php7.4-pcov \
  php-uploadprogress

sudo a2enmod expires headers deflate rewrite php7.4

# php 8.1
sudo apt-get install -y \
  php8.1 php8.1-cli php8.1-common php8.1-mbstring \
  php8.1-zip php8.1-xml php8.1-curl php8.1-bcmath \
  php8.1-gd php8.1-mysql php8.1-opcache \
  php8.1-xml libapache2-mod-php8.1 php8.1-apcu php8.1-pcov \
  php8.1-uploadprogress

sudo a2enmod http2 expires headers deflate rewrite php8.1

# Check whether only one version of PHP is installed.
sudo update-alternatives --config php

Installed by downloading

Visual Studio Code

Option 1: Install with Snap

sudo snap install vscode --classic

Option 2: Install by downloading

VS Code Official Download Page 64-Bit

Google Chrome

Chrome Official Download Page

Yandex Browser

Yandex Official Download Page

Firefox Developer Edition

Firefox Official Download Page

Download & Install
mkdir -p /home/$USER/stand-alone-apps

cd /home/$USER/Downloads && \
  wget -O firefox-developer.tar.bz2 \
    "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US"

cd /home/$USER/Downloads && \
  tar -jxf firefox-developer.tar.bz2 \
    --directory /home/$USER/stand-alone-apps/

mv /home/$USER/stand-alone-apps/firefox/ \
  /home/$USER/stand-alone-apps/firefox_dev/
Create Shortcut Icon
# Create shortcut file
gedit /home/$USER/.local/share/applications/firefox_dev.desktop

Paste the text below into the file. Make sure changing the username with your username.

[Desktop Entry]
Name=Firefox Developer
GenericName=Firefox Developer Edition
Exec= /home/username/stand-alone-apps/firefox_dev/firefox
Terminal=false
Icon=/home/username/stand-alone-apps/firefox_dev/browser/chrome/icons/default/default128.png
Type=Application
Categories=Application;Network;X-Developer;
Comment=Firefox Developer Edition Web Browser.

Other

Docker && Lando

mkdocs

MKDocs installation tutorial

Environment info
python --version
# Python 2.7.17

pip --version
# pip 19.2.3 from /home/username/.local/lib/python2.7/site-packages/pip (python 2.7)

python3 --version
# Python 3.6.9

pip3 --version
# pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

mkdocs --version
# mkdocs, version 1.1 from /home/username/.local/lib/python3.6/site-packages/mkdocs (Python 3.6)
Installation
sudo apt install python3-pip
# python3 -m pip install --user --upgrade pip
pip3 install mkdocs
pip3 install mkdocs-material==4.6.3 \
  mkdocs-minify-plugin pygments \
  mkdocs-git-revision-date-localized-plugin
cd /to/repo/root
mkdocs serve
# mkdocs
Troubleshooting

If mkdocs serve or mkdocs build does not work (because of mkdocs command not found error), please add the path to your $PATH variable in your .bashrc or profile file.

export PATH="/home/username/.local/lib/python3.6/site-packages:$PATH"

Conky System Monitor

Please refer to conky theme repository.

Shutter (Screenshot Tool)

Please refer to New Shutter PPA For Ubuntu 20.04, 19.10, 19.04 And 18.04 | Linux Mint 19.x.

Installed with commands taken from tutorials

node & npm & n

First, install node and npm from official Ubuntu repos.

sudo apt install nodejs npm

Their versions will be as follows as of October, 7 2020.

npm is already the newest version (3.5.2-0ubuntu4)
nodejs is already the newest version (8.10.0~dfsg-2ubuntu0.4)

It is better to manage node and npm itself with n.

Globally install n with the following command.

sudo npm install -g n

Then, download node versions you wish to use from this release page.

# download the latest version (14.x for now)
sudo n --download latest

# download 10.x LTS latest
sudo n --download 10.22.1

# download 12.x LTS latest
sudo n --download 12.19.0

Now you can switch between node/npm versions whenever you want by typing the following command, which will show you a list of node version you have downloaded previously and let you select one.

sudo n

# After selecting one, check the versions via
node --version
npm --version

If you encounter command not found, etc. errors, consider exporting your path or restarting your machine.

Utils & More

Creating an SSH Key and/or transferring it from another machine

Please refer to this page for further details if needed.

The SSH Key must always be created with a passphrase.

ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "[email protected]"

SSH Key Permissions

chmod 700 ./.ssh
chmod 644 ./.ssh/authorized_keys
chmod 644 ./.ssh/known_hosts
chmod 644 ./.ssh/config
chmod 600 ./.ssh/id_rsa
chmod 644 ./.ssh/id_rsa.pub
chmod 600 ./.ssh/id_ed25519
chmod 644 ./.ssh/id_ed25519.pub

Visual Studio Code Extensions & Settings

The list and settings will be added.

Ubuntu Gnome Tweak Tool

The settings will be added.

RIOT

Radical Image Optimization Tool.

Zoom

Zoom Download Center

AnyDesk

Download and install AnyDesk remote desktop connection from here.

MS Core Fonts

sudo apt install ttf-mscorefonts-installer

SQLeo Visual Query Builder

SQLeo Visual Query Builder - sourceforge

SQLeo Visual Query Builder - GitHub

gedit /home/$USER/.local/share/applications/sqleo.desktop

[Desktop Entry]
Name=SQLeo Visual Query Builder
GenericName=SQLeo Visual Query Builder
Exec= java -jar /home/username/stand-alone-apps/SQLeoVQB.2019.01.rc1/SQLeoVQB.jar
Terminal=false
Icon=/home/username/stand-alone-apps/SQLeoVQB.2019.01.rc1/query_734389.png
Type=Application
Categories=Application;Network;X-Developer;
Comment=SQLeo Visual Query Builder.