# Linux

As Linux is essentially the *dream* programming environment, very little setup is needed for the Lab part of this course. Furthermore, with Linux users, we expect that some of the following steps are not necessary as the requirements are likely already satisfied on your system, so you may skip any steps at your discretion.

{% hint style="info" %}
The framework has been tested on **Ubuntu 24.04** and **Arch Linux.** Other Linux distros should work just as well as long as they support up-to-date versions of VS Code, clang, and cmake.
{% endhint %}

***

## Step 1: Install VS Code

Download and install [Visual Studio Code](https://code.visualstudio.com/download) (VS Code) for Linux.

***

## Step 2: Install the Required Packages

To work with the given assignment framework, you will need `clang`, `make`, `cmake` and `git` , along with other system-specific packages needed for address sanitization.

{% tabs %}
{% tab title="Ubuntu & Debian" %}

```bash
sudo apt update && sudo apt install -y cmake clang make llvm libclang-dev
```

{% endtab %}

{% tab title="Arch Linux" %}

```bash
sudo pacman -S clang make cmake git compiler-rt
```

{% endtab %}
{% endtabs %}

***

## Step 3: Set up SSH with GitHub

One of the easiest ways to access your GitHub account (and with that your private repository) is to set up a Secure Shell (SSH) key. Follow the [GitHub SSH Setup Guide](https://computerscienceeducation.gitbook.io/co-lab-manual/setup-guides/github-ssh-setup) for this.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://computerscienceeducation.gitbook.io/co-lab-manual/setup-guides/technical-setup/linux.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
