Skip to content

Native Linux

Last updated 2026-08-20 · 6 notes · 5 tags

Tags: linux ubuntu mint setup getting-started

For Ubuntu or Linux Mint as a normal install (or a full virtual machine) — not WSL. After Linux is installed, the tool list matches the WSL guide so either environment works for the later pages.

Note: If you use Windows every day and only want a Linux terminal, prefer WSL on Windows instead.

1. Install the operating system

  1. Download Ubuntu Desktop or Linux Mint from the official site.
  2. Create a bootable USB (use the maker tool recommended on that site).
  3. Boot from the USB and complete the installer.
  4. Log in, connect to the internet, and apply the first round of system updates from the Software Updater if it appears.

Note: During install, write down the username you create — that is your Linux account for sudo commands.

2. Update the system

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Verify:

lsb_release -a
uname -a

3. Git

sudo apt install git -y
git --version

4. GitHub CLI (gh)

(type -p wget >/dev/null || sudo apt install wget -y)

wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg \
| sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg

sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
| sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null

sudo apt update
sudo apt install gh -y
gh --version

5. Python, pip, and venv

sudo apt install python3 python3-pip python3-venv -y
python3 --version
pip3 --version

Note: Use a virtual environment per project. See Python virtual environments. Do not treat global pip install as your default habit.

6. pipx and uv

sudo apt install pipx -y
pipx ensurepath

Open a new terminal window, then:

pipx --version
pipx install uv
uv --version

7. Node.js (LTS) with nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

Restart the terminal, then:

nvm install --lts
node --version
npm --version

8. Cursor or VS Code

Install from the official site for Linux, or use your distribution’s software center if the vendor package is listed.

  • Cursor: https://cursor.com
  • VS Code: https://code.visualstudio.com/

Verify (if the code command is on your PATH):

code --version

9. Ollama (optional)

curl -fsSL https://ollama.com/install.sh | sh
ollama --version
ollama pull qwen3:4b
ollama list

10. Handy utilities

sudo apt install tree zip unzip curl wget trash-cli ffmpeg jq -y
tree --version
curl --version
trash-put --version
jq --version

Note: Set up safe delete next so everyday rm mistakes are recoverable.

11. Git identity and GitHub login

git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --list

gh auth login
gh auth status

12. Project folder

mkdir -p ~/projects
cd ~/projects
pwd

Note: Keeping all projects under ~/projects makes paths easier to remember and to share with an AI assistant.

13. Quick health check

git --version
gh --version
python3 --version
pip3 --version
pipx --version
uv --version
node --version
npm --version
tree --version
curl --version
wget --version
jq --version
ffmpeg -version
trash-put --version

14. Keeping things updated

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
pipx upgrade-all

Note: On Mint, the Update Manager GUI is fine for system packages; still use the terminal for pipx / nvm / Ollama as shown above.

Common mistakes

  • sudo asks for your user password.
  • If a brand-new terminal still cannot find nvm or pipx, log out and back in once.
  • Mint is Ubuntu-based; these apt commands apply to both in almost all cases used here.

This content repository is based on the hands-on experience of Naveen Bachwani. AI tools were also used in augmenting and refining it. The goal is to help non-technical users get familiar with these tools, so they may be able to use them effectively.

Readers are responsible for using any commands or instructions provided here with appropriate caution. The creator of this site accepts no responsibility for system damage, data loss, or other consequences resulting from their use.