如何在CentOS上安装Node.JS?


131

我已经找到了许多有关Node.js的安装说明,但它们似乎都非常复杂-我不是超级系统管理员,但我可以解决。我在系统上非常好,但是我没有找到任何node.js包,而且我不确定如何在服务器上编译代码或将代码放在哪里。


感谢大家的精彩回答。我相信您现在可以同时安装nodejs和npm了!很棒
qodeninja 2012年


...使用EPEL(如果尚未安装该存储库,则安装说明:rackspace.com/knowledge_center/article / ...)。
geerlingguy 2014年

我认为EPEL的东西不再有效-或在Centos 7中不起作用。
jcollum

Answers:


139
su - 
yum install gcc-c++ openssl-devel
cd /usr/local/src
wget http://nodejs.org/dist/node-latest.tar.gz
tar zxvf node-latest.tar.gz
(cd into extracted folder: ex "cd node-v0.10.3")
./configure
make
make install

请注意,这需要./configure上面使用Python 2.6+ 。python2.7如有必要,您可以修改“配置”文件以指向第1行。

要创建RPM软件包,可以使用FPM

# wget http://nodejs.org/dist/node-latest.tar.gz
# tar zxvf node-latest.tar.gz
(cd into extracted folder: ex "cd node-v0.10.3")
# ./configure --prefix=/usr/
# make
# mkdir /tmp/nodejs
# make install DESTDIR=/tmp/nodejs/
# tree -L 3 /tmp/nodejs/
/tmp/nodejs/
└── usr
    ├── bin
    │   ├── node
    │   ├── node-waf
    │   └── npm -> ../lib/node_modules/npm/bin/npm-cli.js
    ├── include
    │   └── node
    ├── lib
    │   ├── dtrace
    │   ├── node
    │   └── node_modules
    └── share
        └── man

现在制作nodejs包装:

# fpm -s dir -t rpm -n nodejs -v 0.8.18 -C /tmp/nodejs/ usr/bin usr/lib

然后安装并检查版本:

# rpm -ivh nodejs-0.8.18-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:nodejs                 ########################################### [100%]

# /usr/bin/node --version
v0.8.18

来源:https : //github.com/jordansissel/fpm/wiki/PackageMakeInstall


3
但这就是假设我已经安装正确吗?我没有什么身份证?
qodeninja 2011年

9
我需要包括yum install gcc-c ++
Yehosef 2012年

17
尽管从技术上讲这是正确的,但是对于任何形式的可维护性或可重复性,强烈建议通过RPM(或发行版的包装是什么)来管理软件包,而不是从需要的每台机器上手动构建和安装源代码。下面的许多答案都链接到预构建的软件包。
杰森·安特曼

5
现在尝试通过RPM管理Node.JS及其任何生态系统都是徒劳的,我说这是短暂运行包含Node和许多模块包的yum存储库的人。
jgoldschrafe,2012年

5
@IsaacRabinovitch他们添加了一个三进制if,直到Python 2.5才出现。由于CentOS遵循将系统Python固定到一些自定义补丁的2.4版本的RHEL路径,因此我的解决方案是先yum install python26 python26-devel执行然后执行python26 configure而不是./configure。然后,由于Makefile还执行Python脚本,因此我PYTHON在其中定义了变量,python26而不是python。另外,您将需要g++在那里,因此,如果还没有,则应该yum install gcc-++
汉克·盖伊

64

如果您具有CentOS 6.x,并且已启用EPEL存储库,则可以使用yum安装node / npm:

$ sudo yum install npm

安装完成后,请检查以确保节点设置正确:

$ node -v

(应返回v0.10.36)。

如果要使用更高版本的Node.js(例如4.x,5.x等),则可以使用Nodesource yum存储库代替EPEL。


2
这在我的CentOS 6.4系统上可以很好地工作,并为我提供了node和npm。我得到的节点是0.10.13,离最新的src tarball 0.10.15差不多。似乎这需要更多的努力才能脱颖而出,因为它胜过“从源代码安装”选项。
2013年

