Zum Inhalt springen

Offline: Dev Container

Diese Anleitung basiert auf der Anleitung zum Setup von Visual Studio Code bei CS50. Dort finden Sie ausführlichere Erläuterungen.

Die Anleitung beschreibt Windows, macOS und Linux.

Einrichtung

Unter Windows 11 erledigt ein Skript von uns die Einrichtung. Unter Windows 10 läuft es nicht; nehmen Sie dort die Online-Variante GitHub Codespaces. Sie brauchen etwa 15 bis 30 Minuten, etwa 20 GB freien Speicherplatz, eine Internetverbindung, am besten das Netzteil am Laptop und meist einen Neustart zwischendurch. Was schon auf Ihrem Rechner ist, etwa VS Code, nutzt das Skript weiter. Setzen Sie sich ein Lesezeichen auf diese Seite: Nach dem Neustart brauchen Sie sie wieder.

Den ganzen Ablauf zeigt ein Video (6 Minuten).

Hat Ihr Laptop einen ARM-Prozessor (etwa Snapdragon; unter „Einstellungen > System > Info“ steht dann bei „Systemtyp“ „ARM-basierter Prozessor“), fragt das Skript nach, ob Sie hier einrichten wollen. Docker lädt dann die ARM-Fassung der Kursumgebung. Auf Laptops mit Snapdragon haben wir sie noch nicht selbst ausprobiert; klappt etwas nicht, etwa der DebuggerWerkzeug, mit dem Sie ein Programm Zeile für Zeile ablaufen lassen und dabei die Werte der Variablen ansehen. In CS50 setzen Sie mit einem Klick links neben eine Zeilennummer einen Haltepunkt und starten dann mit debug50 ./programm den Debugger von VS Code. Glossar →, weichen Sie auf GitHub Codespaces aus und sagen uns im Tutorium Bescheid.

  1. PowerShell öffnen. Klicken Sie auf Start (das Windows-Symbol unten), tippen Sie PowerShell und klicken Sie auf „Windows PowerShell“ (nicht „ISE“). Es öffnet sich ein Fenster mit Text, in das Sie Befehle eingeben können. Wählen Sie nicht „Als Administrator ausführen“; wo Rechte nötig sind, fragt Windows selbst.

  2. Zeile einfügen. Fahren Sie mit der Maus über den grauen Kasten unten; rechts darin erscheint ein Knopf zum Kopieren. Klicken Sie ihn an. Klicken Sie dann mit der rechten Maustaste in das PowerShell-Fenster (oder drücken Sie Strg + V); damit fügen Sie die Zeile ein. Drücken Sie Enter.

    Der rote Kasten erklärt, warum man so eine Zeile nur aus vertrauenswürdiger Quelle ausführt. Diese hier stammt von uns, von inf.zone; Sie können sie ausführen. Was das Skript tut, können Sie vorher ansehen.

    Nie wahllos Skripte aus dem Internet laden und ausführen. Eine Zeile wie diese lädt ein Programm aus dem Internet und reicht es sofort zum Ausführen weiter (| bash, | iex), mit allen Rechten Ihres Benutzerkontos und ohne dass Sie es vorher sehen. Wer Ihnen so eine Zeile unterschiebt, kann damit Ihre Dateien löschen, Passwörter mitlesen oder Schadsoftware einrichten. Führen Sie sie deshalb nur aus, wenn Sie der Quelle vertrauen, und genau so, wie sie dort steht: von dieser Seite (Adressen auf inf.zone) oder von der offiziellen Seite des Programms. Zeilen aus Foren, Chats, E-Mails, Videos oder von einer KI führen Sie nie ungeprüft aus.

    irm https://inf.zone/setup-windows.ps1 | iex
    Wenn Windows die Zeile blockiert

    Es kann vorkommen, dass Microsoft Defender die Zeile für Schadsoftware hält. PowerShell meldet dann etwa „Dieses Skript enthält schädliche Inhalte und wurde von Ihrer Antivirensoftware blockiert“, oder Windows-Sicherheit meldet eine Bedrohung. Defender misstraut Zeilen, die ein Skript laden und sofort ausführen; bei unserer ist es ein Fehlalarm. Schalten Sie den Virenschutz trotzdem nicht aus. Speichern Sie das Skript stattdessen erst als Datei und führen Sie es dann aus: Kopieren Sie die beiden Zeilen unten, fügen Sie sie in das PowerShell-Fenster ein und drücken Sie Enter.

    irm https://inf.zone/setup-windows.ps1 | Set-Content -Encoding UTF8 "$env:TEMP\setup-windows.ps1"
    powershell -ExecutionPolicy Bypass -File "$env:TEMP\setup-windows.ps1"

    Die erste Zeile speichert das Skript in Ihrem Ordner für temporäre Dateien, die zweite startet es; -ExecutionPolicy Bypass erlaubt das nur für diesen einen Aufruf. Weiter geht es mit Schritt 3. Sagt das Skript, Sie sollen die Zeile von der Website noch einmal ausführen, nehmen Sie wieder diese beiden Zeilen.

    Blockiert Windows auch das, richten Sie ohne Skript ein (zugeklappter Kasten am Ende dieses Tabs) oder nehmen Sie GitHub Codespaces, und sagen Sie uns im Tutorium Bescheid.

  3. Den Fragen folgen. Das Skript zeigt der Reihe nach „Schritt 1 von 5“ bis „Schritt 5 von 5“ und fragt, wenn es etwas wissen muss. Zwischendurch laufen Ausgaben anderer Programme durch, teils auf Englisch; das ist normal. Gelbe Zeilen mit „WARNUNG“ sagen Ihnen, was zu tun ist.

    • Fragen mit [j/n] beantworten Sie mit einem Tastendruck: j für ja, n für nein, ohne Enter. Passiert beim Drücken nichts, klicken Sie einmal oben auf die Titelleiste des Fensters und drücken Sie die Taste noch einmal.
    • Fragt Windows, ob die App Änderungen an Ihrem Gerät vornehmen darf, klicken Sie auf „Ja“. Danach öffnet sich kurz ein zweites Fenster; lassen Sie beide offen.
    • Muss Windows neu starten, fragt das Skript „Jetzt neu starten?“. Speichern Sie vorher, was in anderen Programmen offen ist. Melden Sie sich danach wie gewohnt an; nach einigen Sekunden öffnet sich das Fenster von selbst wieder, und es geht weiter.
    • Für LinuxEin Betriebssystem wie Windows oder macOS. Die CS50-Umgebung und die Prüfungslaptops laufen mit Linux. Glossar → (Ubuntu) legen Sie ein Konto an. Den Benutzernamen schreiben Sie klein, ohne Leer- und Sonderzeichen; den Vorschlag übernehmen Sie mit Enter. Das Passwort tippen Sie zweimal, jeweils mit Enter; statt der Zeichen erscheinen Sternchen. Nehmen Sie nicht Ihr Windows-Passwort und speichern Sie es, etwa in einem Passwortmanager; für die Übungen brauchen Sie es normalerweise nicht.
    • In einem Fenster legen Sie einen Ordner für Ihre Kursdateien an: Klicken Sie gleich auf „Neuen Ordner erstellen“, tippen Sie inf, drücken Sie Enter und klicken Sie auf „OK“. Nicht geeignet sind Downloads, Desktop, Dokumente und andere Ordner, die OneDrive synchronisiert; warnt das Skript, drücken Sie n und wählen Sie neu.

    Am Ende steht in Grün „Fertig.“ und die Frage „VS Code jetzt öffnen?“. Drücken Sie j: VS Code öffnet sich mit Ihrem Ordner. Weiter geht es mit Schritt 4; das PowerShell-Fenster können Sie dann schließen.

  4. Kursumgebung starten. Fragt VS Code, ob Sie den Autoren der Dateien in diesem Ordner vertrauen, klicken Sie auf „Yes, I trust the authors“; den Ordner haben Sie ja selbst angelegt. Eine Willkommensseite von VS Code können Sie schließen. Unten rechts erscheint dann ein Hinweis: Klicken Sie dort auf „Reopen in Container“.

    Beim ersten Mal lädt VS Code die Kursumgebung herunter; das dauert einige Minuten. Unten rechts steht währenddessen etwa „Connecting to Dev Container“; schließen Sie VS Code in der Zeit nicht. Fertig ist es, wenn oben im Fenstertitel und links im Explorer „[Dev Container]“ steht.

    Ist der Hinweis schon verschwunden: Drücken Sie Strg + Shift + P, tippen Sie Reopen in Container und wählen Sie den Eintrag aus.

