it-swarm.com.de

So installieren Sie Knoten-Binärdistributionsdateien unter Linux

Mein Produktionsserver (Centos 5.9) kompiliert keine Nodes, möglicherweise weil gcc nur 4.1.2 ist (4.2 oder höher wird empfohlen). Ich habe also versucht, die Binärdateien zu installieren.

$ wget http://nodejs.org/dist/v0.10.22/node-v0.10.22-linux-x86.tar.gz
$ tar -zxvf node-v0.10.22-linux-x86.tar.gz
$ cd node-v0.10.22-linux-x86
$ Sudo cp bin/* /usr/local/bin
$ Sudo cp -R lib/* /usr/local/lib
$ Sudo cp -R share/* /usr/local/share

Und nun zum Testen:

$ node -v  # => v0.10.22
$ man node # looks fine
$ npm -v   # UH OH, PROBLEM - Cannot find module 'npmlog'

Nun (im Hinterkopf, ich bin ein absoluter Anfänger bei Node) Ich habe etwas gesucht und herausgefunden, dass es eine Umgebungsvariable namens NODE_PATH gibt, also habe ich versucht:

$ export NODE_PATH=/usr/local/lib/node_modules
$ npm -v   # SAME PROBLEM - Cannot find module 'npmlog'

Also habe ich herausgefunden, wo npmlog lebt und habe NODE_PATH entsprechend modifiziert:

$ find /usr/local/lib -name npmlog # => /usr/local/lib/node_modules/npm/node_modules/npmlog
$ export NODE_PATH=/usr/local/lib/node_modules/npm/node_modules
$ npm -v   # DIFFERENT PROBLEM - Can't find '../lib/npm.js'

Zu diesem Zeitpunkt entschied ich mich nach weniger hilfreichen googeln, dass ich mich in meiner Tiefe befand und beschloss, um Hilfe zu bitten. Kann mir jemand sagen, was ich falsch mache?

32
sanichi

Es ist viel schneller, die NPM-Neuinstallation erneut durchzuführen, wodurch "defekte" Links entfernt werden:

wget https://npmjs.org/install.sh

chmod +x install.sh
Sudo ./install.sh

Dann werden Sie aufgefordert, den alten NPM-Link zu entfernen

30

Knotenversionsmanager verwenden

Verwenden Sie einen Node-Versionsmanager wie nvm , um die Installation und Versionsverwaltung für Sie durchzuführen. Nach der Installation von nvm können Sie einfach eine beliebige Node-Version installieren, beispielsweise nvm install 8.

Wenn Sie die Binärdatei jedoch nur selbst installieren möchten, lesen Sie unten:

Apt-get verwenden

In besonderen Fällen, in denen Sie eine systemweite Node-Installation benötigen, können Sie apt-get verwenden:

curl -sL https://deb.nodesource.com/setup_8.x | Sudo -E bash -
Sudo apt-get install -y nodejs

Das obige Snippet installiert den neuesten Knoten 8.

Binary manuell installieren

Um die Binärdatei manuell zu installieren, müssen Sie lediglich die Binärdatei herunterladen und eine Reihe symbolischer Links erstellen. Führen Sie die Befehle nacheinander aus, und es sollte die Aufgabe erfüllen. Ich habe auch ein Shell-Skript geschrieben, das es für Sie erledigt, wenn dies einfacher ist (siehe unten in der Antwort). Hoffentlich hilft das.

Stellen Sie sicher, dass Sie den richtigen Download-Link für Ihre Betriebssystemarchitektur (d. H. Entweder 32-Bit oder 64-Bit) für Wget in der zweiten Zeile verwenden.

ME=$(whoami) ; Sudo chown -R $ME /usr/local && cd /usr/local/bin #adding yourself to the group to access /usr/local/bin
mkdir _node && cd $_ && wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz -O - | tar zxf - --strip-components=1
ln -s "/usr/local/bin/_node/bin/node" .. # Making the symbolic link to node
ln -s "/usr/local/bin/_node/lib/node_modules/npm/bin/npm-cli.js" ../npm ## making the symbolic link to npm

Hier ist ein Shell-Skript, das alle Komponenten herunterlädt und installiert. Wenn Sie dieses Skript zur Installation von Node verwenden, können Sie es mit dem Deinstallationsskript deinstallieren.

Knoten installieren

#! /bin/bash
# run it by: bash install-node.sh
read -p " which version of Node do you need to install: for example 8.11.4 (or any other valid version): " VERSIONNAME
read -p " Are you using a 32-bit or 64-bit operating system ? Enter 64 or 32: " ARCHVALUE
if [[ $ARCHVALUE = 32 ]]
    then
    printf "user put in 32 \n"
    ARCHVALUE=86
    URL=https://nodejs.org/dist/v${VERSIONNAME}/node-v${VERSIONNAME}-linux-x${ARCHVALUE}.tar.gz

Elif [[ $ARCHVALUE = 64 ]]
    then
    printf "user put in 64 \n"
    ARCHVALUE=64
    URL=https://nodejs.org/dist/v${VERSIONNAME}/node-v${VERSIONNAME}-linux-x${ARCHVALUE}.tar.gz

else
    printf "invalid input expted either 32 or 64 as input, quitting ... \n"

    exit
fi

# setting up the folders and the the symbolic links
printf $URL"\n"
ME=$(whoami) ; Sudo chown -R $ME /usr/local && cd /usr/local/bin #adding yourself to the group to access /usr/local/bin
mkdir _node && cd $_ && wget $URL -O - | tar zxf - --strip-components=1 # downloads and unzips the content to _node
cp -r ./lib/node_modules/ /usr/local/lib/ # copy the node modules folder to the /lib/ folder
cp -r ./include/node /usr/local/include/ # copy the /include/node folder to /usr/local/include folder
mkdir /usr/local/man/man1 # create the man folder
cp ./share/man/man1/node.1 /usr/local/man/man1/ # copy the man file
cp bin/node /usr/local/bin/ # copy node to the bin folder
ln -s "/usr/local/lib/node_modules/npm/bin/npm-cli.js" ../npm ## making the symbolic link to npm

# print the version of node and npm
node -v
npm -v

Knoten deinstallieren

#! /bin/bash
# run it by: ./uninstall-node.sh
Sudo rm -rf /usr/local/bin/npm
Sudo rm -rf /usr/local/bin/node
Sudo rm -rf /usr/local/lib/node_modules/
Sudo rm -rf /usr/local/include/node/
Sudo rm -rf /usr/local/share/man/man1/node.1
Sudo rm -rf /usr/local/bin/_node/ 
25
AJ Meyghani

Ich hatte so ein Problem, aber mit Iojs. Es sollte jedoch dasselbe Verfahren sein:

(Vorausgesetzt, Sie haben in Ihrem aktuellen Verzeichnis eine passende Datei node-v*-linux-x64.tar.gz gefunden):

# In case of iojs you need to replace the occurrences of 'node' with 'iojs'
# Extract the downloaded archive with the linux-x64 version of node
tar zxf node-v*-linux-x64.tar.gz
# Move the extracted folder (./node-v*-linux-x64/) to /opt/
mv ./node-v*-linux-x64/ /opt/

Um die Binärdateien in Ihrer Shell verfügbar zu machen, erstellen Sie einige Softlinks im Verzeichnis /usr/bin/:

# Create a softlink to node in /usr/bin/
ln -s /opt/node-v*-linux-x64/bin/node /usr/bin/node
# Create a softlink to npm  in /usr/bin/
ln -s /opt/node-v*-linux-x64/bin/npm  /usr/bin/npm
# Create a softlink to iojs in /usr/bin (this step can be omitted if you're using node)
ln -s /opt/node-v*-linux-x64/bin/iojs /usr/bin/iojs

Hinweis: Wenn Sie auf das CLI einiger global installierter Knotenmodule zugreifen möchten (beispielsweise bower, TypeScript oder coffee-script), müssen Sie für jedes dieser ausführbaren Dateien im Verzeichnis /usr/bin/ einen Softlink erstellen.

Alternativ können Sie einfach das bin-Verzeichnis Ihres Knoteninstallationsverzeichnisses (z. B. /opt/node-v*-linux-x64/) zur Umgebungsvariablen PATH hinzufügen: (Sie sollten dafür den absoluten Pfad verwenden!)

# create a new .sh script in /etc/profile.d which adds the directory to PATH
echo "export PATH=$PATH:/opt/node-v0.12.3-linux-x64/bin" > /etc/profile.d/node-npm.sh

Diese Änderung wird wirksam, nachdem Sie sich ab- und wieder angemeldet haben.

Beide Methoden haben für mich funktioniert (ich verwende eine Linux-Desktopversion von Ubuntu 14.04/15.04 mit GNOME 3).

12
RegisteredUser

Ich hatte das gleiche Problem hier. Problem behoben, indem /usr/local/bin/npm entfernt und durch einen symbolischen Link zu /usr/local/lib/node_modules/npm/bin/npm-cli.js ersetzt wurde.

$ ls -l /usr/local/bin/
node
npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js


$ npm -v
1.3.17
6
barbazul
wget <node archive url from nodejs.org>
cd /usr/local
Sudo tar --strip-components 1 -xf <path to node archive>

Sie können node und npm sofort ausführen.

In älteren Versionen wurde es früher im Archiv des Archivs README dokumentiert.

4
Peter Dotchev

Ich hatte das gleiche Problem und konnte es lösen, indem ich Symlinks erstellte, anstatt die Binärdateien zu kopieren.

$ cd /usr/local/src
$ wget http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz
$ tar -zxvf node-v0.10.24-linux-x64.tar.gz
$ cd node-v0.10.24-linux-x64
$ Sudo cp -R lib/* /usr/local/lib
$ Sudo cp -R share/* /usr/local/share
$ ln -s /usr/local/src/node-v0.10.24-linux-x64/bin/node /usr/local/bin/node
$ ln -s /usr/local/src/node-v0.10.24-linux-x64/bin/npm /usr/local/bin/npm
$ node -v
v0.10.24
$ npm -v
1.3.21
4
ippomakunochi

Ich hatte das gleiche Problem.

Das Problem ist die ausführbare npm-Datei in/usr/local/bin.

Wie ich es gelöst habe war:

Sudo rm /usr/local/bin/npm

Sudo ln -s "/usr/local/lib/node_modules/npm/bin/npm-cli.js" /usr/local/bin/npm

1
TomJShore

Sie können GNU stow verwenden, um symbolische Links dieser Binärdateien in/usr/local mit einem einzigen Befehl richtig zu erstellen. Mit Stow können Sie auch Knoten-Js zu einem späteren Zeitpunkt problemlos aus/usr/local entfernen und mehrere Versionen von Knoten-Js austauschen.

$ # first, install stow
$ mkdir /usr/local/stow # if it doesn't exist
$ # then, place software binary package in /usr/local/stow
$ cd /usr/local/stow
$ stow <package_name>  # install / add sym links
$ source $HOME/.bash_profile  # reload your environment
$ # node -v and npm -v should now work
$ stow -D <package_name> # uninstall / remove sym links

Diese Schritte funktionierten für mich mit node-v0.10.17-linux-x64.

1
konyak

Ich neige dazu, nave zu benutzen, um die Binärdateien zu installieren. Laden Sie die Datei nave.sh mit wget herunter, und installieren Sie dann den Knoten. Nave ist auch nett zu haben, falls eine Ihrer Produktions-Apps eine andere Version des Knotens benötigt als die global installierte.

$ wget https://raw.github.com/isaacs/nave/master/nave.sh
$ Sudo bash nave.sh usemain 0.10.22
1
The Reddest

In der Manpage von cp in Mac OS X:

Symbolische Links werden immer verfolgt, es sei denn, das Flag -R ist gesetzt. In diesem Fall werden standardmäßig keine symbolischen Links verwendet.

Wenn Sie Sudo cp bin/* /usr/local/bin ausführen, wird der symbolische Link bin/npm verwendet. 

Tatsächlich ist bin/npm mit ../lib/node_modules/npm/bin/npm-cli.js verknüpft, sodass cpnpm-cli.js nach /usr/local/bin kopiert. Deshalb bekommst du einen Fehler.

0
Witcher42

Wenn jemand an Docker interessiert ist, in der Dockerfile

ENV NODE_VERSION 8.10.0
RUN wget https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz
RUN tar -xJvf node-v$NODE_VERSION-linux-x64.tar.xz -C /usr/local/
ENV NODEJS_HOME /usr/local/node-v$NODE_VERSION-linux-x64
ENV PATH $NODEJS_HOME/bin:$PATH

RUN node --version
RUN npm --version
0
Jason Kim

In Ubuntu gibt es eine .bashrc-Datei, die den Pfad zu Binärdateien setzt. 

Standardmäßig ist der Pfad für bin im Basisverzeichnis festgelegt. Vielleicht können Sie das Verzeichnis bin in Ihrem home-Verzeichnis erstellen und die Binärdateien dorthin verschieben. Starten Sie Ihr System neu und versuchen Sie, den Befehl node auszuführen.

0
user2672373

Ich hatte das gleiche Problem. Also habe ich symlinked node und npm von ./bin/ zu /usr/local/bin

0
Mazhar Ahmed