1
请按照此步骤安装EPEL存储库。
Lee Chee Kiam 2014年

1
要更新enable epel信息库run yum install -y epel-release,则可以使用yum安装node和npm。
svassr 2015年

我无法在v4.2.x的yum上使用epel或epel-release。下面的nave.sh回答效果很好。
jcollum

1
通过yum安装会给我一个非常旧的版本v0.10.42 ...如何通过yum / rpm安装Node以获取最新版本(当前为5.9.0)?
dokaspar

27

要点“通过软件包管理器安装Node.js”不再包含在CentOS上安装nodejs的说明。从Fedora 18开始,nodejs成为标准存储库的一部分。我尝试使用“ epel-fedora-nodejs”存储库,发现它不再更新,版本保持在过时的0.6.0。

好消息是,我们有nave(Node虚拟环境)可以为我们提供帮助。

https://github.com/isaacs/nave

现在安装nodejs非常简单。

$ wget https://raw.github.com/isaacs/nave/master/nave.sh
$ chmod +x nave.sh
$ ./nave.sh install 0.8.8
$ ./nave.sh use 0.8.8
$ node -v  
v0.8.8

在nave.sh文件中,您可能必须将本地URL更改为与nodejs的最新dist结构匹配的URL。对于0.11.0,我将nave.sh更改为具有以下URL

http://nodejs.org/dist/v $ version / node-v $ version-linux-x64.tar.gz”


1
nodejs.tchol.org现在已经死了
explunit

@explunit我只是更新答案。请尝试中堂。
user974312 2013年

仅供参考:这似乎仅为此用户安装。如果你想安装整个系统:./nave.sh usemain <您的版本>
锥子

“ nodejs成为标准存储库的一部分” –在CentOS 7上,它已经过时了。安装的版本是v10.x(在IT部门始终使用的CentOS上)。
jcollum

13

对于CentOS

yum install gcc-c++ make git
cd /usr/local/src/
git clone git://github.com/joyent/node.git
cd node
./configure
make
make install

2
除非打算为节点项目做贡献,否则您应该使用发行版而不是github版本。
英国电信

11

[编辑]谢谢David在下面的评论中指出nodejs.tchol.org网站现在指向垃圾邮件站点(原文如此!)。.因此,此答案不再起作用,请不要使用它!

我可以确认Chris在他的解决方案中解释的方法在CentOS 5.4中确实有效(我已经在一分钟前完成了:)

wget http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm
yum localinstall --nogpgcheck nodejs-stable-release.noarch.rpm
yum install nodejs-compat-symlinks npm

PS:当然,您必须是root用户(或使用sudo)才能安装。

除了从源代码安装(这始终是一个选择)之外,也许还有另外一种选择: 在这里,我读到 “从2012年12月起,node.js已被Fedora Rawhide接受,并将在Fedora 18中可用。” ,所以也许最终它会进入标准的CentOS存储库

我来看看。


3
这在CentOS 6上效果很好。谢谢!
KyleFarris 2012年

12
“ nodejs.tchol.org”现在已经死了
David Newcomb

2
因此,您应该只从源代码安装。不要害怕
约翰·亨特2013年

2
@JohnHunt从源代码安装意味着您无法再彻底卸载。我在Ruby中也遇到了同样的问题。幸运的是,我可以回滚VM映像...从源代码安装意味着您需要对要安装的软件包有深入的了解。考虑到有成千上万的linux软件包,这不是一个选择!
基督教徒

1
“上面的链接”?答案是按投票排序的,而克里斯的答案现在低于您。
Isaac Rabinovitch 2013年

10

如上所述,“ tchol.org”不见了,使CentOS的人们开始放弃使用软件包管理器,或者转向另一个操作系统。我与我自己缔结了一项协议,反对(实验性的)除实验性/开发性方面的所有工作。

幸运的是,仍然可以在以下位置找到rpm:http//patches.fedorapeople.org/oldnode/stable/el6/x86_64/

