
In den Repositories von Ubuntu, Debian und Raspbian ist Node.js zwar vorhanden, jedoch sind dies meistens keine aktuellen Versionen.
Zur Installation einer aktuellen Version gibt es drei Möglichkeiten, welche im Folgenden beschrieben werden.
Unabhängig von der verwendeten Installationsmethode müssen wir zunächst die gegebenenfalls installierte veraltete Version von Node.js vom System entfernen:
sudo apt-get remove nodejs
sudo apt-get autoremove
sudo apt-get autoclean
- Installation mittels Node Version Manager (nvm)
- Installation über das NodeSource-Repository
- Manuelle Installation
Installation mittels Node Version Manager (nvm)
Der Node Version Manager (nvm) ist ein Script, welches es sher komfortabel ermöglicht schnell und einfach eine oder auch mehrere Versionen von Node.js zu installieren und zu verwalten.
Die Installation von nvm erfolgt einfach über den folgenden Befehl:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
Dieses Installationsscript läd die benötigten Dateien von GitHub herunter und fügt die benötigten Einträge in beispielsweise der Datei ~/.bashrc
hinzu.
Zum Installieren von Node.js wird anschließend nvm install
mit der gewünschten Node.js Version aufgerufen.
nvm install 14
Mit nvm ist es auch möglich mehrere Node.js Versionen parallel zu installieren. Hierzu wird einfach nvm install
mehrfach mit der jeweligen Version aufgerufen. Die entsprechend aktuell zu verwende Version kann dann jederzeit mittels nvm use
ausgewählt werden.
nvm install 4
nvm use 4
node -v
# v4.9.1
nvm use 14
node -v
# v14.15.0
Nachteil dieser Installationsmethode ist, dass Node.js damit nur dem aktuellen Benutzer zur Verfügung steht und es bei der Verwendung von unterschiedlichen Nutzern für verschiedene Programme zu etwas umständlicheren Konstellationen kommen kann.
Installation über das NodeSource-Repository
Dies ist eine einfache und zugleich sichere Methode zur Installation. Hierbei wird das Repository von NodeSource verwendet und alle Updates werden wie gewohnt über den Paketmanager installiert.
Abhängig von der gewünschten Version rufen wir einen der folgenden Befehle auf. Das Setup-Script erkennt dabei automatisch das verwendete Betriebssystem und richtet die Paketquellen dementsprechend ein.
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Anschließend installieren wir Node.js und die Build-Tools, welche zur Installation von Node.js Modulen mit nativen Addons benötigt werden.
sudo apt-get install -y nodejs build-essential
Probleme beim Installieren von globalen Modulen
Bei der Installation von gobalen Modulen (-g
bzw. --global
) kann es zu EACCESS-Fehlern, also Berechtigungsfehlern kommen. Selbst sudo
hilft hier wenig und sollte in diesem Fall eh nicht verwendet werden.
Als Lösung wird in der offiziellen Dokumentation empfohlen das Standardverzeichnis für npm zu ändern.
Hierfür legen wir zuerst in eigenen Home-Verzeichnis ein neues Verzeichnis an, sofern dies nicht bereits existiert:
mkdir -p ~/.npm-global
Anschließend wird npm so konfiguriert, dass es dieses Verzeichnis für gobale Module verwendet:
npm config set prefix '~/.npm-global'
Damit die Module in einer Shell auch gefunden werden, wird ein entsprechender Eintrag am Ende der Datei ~/.profile
hinzugefügt und die Änderungen anschließend in die aktuelle Shell übernommen:
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.profile
source ~/.profile
Das war’s dann auch schon. 🙂
Manuelle Installation
Zur manuellen Installation ist es zunächst entscheidend, sich über die offizielle Downloadseite von Node.js die zur Plattform passende Variante herunterzuladen.
- Auf einem normalen 64-bit Ubuntu oder Debian System ist dies von den Linux Binaries (x64) die 64-bit Variante.
- Auf einem Raspberry Pi ab Modell 2B ist dies von den Linux Binaries (ARM) die ARMv7 Variante.
- Für die älteren oder kleineren Raspberry Pis mit ARMv6 Prozessor (Raspberry Pi A/A+/B/B+/Zero/ZeroW) oder auch 32-bit Linux Systeme gibt es keine offiziellen Downloads mehr. Wie wir dennoch eine aktuelle Version von Node.js auf diese Systeme installiert bekommen, beschreibe ich weiter unten im Abschnitt Aktuelles Node.js auf ARMv6 oder 32-bit Linux.
Im folgenden Beispiel verwenden wir ARMv7 von Node.js 14.15.0.
cd /tmp
wget https://nodejs.org/dist/v14.15.0/node-v14.15.0-linux-armv7l.tar.xz
tar -xvf node-v14.15.0-linux-armv7l.tar.xz
sudo mv node-v14.15.0-linux-armv7l /opt/
sudo ln -s /opt/node-v14.15.0-linux-armv7l /opt/node
sudo chown -R root:root /opt/node*
sudo ln -s /opt/node/bin/node /usr/bin/node
sudo ln -s /opt/node/bin/npm /usr/bin/npm
Damit ist Node.js dann installiert und Befehle node
sowie npm
sind global verfügbar.
Es empfiehlt sich auch noch das Verzeichnis /opt/node/bin
der PATH-Variable hinzuzufügen, damit global installierte Node.js Module (wie beispielsweise TypeScript) automatisch global in jeder Shell verfügbar werden. Hierfür rufen wir einfach den folgenden Befehl auf, welcher die Datei /etc/profile.d/nodejs.sh
anlegt und damit bei jedem Login eines Benutzer den Pfad automatisch erweitert.
echo PATH=\$PATH:/opt/node/bin | sudo tee /etc/profile.d/nodejs.sh > /dev/null
Damit ist dann auch die manuelle Installation abgeschlossen. Zu beachten bleibt noch, dass keine automatischen Updates erfolgen.
Aktuelles Node.js auf ARMv6 oder 32-bit Linux – Unofficial Builds
Seit Node.js Version 10 gibt es keine offiziellen Downloads mehr für Linux-Systeme 32-bit Prozessor. Ab Version 12 dann auch nicht mehr für Systeme mit ARMv6.
Glücklicherweise gibt es aber das Node.js Unofficial Builds Project, welches genau diese Varianten automatisch zu jedem neuen Release bereitstellt.
Wichtiger Hinweis: Dieses Projekt ist experimentell! Es wird nicht garantiert, dass sein Ergebnis konsistent bleibt, und seine Existenz wird nicht für die Zukunft garantiert.
Auf der Downloadseite https://unofficial-builds.nodejs.org/download/release/ sind für alle aktuellen Versionen von Node.js die fertig kompilierten Archive, für unter anderem armv6l und x86, verfügbar.
Die Installation auf dem System erfolgt wie weiter oben im Abschnitt Manuelle Installation beschrieben, nur eben mit dem passenden Link aus den inoffiziellen Builds.
12. Jan. 2018 um 10:31
Das ist ein ganz starker und sehr informativer Beitrag; Hab Node.js direkt hiernach installiert.
Herzlichen Dank dafür – ich bin gespannt auf die folgenden Themen…
23. Jul. 2018 um 20:49
Danke für den Beitrag. Um die Node.js Versionen besser verwalten zu können, habe ich letztendlich folgendes Projekt verwendet:
https://github.com/audstanley/NodeJs-Raspberry-Pi/
6. Mrz. 2019 um 14:56
Auf die selbe Idee bin ich auch gekommen. Nur wollte ich als zusätzliche Bedingung Binärdateien nach Debian Spezifikation installieren. Da dein verlinktes Projekt die manuelle Installation nur automatisiert, erfüllte es meine Bedingung nicht. Ich finde auch, dass es keine gute Idee wäre, einfach mal die Sicherheitsmechanismen “automatisch” zu überspringen. Zudem erfordert dieses Projekt beim ersten Installation immer die aktuellste Nodejs-Version, obwohl man vielleicht nur eine Vorgängerversion haben möchte und somit gleich zwei Versionen installiert.
Nun auf nodejs.org gibt es keine Pakete nach Debian-Spezifikation. Hierbei verweist nodejs.org auf Nodesource. (https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions-enterprise-linux-fedora-and-snap-packages)
NodeSource bietet Debian-Packages an. Auch hier ist manuelles Hinzufügen der Paketquelle möglich:
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add –
deb https://deb.nodesource.com/node_10.x stretch main’ > /etc/apt/sources.list.d/nodesource.list
Anschließend ist die eingebundene Nodejs-Quelle verfügbar und man kann dann die entsprechende Version installieren (hier als Beispiel die 10er-Versionen).
8. Mrz. 2020 um 23:01
Hi Peter, danke für den Beitrag! Ich bin leider auf einem ARMv6 unterwegs – das mit nodesource klappt daher nicht und ich mus nwm verwenden (nvm install 10). Hast du mir nen Tipp, dass ich nacher “sudo node …” ausführen kann?
9. Mrz. 2020 um 11:22
In dem Fall kannst du dir den vollständigen Pfad zu `node` mit dem Befehl `which node` anzeigen lassen. Die Ausgabe sollte dann etwa so aussehen: `/home/user/.nvm/versions/node/v10.15.1/bin/node`
Dein sudo Befehl wäre dann `sudo /home/user/.nvm/versions/node/v10.15.1/bin/node …`.