aikaryashala

A development environment, from scratch.

Five steps take a brand-new Windows machine to a working Linux setup with toolchains for C, Python and Java. Every step is one command you can copy. Nothing here assumes you have used a terminal before.

Start here

Work through the steps in order. Step 1 runs on Windows and installs Linux. Everything after that runs inside Linux.

Want to know why?

The book: understanding behind the scenes, what is happening internally and how the whole systems and programs work.

The steps tell you what to type. The book explains what is happening underneath, in plain English — what a shell is, what a compiler does, why ./hello needs those two characters. Read it alongside the steps, or come to it when a word puzzles you.

Optional extras

These seven stand on their own. Nothing in steps 1 to 5 needs them, and they are not part of the install-everything command below. Add them whenever you want what they contain.

Or install everything at once

Once step 1 is done and you have an Ubuntu terminal open, this single command runs steps 2 through 5 back to back. It takes a few minutes.

$ curl -fsSL https://aikaryashala.com/system_setup/scripts/install_all.sh | bash

That is everything most people need. The extras below are optional — skip this second command entirely unless you want what steps 6 to 12 contain, and you can always come back and run it later.

$ curl -fsSL https://aikaryashala.com/system_setup/scripts/install_all.sh | STEPS="more_cmds binary uv maven_gradle sanitizers py_debug" bash
Before you paste that

Piping a script from the internet into your shell runs whatever that script contains. That is worth being careful about — including here. Every script on this site is plain text you can read first: open it in your browser, or read it on GitHub.

What you end up with

AreaToolsWhy these
Operating system Ubuntu 24.04 on WSL 2 Real Linux, running next to Windows, sharing your files.
C (step 3) clang, lldb Clang explains its errors better than any other C compiler, and LLDB is its matching debugger.
Binary inspection (step 7) xxd, hexyl, hexdump, od, objdump, readelf Seeing a program as bytes is how you learn what compiling actually produced.
Python (step 4) python3 The interpreter. Enough to write a program and run it. The debugger is step 12.
Python packages (step 8) uv Replaces pip, venv, pyenv, pipx and poetry with one tool that is also far faster.
Java (step 5) Temurin JDK, javac, java, jshell The mainstream OpenJDK build, kept current. Maven and Gradle are step 9.

What you need

Already on Linux or a Mac with Ubuntu in a container? Skip step 1 — steps 2 to 5 are ordinary Ubuntu package installs and work anywhere APT does.

How to read the pages

Code blocks on this site look like this:

$ clang --version
Ubuntu clang version 18.1.3