Weiter geht es mit Erste Schritte in VS Code. Ab jetzt öffnen Sie VS Code einfach wie jedes andere Programm; es startet die Kursumgebung von selbst wieder.

Wenn etwas nicht klappt: Meldet das Skript ein Problem, steht im Fenster, was zu tun ist. Führen Sie danach die Zeile von der Website einfach noch einmal aus; was schon erledigt ist, überspringt das Skript. Zeilen wie your 131072x1 screen size is bogus. expect trouble kommen von Ubuntu und sind harmlos, solange das Skript weiterläuft. Kommen Sie nicht weiter, fragen Sie Susi, den Chatbot der Kursseite (Knopf unten rechts), und kopieren Sie die Meldung aus dem Fenster in Ihre Frage. Hilft das nicht, bringen Sie ein Foto des Fensters ins Tutorium mit.

Ohne Skript einrichten (mit Docker Desktop)

So lief die Einrichtung unter Windows bisher. Sie brauchen sie nur, wenn Sie Docker Desktop schon benutzen oder das Skript bei Ihnen nicht durchläuft.

  1. Legen Sie einen neuen Ordner für Ihre Kursdateien an, zum Beispiel C:\Users\<Ihr Name>\inf, nicht im Download-Ordner und nicht in einem Ordner, den OneDrive synchronisiert.
  2. Öffnen Sie inf.zone/devcontainer.json im Browser und speichern Sie die Datei mit Strg + S in diesem Ordner. Der Dateiname muss genau .devcontainer.json lauten, mit einem Punkt am Anfang. Achten Sie darauf, dass nicht .devcontainer.json.txt entsteht: Schalten Sie dazu im Explorer im Menü „Ansicht“ die Option „Dateinamenerweiterungen“ ein.
  3. Suchen Sie im Startmenü nach „Windows-Features aktivieren oder deaktivieren“ und aktivieren Sie, falls nötig, „VM-Plattform“, „Windows-Hypervisor-Plattform“ und „Windows-Subsystem für Linux“. Windows verlangt danach eventuell einen Neustart.
  4. Prüfen Sie in der Eingabeaufforderung (cmd) mit wsl --version, ob WSL installiert ist; falls nicht, installieren Sie es mit wsl --install. Die Versionsnummer muss mit einer 2 beginnen, sonst stellen Sie mit wsl --set-default-version 2 um.
  5. Installieren Sie Docker Desktop für Windows mit den vorgeschlagenen Einstellungen und starten Sie es. Ein Konto brauchen Sie nicht. Warten Sie, bis die Docker-Engine läuft.
  6. Installieren Sie VS Code, darin die Erweiterung „Dev Containers“ (Strg + Shift + X, danach suchen, „Install“), und öffnen Sie den Ordner: Strg + Shift + P drücken, „Dev Containers: Open Folder in Container…“ tippen und den Befehl auswählen.

