簡體   English   中英

如何在Linux上安裝節點二進制分發文件

[英]How to install node binary distribution files on Linux

我的生產服務器(Centos 5.9)不會編譯nodejs,可能是因為它的gcc只有4.1.2(建議使用4.2或更高版本)所以我試圖安裝二進制文件。

$ 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

現在進行測試:

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

現在(記住我是節點的完全初學者)我做了一些搜索,發現有一個名為NODE_PATH的環境變量,所以我嘗試了:

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

那么我找到了npmlog所在的位置並嘗試相應地修改NODE_PATH:

$ 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'

在這個階段,經過更多無益的谷歌搜索,我決定我超越自己的深度,並決定尋求幫助。 誰能告訴我我做錯了什么?

執行干凈的NPM重新安裝會更快,這將刪除“損壞的”鏈接:

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

chmod +x install.sh
sudo ./install.sh

然后它會要求您刪除舊的NPM鏈接

使用節點版本管理器

使用像nvm這樣的Node版本管理器來為您處理安裝和版本管理。 安裝nvm后,您只需安裝任何Node版本,例如nvm install 8

但如果您只想自己安裝二進制文件,請參閱以下內容:

使用apt-get

在需要系統范圍節點安裝的特殊情況下,您可以使用apt-get:

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

上面的代碼片段將安裝最新的Node 8。

手動安裝二進制文件

為了手動安裝二進制文件,您需要做的就是下載二進制文件並創建一堆符號鏈接。 一個接一個地執行下面的命令,它應該完成這項工作。 我還編寫了一個shell腳本,如果這更容易,可以為你完成(請參閱答案的底部)。 希望有所幫助。

確保在第二行使用適用於您的OS體系結構的正確下載鏈接(即32位或64位)。

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

這是一個下載並安裝所有組件的shell腳本。 如果使用此腳本安裝Node,則可以使用卸載腳本將其卸載。

安裝節點

#! /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

卸載節點

#! /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/ 

我有這樣的問題,但有iojs。 但它應該是相同的程序:

(假設您在當前目錄中有一個匹配node-v*-linux-x64.tar.gz的文件):

# 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/

要在shell中使用二進制文件,請在/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

注意:如果您想訪問某些全局安裝的節點模塊的cli(例如bowertypescriptcoffee-script ),則需要為/usr/bin/目錄中的每個可執行文件創建一個軟鏈接。

或者,您可以將節點安裝目錄的bin目錄(例如/opt/node-v*-linux-x64/ )添加到PATH環境變量中:(您應該使用絕對路徑!)

# 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

此更改將在注銷后再次生效。

這兩種方法都適合我(我使用的是Linux桌面版的Ubuntu 14.04 / 15.04和GNOME 3)。

我在這里報道了同樣的問題。 通過刪除/usr/local/bin/npm並將其替換為/usr/local/lib/node_modules/npm/bin/npm-cli.js的符號鏈接來修復它

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


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

您可以立即運行node和npm。

它曾經在舊版本的存檔內的README中記錄。

我有同樣的問題,我能夠通過創建符號鏈接而不是復制二進制文件來解決它。

$ 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

我傾向於使用nave來安裝二進制文件。 使用wget下載nave.sh文件,然后使用它來安裝節點。 如果您的一個生產應用程序需要不同於全局安裝的節點版本,Nave也很高興。

$ wget https://raw.github.com/isaacs/nave/master/nave.sh
$ sudo bash nave.sh usemain 0.10.22

您可以使用GNU stow通過一個命令正確地在/ usr / local中創建這些二進制文件的符號鏈接。 Stow還允許您稍后從/ usr / local輕松刪除Node js並交換多個版本的Node js。

$ # 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

這些步驟適用於node-v0.10.17-linux-x64。

在Mac OS X中的cp手冊頁中:

除非設置-R標志,否則始終遵循符號鏈接,在這種情況下,默認情況下不遵循符號鏈接。

執行sudo cp bin/* /usr/local/bin ,將遵循符號鏈接bin/npm

實際上, bin/npm鏈接到../lib/node_modules/npm/bin/npm-cli.js ,因此cp會將npm-cli.js復制到/usr/local/bin 這就是你得到錯誤的原因。

我有同樣的問題。

問題是/ usr / local / bin中的npm excutable。

我解決它的方式是:

sudo rm /usr/local/bin/npm

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

在Ubuntu中有一個.bashrc文件,它設置二進制文件的路徑。

默認情況下,主目錄中為bin設置了路徑。 也許您可以在主目錄中創建bin目錄並在那里移動二進制文件。 重新啟動系統並嘗試執行命令node

我遇到了同樣的問題。 所以,我從符號鏈接 節點 ,NPM ./bin//usr/local/bin

如果有人對使用Docker感興趣,請在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM