Hin und her: io.js und Node.js parallel betreiben

Am 14. Januar 2015 wurde io.js 1.0 veröffentlicht, das zahlreiche neue Funktionen und Unterstützung für verschiedene Sprachmerkmale von ES6 enthält. Das sind ausreichend Gründe, um sich die neue Plattform näher anzusehen. Doch was, wenn zusätzlich auch Node.js benötigt wird?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Golo Roden
Inhaltsverzeichnis

Am 14. Januar 2015 wurde io.js 1.0 veröffentlicht, das zahlreiche neue Funktionen und Unterstützung für verschiedene Sprachmerkmale von ES6 enthält. Das sind ausreichend Gründe, um sich die neue Plattform näher anzusehen. Doch was, wenn zusätzlich auch Node.js benötigt wird? Eine Parallelinstallation schafft Abhilfe.

Die Installation von io.js erfolgt auf dem gleichen Weg wie die von Node.js: Im Prinzip genügt es, das geeignete Installationspaket für die Plattform der Wahl herunterzuladen und auszuführen. Zur Auswahl stehen Pakete für OS X, Linux und Windows, wobei jeweils Versionen für 32 und 64 Bit angeboten werden. Alternativ lässt sich der Quelltext herunterladen und selbst übersetzen.

Der Installationsweg sieht allerdings keine Mehrfachinstallation vor: Jeder Installationsvorgang überschreibt eine bereits auf dem System vorhandene Installation. Das mag bei kleineren Fehlerbehebungen und Aktualisierungen tragbar sein, unter Umständen benötigt man aber mehrere Versionen parallel.

Das gilt insbesondere für eine parallele Installation von io.js und Node.js, auf das sich unter Umständen noch nicht gänzlich verzichten lässt.

Abhilfe schafft das Kommandozeilenwerkzeug nvm, das mehrere Versionen von Node.js und io.js parallel installieren und mit dem zwischen diesen hin und her wechseln kann. Unter Windows ist es jedoch nicht lauffähig: Bei Bedarf kann man für dieses Betriebssystem auf nvmw zurückgreifen, das nvm stark ähnelt. Das ebenfalls unter Windows lauffähige Werkzeug nvm-windows unterstützt zumindest zum derzeitigen Zeitpunkt io.js noch nicht.

Die Installation von nvm erfolgt wahlweise über curl oder wget. Das folgende Beispiel verwendet curl:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.23.2/install.sh | bash

Wichtig ist, nach der Installation das Terminal neu zu starten, damit alle Umgebungsvariablen korrekt initialisiert sind. Die Installation von io.js und Node.js gelingt dann mithilfe des install-Kommandos:

$ nvm install iojs-1.0.4
$ nvm install 0.10.35

Zunächst ist die zuletzt installierte Version aktiv. Um zwischen den installierten Versionen zu wechseln, genügt ein Aufruf des use-Kommandos:

$ nvm use iojs-1.0.4

Um sich alle lokal installierten Versionen anzeigen zu lassen, dient das ls-Kommando:

$ nvm ls

Häufig ist es wünschenswert, eine ausgewählte Version als Standard zu setzen, der in neu geöffneten Terminals gilt, bis von Hand eine andere Version gewählt wird. Dazu dient der Alias default, den man mithilfe des alias-Kommandos festlegen kann:

$ nvm alias default iojs-1.0.4

Auf die gleiche Art lassen sich beliebige andere Aliasnamen vergeben, beispielsweise stable und unstable für die jeweils aktuelle Node.js-Version. Wer nach der Installation einer neuen Version nicht stets den default-Alias anpassen will, kann alternativ auch eine verkürzte Versionsnummer angeben:

$ nvm alias default iojs-1.0

Diese Vorgabe sorgt dafür, dass stets die neueste lokal installierte Version von io.js als Standard ausgewählt wird.

Wechselt man zwischen verschiedenen Versionen von io.js und Node.js, ändert das nicht nur die Version der Plattform. Zugleich wird auch für jede installierte Version ein eigener Bereich angelegt, der global installierte Module enthält.

Wer also zahlreiche globale Module benötigt, ist gut beraten, für deren Installation ein Skript zu schreiben, das sich nach der Installation einer neuen Version von io.js oder Node.js bequem erneut ausführen lässt, um die bekannte Umgebung wiederherzustellen.

tl;dr: nvm ist ein Kommandozeilenwerkzeug, das io.js und Node.js parallel installieren und zwischen ihnen wechseln kann. Globale Module werden individuell für die jeweils aktive Version installiert, weshalb ein Skript für deren Installation anzuraten ist. ()