-
Notifications
You must be signed in to change notification settings - Fork 49
Rustup auf den CIP PCs
Der Rust Compiler sollte am besten über Rustup installiert werden. Rustup ist ein Tool zur Verwaltung unterschiedlicher Versionen vom Compiler und der Standardbibliothek. Es ist einfach, auf die neuste Compilerversion zu aktualisieren aber auch für andere Architekturen zu kompilieren.
Leider kann man Rustup nicht einfach auf CIP PCs installieren. Der Grund dafür ist das Heimatverzeichnis pro Nutzer, welches in der Größe beschränkt ist (250MB) und über das Netzwerk synchronisiert wird. Rustup würde das Heimatsverzeichnis normalerweise sehr schnell füllen. Daher muss man bei der Installation auf ein paar Dinge achten.
In dieser Anleitung wird Grundwissen über Linux, "Terminal-Befehle" und sh-Scripte vorausgesetzt. Falls es Fragen dazu gibt, fragt einfach auf Piazza!
Rustup installiert seine Dateien in diverse Verzeichnisse:
-
~/.cargo/<Diverse Dateien>
: Kleine, eventuell vertrauliche Informationen -
~/.cargo/bin
: Installierte Programme und Proxies fürrustc
, ...; ca. 10MB -
~/.cargo/registry
: Library-Cache, ist schnell recht groß, viele Dateien -
~/.rustup/toolchains
: Alle installierten Rust-Compiler, mehrere 100MB -
~/.rustup/<alles andere>
: Klein, halbwegs vertraulich, nutzerabhängig
Wichtig: Wahrscheinlich wird die derzeitige Rustup version noch den Ordner .multirust
statt .rustup
benutzen! Also werdet ihr euch wahrscheinlich immer, wenn ich .rustup
schreibe, .multirust
denken.
Jetzt bleibt die Frage: Wie installieren wir Rustup, ohne das Heimatsverzeichnis zu füllen? Der Trick liegt dadrin, Dateisystemlinks anzulegen. Hauptsächlich wichtig sind die Verzeichnisse ~/.cargo/registry
und ~/.rustup/toolchains
, da die den meisten Platz einnehmen.
Die Installationsroutine würde in etwa wie folgt aussehen. Achtung: Diese Befehle sind nicht wirklich zum Copy&Pasten gedacht, sondern nur als Anhaltspunkt; bitte selber mitdenken. Insbesondere sind diese Befehle auch nicht von mir getestet und enthalten daher wahrscheinlich Fehler!
Erstmal soll sich Rustup selber installieren, aber nicht im Heimatsverzeichnis. Dazu setzen wir die $HOME
Variable auf ein temporäres Verzeichnis.
export HOME_BACKUP=$HOME
export TMP_PATH=/tmp/rustii
mkdir $TMP_PATH
export HOME=$TMP_PATH
Als nächstes führen wir ganz normal die Installation durch:
curl https://sh.rustup.rs -sSf | sh -s -- -y
Nun befinden sich .cargo
und .rustup
hoffentlich in /tmp/rustii
. Wir setzen eben noch die $HOME
Variable auf den richtigen Wert zurück:
export HOME=$HOME_BACKUP
Nun richten wir uns die beiden Verzeichnisse im Heimatsverzeichnis manuell ein und kopieren nach und nach die richtigen Daten aus dem temporären Verzeichnis rüber. Wir verlinken die wichtigen Ordner zu entsprechenden Ordnern in /local
. Zuerst .cargo
:
mkdir ~/.cargo
cp $TMP_PATH/.cargo/env ~/.cargo/env # Von der Installation kopieren rüberkopieren
cp -r $TMP_PATH/.cargo/bin ~/.cargo/bin # Ebenso
mkdir -p /local/$(whoami)/.cargo/registry # in /local Ordner mit Nutzernamen anlegen
ln -s /local/$(whoami)/.cargo/registry ~/.cargo/registry # link anlegen
Und nun .rustup
(bzw. .multirust
!):
mkdir ~/.multirust/
cp $TMP_PATH/.multirust/settings.toml ~/.multirust/ # Kleine Dateien rüberkopieren
cp -r $TMP_PATH/.multirust/update-hashes ~/.multirust/
mkdir -p /local/$(whoami)/.multirust/toolchains
cp -r $TMP_PATH/.multirust/toolchains/* /local/$(whoami)/.multirust/toolchains # richtige Dateien kopieren
ln -s /local/$(whoami)/.multirust/toolchains ~/.multirust/toolchains # link erstellen
Eventuell ist es jetzt nötig den $PATH
anzupassen. Das sollte durch folgenden Befehl gehen:
echo "source ~/.cargo/env" >> ~/.profile
Danach muss man sich aus- und wieder einloggen; das führt dazu, dass die .profile
Datei geladen wird.
Jetzt sollten rustc
, cargo
und rustup
normal benutzbar sein. Aber: Natürlich sind diese nur auf dem PC benutzbar, auf dem ihr sie eingerichtet habt! /local
ist lokal pro PC und wird nicht über das Netzwerk synchronisiert! Merkt euch also die Nummer.