只需忽略repo-installer的rpm,它将yum定向到已失效的站点。除非/直到它们变得过时,否则这应该给我们腾出一些时间。

我会睁大眼睛寻找更新的存储库,如果找到它们,请回发。


我想说您链接中的0.6版本已经过时了。看来真的有用于RHEL / CentOS的没有好的选择,现在,这是奇怪的考虑红帽本身提供的node.js的PaaS
explunit

8

这在CentOS 5.7上对我有用:

yum install openssl-devel 
yum install python27
yum install gcc-c++
cd /usr/local/src
wget http://nodejs.org/dist/node-latest.tar.gz
tar zxvf node-latest.tar.gz
cd node-v[tab]
python2.7 configure
make PYTHON=python2.7
make install

3
我必须在CentOS 5.10上使用python 2.6,因为python 2.7不在仓库中。
哦,2014年

7

我在其他任何答案中都没有列出另一种方法,那就是使用从0.8.6开始发布的 Linux二进制发行版。

这是我使用的脚本:

# get the latest stable binary 
latest_node=$(curl http://nodejs.org/dist/latest/SHASUMS.txt | grep 'linux-x64.tar.gz' | awk '{ print $2 }')
wget -O ~/nodestable.tar.gz http://nodejs.org/dist/latest/$latest_node
cd /usr/local/
sudo tar xzvf ~/nodestable.tar.gz --strip=1

或者,如果您想要特定的版本(例如,继续使用0.8系列):

wget http://nodejs.org/dist/v0.8.22/node-v0.8.22-linux-x64.tar.gz
cd /usr/local/
sudo tar xzvf ~/node-v0.8.22-linux-x64.tar.gz --strip=1

在CentOS 6.3上,我必须添加以下链接,以便node和npm命令可以从常规用户或sudo处工作。可能不需要,具体取决于您的版本。

sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

坦白说,CentOS / RHEL上的node.js的情况相当糟糕,因为回购中都不包含node.js(请参见此处的相关问题)。这个答案与前面提到的从源代码进行编译的缺点相同。


7

上面的答案已经过时了

作为根

curl -sL https://rpm.nodesource.com/setup | bash -
yum install -y nodejs

到此为止。

使用以下命令验证您的安装

node -v

我的curl版本似乎不喜欢该URL的SSL证书的签名授权,因此该脚本会自动失败。您可以使用curl -k选项来克服它。
秒杀威廉姆斯

另外,将-k添加到上面的curl命令之后,还需要在下载的“设置”脚本中更新对来自该域的curl下载的引用。然后使用bash手动运行该脚本。
秒杀威廉姆斯

5

没有人提到nvm可以安全轻松地处理(多个)Node安装https://github.com/creationix/nvm吗?我觉得它很有用。

即使是有用的,以构建节点发布的文件树等定制的rpm包没有脚本太多,latest-nodewget./configuremakemake install等等等等。

nvm install 0.10.9

将根据版本下载二进制文件或编译源代码。


是否有离线安装?
阿米特·帕特2015年

4

对于Node.js v4 LTS Argon,在RHEL,CentOS或Fedora上以root身份运行:

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -

或者对于Node.js v5:

curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

或者对于Node.js 0.10:

curl --silent --location https://rpm.nodesource.com/setup | bash -

然后以root身份安装:

yum -y install nodejs

来源:https : //nodejs.org/en/download/package-manager/


唯一适用于CentOS 7.2的答案。并且工作如此迅速和完美。
writeToBhuwan '16

建议:访问GitHub上的NVM项目,并从自述文件中获得明确的说明:github.com/creationix/nvm#installation
Kay V

3

我有一些非常简单的说明,以及.spec文件在这里:

http://www.chrisabernethy.com/installing-node-js-on-centos-redhat/

您将从源代码编译此文件,因此您需要确保拥有在系统(gcc和朋友)上执行此操作所需的所有必要软件包。这组说明是用于构建RPM的,因此,如果您缺少任何必需的软件包,rpmbuild将使您知道首先需要安装哪些软件包。


1
欢迎来到服务器故障!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
user619714 2011年

另外,该链接指向/ usr / src / redhat,在我的CentOS 5安装中似乎不存在(如果我正确理解的话,它位于/ usr / local / src中)
加藤

2
最近的更改还需要人们更新其Python安装(或配置将在仍使用Python 2.4的任何CentOS服务器上不起作用)。考虑更新信息并将其放在此处吗?
蒂姆·波斯特


3

您可以使用nodebrew $ curl -L git.io/nodebrew | perl - setup $ export PATH=$HOME/.nodebrew/current/bin:$PATH $ source ~/.bashrc $ nodebrew install-binary latest $ nodebrew use latest $ node -v


2

对于Ubuntu,这对我来说适用于0.4.10版本

cd /usr/local/src/
sudo wget http://nodejs.org/dist/node-v0.4.10.tar.gz
sudo tar zxvf node-v0.4.10.tar.gz 
cd node-v0.4.10/
sudo ./configure 
sudo make
sudo make install

问题是为CentOS
jcollum

2

这是我的Dockerfile,它在centOS 7中安装了节点v0.10.36

FROM centos:7

RUN    yum -y update
RUN    yum -y install vi, vim, unzip, tar
RUN    yum -y install wget, curl, git

RUN    yum -y install epel-release
RUN    yum -y install npm

2

我对版本4+的回答:

yum -y install wget
wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-x64.tar.gz
tar xzf node-v4.0.0-linux-x64.tar.gz -C /usr/local
rm -rf node-v4.0.0-linux-x64.tar.gz
mv /usr/local/node-v4.0.0-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm

检入文件夹https://nodejs.org/dist/latest/以找到最新版本的下载链接。


这使我免于在运行Plesk的CentOS服务器上-由于gcc已过时,因此无法从源代码构建最新版本(5)。我会更新gcc,但通常通过yum手动更新任何内容,都会使Plesk变成一个尖叫的孩子。
twistedpixel

4.x稳定版有焦油吗?如果经过几次版本更改,答案会更好。
jcollum

我编辑了答案,以包含指向最新发行版文件夹的链接,您可以在其中找到特定于发行版的安装。
Evan Siroky '16

1

以下代码在CentOS 6上运行良好

wget http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm
yum localinstall --nogpgcheck nodejs-stable-release.noarch.rpm
yum install nodejs-compat-symlinks npm

它不再起作用,http://nodejs.tchol.org不再在线。


它曾经工作。那台机器看起来已经不存在了。
rox0r

1

不久前,我亲自完成了在RHEL 5.8上进行此安装的任务。不幸的是,由于nodejs.tchol.org脱机,唯一的选择是从源代码构建它。

但是,构建过程变得相当复杂,因为构建脚本涉及python代码,这些代码无法与RHEL上的默认版本的Python一起使用。经过大量的试验和错误(以及大量的谷歌搜索),我发现了这篇博客文章,基本上描述了逐步执行以下所需任务的步骤。

一种。安装Python 2.6 b。将该版本的python设置为备用版本,然后将其设置为默认版本c。配置并安装node.js d。将Python切换回默认的2.4版本。

关键是您之后应该切换回Python 2.4;否则,像yum这样的简单事情将失败。

http://www.robeesworld.com/blog/31/installing_node_js_0_8_under_centos_5_8


1

使用最高评价的答案进行安装后,如果没有Sudo权限,我将无法安装任何全局模块(-g)。NPM更新显示错误。下面的方法对我来说是完美的,不需要SU或SUDO权限。

我使用以下(https://gist.github.com/isaacs/579814)中的以下方法安装了Node.js和NPM,但根据deesejohn在该页面上发表的评论中的建议修改了两行命令。

cd
sudo yum install gcc-c++
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=$HOME/local
make install
curl -L https://www.npmjs.org/install.sh | sh

使用node -v和检查安装的版本npm -v

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.