Erste Schritte in VS Code

Öffnen Sie in VS Code ein Terminal: Menü „Terminal“ → „New Terminal“. Alles Weitere, etwa ein erstes Programm, steht unter Erste Schritte in der Anleitung für GitHub Codespaces; im Dev Container funktioniert es genauso.

Abgabewerkzeug inf ausprobieren und anmelden

Ihre Übungen geben Sie im Terminal mit dem Abgabewerkzeug infDas Abgabewerkzeug des Kurses: inf upload me im Terminal lädt Ihre Lösung hoch, lässt die Tests laufen und zeigt, ob die Übung ihren Stern hat, also für die Joker-Regel zählt. Glossar → ab. Beim ersten Start richtet sich der Container noch für den Kurs ein: Warten Sie, bis im Terminal „Container eingerichtet.“ steht. Tippen Sie dann zur Probe inf ins Terminal: Erscheint eine Liste der Befehle, ist alles bereit. Die Zeile „Container eingerichtet.“ erscheint nur beim ersten Start und nach „Rebuild Container“, bei jedem weiteren Start nicht mehr. Das ist richtig so: Ob alles bereit ist, zeigt immer inf.

Die Einrichtung bricht vorher ab (exit code 1)

Über der Meldung steht eine Zeile, die mit setup-container: beginnt. Diese Zeile selbst sagt, warum die Einrichtung abgebrochen ist. Meist fehlte die Internetverbindung. Fügen Sie dann im Terminal des Containers diese Zeile ein und drücken Sie Enter:

Nie wahllos Skripte aus dem Internet laden und ausführen. Eine Zeile wie diese lädt ein Programm aus dem Internet und reicht es sofort zum Ausführen weiter (| bash, | iex), mit allen Rechten Ihres Benutzerkontos und ohne dass Sie es vorher sehen. Wer Ihnen so eine Zeile unterschiebt, kann damit Ihre Dateien löschen, Passwörter mitlesen oder Schadsoftware einrichten. Führen Sie sie deshalb nur aus, wenn Sie der Quelle vertrauen, und genau so, wie sie dort steht: von dieser Seite (Adressen auf inf.zone) oder von der offiziellen Seite des Programms. Zeilen aus Foren, Chats, E-Mails, Videos oder von einer KI führen Sie nie ungeprüft aus.

curl -fsSL https://inf.zone/setup-container.sh | bash

Bricht auch das ab, bringen Sie die letzten Zeilen über der Meldung ins Tutorium mit.

Melden Sie sich danach an, damit beim ersten Abgeben alles bereit ist:

Bevor Sie zum ersten Mal abgeben, melden Sie sich einmal an. Tippen Sie dazu inf login ins Terminal. Tippen Sie gleich inf upload, beginnt die Anmeldung von selbst. Dann geht es so weiter:

  1. inf fragt nach Ihrer Uni-E-Mail-Adresse. Geben Sie nur den Teil vor dem @ ein, bei max.mustermann@stud.uni-bamberg.de also max.mustermann.
  2. An diese Adresse geht eine Mail mit einem sechsstelligen Code. Tippen Sie ihn ein; er gilt zehn Minuten. Kommt keine Mail, sehen Sie im Spam-Ordner nach. Haben Sie sich bei der Adresse vertippt, brechen Sie mit Strg + C ab und fangen neu an.
  3. Nur beim ersten Mal: Geben Sie Ihre Matrikelnummer ein, zur Kontrolle zweimal. Gemeint sind die sieben Ziffern, nicht Ihre BA-Nummer (ba…).

Ob Sie die Prüfung mit 6 oder mit 9 ECTS ablegen, fragt inf nicht: Für die Joker-Regel gilt, was zu der Klausur passt, die Sie am Ende schreiben.

Danach bleiben Sie angemeldet. inf whoami zeigt, mit welcher Adresse; inf logout meldet Sie ab. Wurde Ihr Codespace oder Dev Container neu erstellt, fragt inf wieder nach Adresse und Code. Die Matrikelnummer kennt der Server dann schon.

Verbindung zum Container schließen und neu aufbauen

Normalerweise brauchen Sie diesen Abschnitt nicht. In den meisten Fällen startet VS Code den Container automatisch und baut die Verbindung auf, wenn Sie VS Code starten.

Wenn VS Code beendet wird, wird die Verbindung abgebaut, der Container läuft aber im Hintergrund weiter. Um Ressourcen zu sparen, beenden Sie unter macOS Docker Desktop oder halten den Container dort an. Unter Windows mit unserem Skript läuft Docker in Ubuntu unter WSL; ein Neustart von Windows hält alles an.

Falls Sie einmal die Verbindung zum Container manuell schließen oder aufbauen müssen, befolgen Sie dazu diese Schritte:

  1. Verbindung schließen: Die Verbindung zum Container kann im Menü unter „File“ > „Close Remote Connection“ geschlossen werden.

  2. Verbindung aufbauen: Wenn Sie sich erneut verbinden möchten, können Sie dies im linken Seitenmenü unter „Remote Explorer“ tun. Hierzu wählen Sie im Unterpunkt „Dev Container“ den gewünschten Container aus und klicken auf „Open in Container …“. Der Container sollte sich erneut öffnen.

  3. Falls keine Container angezeigt werden: Unter Windows mit unserem Skript öffnen Sie in VS Code Ihren Kursordner (Menü „Datei“ → „Ordner öffnen“) und klicken unten rechts auf „Reopen in Container“; VS Code startet den Container dann selbst. Mit Docker Desktop (macOS, Windows ohne Skript) öffnen Sie Docker Desktop. Unter „Containers“ sehen Sie den Container für den Kurs. Starten Sie ihn mit dem Play-Symbol (▶) und bauen Sie danach die Verbindung in VS Code wie in Schritt 2 auf. In Docker Desktop sehen Sie auch, ob der Container gerade startet oder ob ein Fehler aufgetreten ist. Unter Linux mit der Docker Engine zeigt docker ps -a im Terminal den Container samt Namen, docker start <Name> startet ihn.

  4. Container neu erstellen: Läuft im Container etwas grundsätzlich schief, erstellen Sie ihn neu, statt ihn von Hand zu entfernen. Drücken Sie Strg + Shift + P (Mac: Cmd + Shift + P), tippen Sie Rebuild Container und wählen Sie „Dev Containers: Rebuild Container“ (nicht „Reopen in Container“, das verbindet nur wieder mit dem alten). Ihre Dateien im Kursordner bleiben erhalten. Warten Sie, bis „Container eingerichtet.“ im Terminal steht, und melden Sie sich danach mit inf login wieder bei inf an.


Bei Fragen oder Problemen mit der Einrichtung können Sie Susi fragen, den Chatbot der Kursseite (Knopf unten rechts oder eine Stelle dieser Anleitung markieren). Außerdem helfen Ihnen die Tutorinnen und Tutoren gerne weiter.

Diese Seite als Markdown: ansehen herunterladen