ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Amazon Linux 上 yum 安装 Node.JS

我看过关于使用 yum 安装依赖项,然后从源代码安装 Node.JS 和 NPM 的文章。虽然这确实有效,但我觉得 Node.JS 和 NPM 都应该在某个地方的公共仓库中。

如何在 AWS Amazon Linux 上通过一个命令安装 Node.JS 和 NPM?


M
Matthew Herbst

偶然发现了这个,奇怪的是后来很难再找到。放在这里供后代使用:

sudo yum install nodejs npm --enablerepo=epel

EDIT 3:截至 2016 年 7 月,EDIT 1 不再适用于 nodejs 4(EDIT 2 也不再适用)。这个答案 (https://stackoverflow.com/a/35165401/78935) 给出了一个真正的单行。

编辑 1:如果您正在寻找 nodejs 4,请尝试 EPEL 测试存储库:

sudo yum install nodejs --enablerepo=epel-testing

编辑 2:要使用上述命令从通过 EPEL 存储库安装的 nodejs 0.12 升级到 EPEL 测试存储库中的 nodejs 4,请按照以下步骤操作:

sudo yum rm nodejs
sudo rm -f /usr/local/bin/node
sudo yum install nodejs --enablerepo=epel-testing

较新的软件包将节点二进制文件放入 /usr/bin,而不是 /usr/local/bin

还有一些背景:

选项 --enablerepo=epel 导致 yum 在 EPEL 存储库中搜索包。

EPEL (Extra Packages for Enterprise Linux) 是 Fedora 团队基于开源和免费社区的存储库项目,它为包括 RHEL (Red Hat Enterprise Linux)、CentOS 和 Scientific Linux 在内的 Linux 发行版提供 100% 高质量的附加软件包。 Epel 项目不是 RHEL/Cent OS 的一部分,但它是为主要的 Linux 发行版设计的,它提供了许多开源包,如网络、系统管理、编程、监控等。大多数 epel 软件包由 Fedora repo 维护。通过 http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/


这绝对是我见过的最快的方法,但警告可能有用——EPEL 存储库与当前的稳定节点不同步,安装后你不能使用“n”来修复它方式(至少,不是没有某种我无法理解的魔法)。繁琐的 git clone / make install 方法是我发现确保一致和最新安装的唯一方法。
我从中得到了节点 0.10.36 和 npm 1.3.6。这些都非常过时。
@分号你可以通过只安装 npm 来解决这个问题,然后安装 sudo npm install -g nsudo n v0.12 或任何其他你喜欢的版本。
n 按预期更新,但没有正确更新节点链接。您必须运行额外的命令:sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
此答案无效,因为 sudo yum install nodejs --enablerepo=epel-testing 返回错误:“No package nodejs available”。而 sudo yum install nodejs --enablerepo=epel 只给出了非常旧的版本......
M
Matthew Herbst

像其他人一样,接受的答案也给了我一个过时的版本。

这是另一种效果很好的方法:

$ curl --silent --location https://rpm.nodesource.com/setup_16.x | bash -
$ yum -y install nodejs

您也可以将 16.x 替换为其他版本,例如 18.x、14.x 等。

您可以在 NodeSource Github page 上查看所有可用版本,如果需要也可以从那里提取。

注意:您可能需要使用 sudo 运行,具体取决于您的环境。


这是我需要在 AWS Elastic Beanstalk 上使用来获得比已安装版本更新的版本。
当我需要为 package.json 运行 npm install 时,效果非常好,
我需要用 curl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash - 运行它
如果您的权限被拒绝,则需要添加一些 sudo。 curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -sudo yum -y install nodejs
如果你想安装 Node.js 8.x,应该执行 curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
D
Darpan

接受的答案给了我非常过时的节点 0.10.36 和 npm 1.3.6。我从 nodejs 下载页面获取了最新的 linux-x64 压缩包,安装起来并不难:https://nodejs.org/dist/latest/

# start in a directory where you like to install things for the current user
(For noobs : it downloads node package as node.tgz file in your directlry)
curl (paste the link to the one you want from the downloads page) >node.tgz

现在upzip你刚刚下载的tar -

tar xzf node.tgz

运行此命令,然后将其添加到您的 .bashrc

export PATH="$PATH:(your install dir)/(node dir)/bin"

(例如:export PATH ="$PATH:/home/ec2-user/mydirectory/node/node4.5.0-linux-x64/bin")

并更新 npm(仅一次,不要添加到 .bashrc):

npm install -g npm

请注意,这里的 -g 表示全局,实际上意味着全局到那个 npm 实例,这是我们刚刚安装的实例,并且仅限于当前用户。这将适用于 npm “全局”安装的所有软件包。


这实际上是最好的答案,因为您得到的正是您想要的版本
希望我先阅读这个答案 - 这应该是公认的答案,因为您可以选择要安装的版本。 -- 谢谢@voltrevo
@voltrevo 谢谢你的回答。是的,还有其他方法可以在 Linux 上安装节点。公认的答案是单线,恰好插入 YUM 包系统以进行自动和托管更新。 YUM repos 中的包确实有点老,而且在更广泛的部署中也经过了更好的测试。就个人而言,我建议将最新最好的东西留给本地开发环境,并使用更像是生产环境公认答案的东西。干杯!
对于旧的 centos 版本,这是最好的方法
现在运行 node -v 后的错误是:'无法执行二进制文件'。有任何想法吗?
f
fuzzysearch

使用 NVM 简单安装...

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node

要安装某个版本(例如 12.16.3)的 Node 将最后一行更改为

nvm install 12.16.3

有关如何使用 NVM 的更多信息,请访问文档:https://github.com/nvm-sh/nvm


这完全有效。也比@goredwards 回答花费的时间更少。在 Amazon ECS 优化的 AMI 上试用。
接受的答案和所有 EDITs 1-3 对我不起作用,但这有效。谢谢!
整洁紧凑。
这应该是答案。除非有人希望从源代码构建,否则这是迄今为止最好的。
如果您通过 cloudformation 的 AWS::EC2::LaunchTemplate 使用用户数据,这将不起作用。如果您通过 SSH 连接到 EC2 并运行它,它将起作用。我仍然坚持通过用户数据让它工作
g
goredwards

对我有用的过程(遵循 these 相当旧的说明并进行了一些更新):

检查 git 是否已安装 git --version 或通过以下方式安装: sudo yum install git

安装 gcc 和 openssl: sudo yum install gcc-c++ make sudo yum install openssl-devel

将 git repo 克隆到名为 node 的目录中(您可以稍后将其删除): git clone https://github.com/nodejs/node.git

在 https://github.com/nodejs/node/releases 决定你想要的节点版本

转到刚刚创建的节点目录并安装 node cd node git checkout v6.1.0 - 将所需版本放在 v ./configure make sudo make install 之后

测试该节点是否已安装/使用节点 --version 或仅使用节点(通过 process.exit() 或 ^C x 2 或 ^C + exit 退出节点)

检查 npm 版本: npm --version 并在必要时通过 sudo npm install -g npm 进行更新

可选:使用 rm -r node 删除节点目录

笔记:

接受的答案不起作用,因为 sudo yum install nodejs --enablerepo=epel-testing 返回错误:No package nodejs available。 ...和 sudo yum install nodejs --enablerepo=epel (即没有-testing)只提供了非常旧的版本。如果您已经安装了旧版本的节点,您可以使用以下命令将其删除: sudo npm uninstall npm -g ...因为 npm 可以自行卸载 sudo yum erase nodejs sudo rm -f /usr/local/bin/node (sudo yum rm已接受答案中的 nodejs 将不起作用,因为 rm 不是有效的 yum 命令,请参阅 yum --help)可以通过 git clone git://github.com/nodejs/node.git 而不是 git clone 克隆节点存储库https://github.com/nodejs/node.git 但您可能会遇到各种错误(请参阅此处)。如果您已经有以前安装的 /node 目录,请在使用 git clone 命令之前将其删除(否则会发生冲突): rm -r node 如果您在使用任何 sudo npm... 命令时遇到问题 - 例如 sudo : npm: command not found 和/或在没有 sudo 的情况下安装节点包时有权限问题,编辑 sudo nano /etc/sudoers 并将 :/usr/local/bin 添加到行的末尾 Defaults secure_path = /sbin:/bin:/ usr/sbin:/usr/bin 以便读取 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin


@Gio 如果这个答案不让您满意,还有很多其他答案可供选择;-) ...“在一个命令中”并不是问题恕我直言的最重要部分。
在我对接受答案犯错后,这非常有用。谢谢
@talentedandrew etc/sudoers 文件控制谁可以在什么机器上以什么用户的身份运行什么命令 - 但只会运行/查找/查找在其 secure_path 节点上列出的目录中的命令应该安装在 /usr/local/bin 中,如果它在那里 sudo 应该找到它 - 请参阅 stackoverflow.com/a/31734090/3092596 如果 sudo 没有找到它,则需要将该路径添加到 sudo 的 secure_path - 另请参阅:superuser.com/a/927599/404543
我想补充一点,您可能需要在使用此方法安装后修复符号链接: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
N
Niklas Rosencrantz

对于 v4 LTS 版本,请使用:

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs

对于 Node.js v6,请使用:

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum -y install nodejs

在尝试在 Amazon Linux 上安装本机插件时,我也遇到了一些问题。如果你想这样做,你还应该安装构建工具:

yum install gcc-c++ make

这是一个很棒的答案。我不再需要 20 分钟来安装 Node。
如果你在弹性 beanstalk 上运行一个带有一些 npm 编译前端的 php 应用程序,你可以使用它。它是我的 install.config 文件的一部分,使它工作 - gist.github.com/marekjalovec/1ccee0c2254e65fc5d82eb35c7da82ae
d
dz902

好像没人提这个。在 Amazon Linux 2 上,加载 EPEL 的官方方法是:

sudo amazon-linux-extras 安装 epel

...那么您可以:

须藤百胜安装nodejs

请参阅Extras Library (Amazon Linux 2)


好吧,这似乎是最好的答案!
@Stretch 不是。它安装节点 6。太旧了。
这实际上是最好的答案!
t
troxwalt

我刚遇到这个。我尝试了一些更受欢迎的答案,但最终对我有用的是亚马逊的快速设置指南。

Tutorial: Setting Up Node.js on an Amazon EC2 Instance

本教程的要点是:

确保您已通过 ssh 连接到该实例。抓取 nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh |重击活动。 ~/.nvm/nvm.sh 使用 nvm nvm install 4.4.5 安装节点(注意:您可以选择不同的版本。首先通过运行 $ nvm ls-remote 检查远程版本)最后,测试您是否已安装节点节点正确运行 $ node -e "console.log('Running Node.js' + process.version)"

希望这可以帮助下一个人。


您可能想解释该链接中的内容。一个好的答案只使用链接作为参考,而不是答案的主题。
B
Brad W

我安装了 Node.js 6.x 并想安装 Node.js 8.x。

下面是我使用的命令(取自 Nodejs's site,并带有一些额外的步骤来处理 yum 缓存的数据):

sudo yum remove nodejs:卸载 Node.js 6.x(我不知道这是否必要) curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - sudo yum clean all sudo yum makecache:重新生成元数据缓存(这不在文档中,但 yum 一直尝试安装 Node.jx 6.x,但未成功,直到我发出最后两个命令) sudo yum install nodejs : 安装 Node.js 8.x


V
Vaibhav Gidde

RHEL、CentOS、CloudLinux、Amazon Linux 或 Fedora:

# As root
curl -fsSL https://rpm.nodesource.com/setup_12.x | bash -

# No root privileges
curl -fsSL https://rpm.nodesource.com/setup_12.x | sudo bash -

sudo yum install -y nodejs

D
Devs love ZenUML

sudo yum install nodejs npm --enablerepo=epel 适用于 Amazon Linux AMI curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs 适用于 RedHat。


g
grepit

最简单的解决方案是这个(以root身份执行这些操作)

sudo su root
cd /etc
mkdir node
yum install wget
wget https://nodejs.org/dist/v9.0.0/node-v9.0.0-linux-x64.tar.gz
tar -xvf node-v9.0.0-linux-x64.tar.gz
cd node-v9.0.0-linux-x64/bin
./node -v
ln -s /etc/node-v9.0.0-linux-x64/bin/node node

https://i.stack.imgur.com/uLwoq.jpg


S
Sunil Buddala

https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash - sudo yum -y install nodejs


T
Taner Melikoglu

EC2-Instance 的官方文档适用于我:https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 1. curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
 2. . ~/.nvm/nvm.sh
 3. nvm ls-remote (=> find your version x.x.x =>) nvm install  x.x.x
 4. node -e "console.log('Running Node.js ' + process.version)"

w
whoami - fakeFaceTrueSoul

我通常使用 NVM 在服务器上安装节点。它让我可以选择安装多个版本的 nodejs。

命令如下:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

然后检查它是否安装正确:

command -v nvm

之后,运行它来安装最新版本:

nvm install node 

或者

nvm install 11 

感谢您的回答!请小心从 Internet 直接检索到 bash 的管道代码,您可能会暴露于这样做的漏洞。我建议先下载源代码并确保它包含您期望的脚本。
R
Richard Tyler Miles

2022 年 5 月

我在这上面花了太长时间。我的 Amazon Linux 2 配置,以 root 身份运行。

#!/usr/bin/env zsh

# https://stackoverflow.com/questions/11542846/nvm-node-js-recommended-install-for-all-users
echo "=================================N=O=D=E========================================"

cd /usr/local/bin || exit 90

git clone https://github.com/nvm-sh/nvm.git .nvm

\. "/usr/local/bin/.nvm/nvm.sh"

nvm install --lts

node -e "console.log('Running Node.js ' + process.version)"

cat << "EOF" > /etc/profile.d/npm.sh
#!/usr/bin/env bash
export NVM_DIR="/usr/local/bin/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm'}

EOF

chmod 755 /etc/profile.d/npm.sh

npm install -g npm

2022 年 6 月 - 当垃圾箱中的东西没有链接时,系统真的很讨厌。如果您需要其他用户可以访问的东西,这里有一个小的更新可以提供帮助。诚然,添加 /etc/profile.d/npm.sh 正是 nvm 的建议,但我发现它被高估了。我认为可以将其删除以代替纯粹的 ln -s。快乐的黑客

#!/bin/zsh

# https://stackoverflow.com/questions/11542846/nvm-node-js-recommended-install-for-all-users
echo "=================================N=O=D=E========================================"

cd /usr/local/bin || exit 90

git clone https://github.com/nvm-sh/nvm.git .nvm

# this uncontrolled script has an unbound variable $HOME
# @link https://github.com/Drop-In-Gaming/dropingaming.com/runs/6437329820?check_suite_focus=true
\. "/usr/local/bin/.nvm/nvm.sh" || true

# todo - try to install 18
nvm install --lts

nvm install 17

node -e "console.log('Running Node.js ' + process.version)"

cat << "EOF" > /etc/profile.d/npm.sh
#!/usr/bin/env bash
export NVM_DIR="/usr/local/bin/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm'}

EOF

echo 'source /etc/profile.d/npm.sh' >> /root/.bashrc

echo 'source /etc/profile.d/npm.sh' >> /root/.zshrc

echo 'source /etc/profile.d/npm.sh' >> /home/ssm-user/.bashrc

echo 'source /etc/profile.d/npm.sh' >> /home/ssm-user/.zshrc

echo 'source /etc/profile.d/npm.sh' >> /home/www-data/.bashrc

echo 'source /etc/profile.d/npm.sh' >> /home/www-data/.zshrc

chmod 755 /etc/profile.d/npm.sh

npm install -g npm

echo "===========================WHERE==IS==NODE==========================="

which node

which npm

echo "symlinking to /usr/bin/"

if [ -e /usr/bin/node ]; then

  sudo rm -f /usr/bin/node

fi

if [ -e /usr/bin/npm ]; then

  sudo rm -f /usr/bin/npm

fi

sudo ln -s "$(which node)" /usr/bin/

sudo ln -s "$(which npm)" /usr/bin/



请注意,您可以使用 bash 而不是 zsh,因为 bash 是预安装的。
V
Vivek Chaturvedi

如官方文档中所述,简单的以下 2 个步骤 -

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

A
Andrei Cioara

对于那些希望在 Ansible 中运行已接受的答案而无需进一步搜索的人,我在此处发布任务以方便和将来参考。

接受的答案建议:https://stackoverflow.com/a/35165401/78935

Ansible 任务等价物

tasks:
  - name: Setting up the NodeJS yum repository
    shell: curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    args:
      warn: no
  # ...

S
Soundharya AM

您可以通过将已安装的软件包重新安装到当前版本来更新/安装节点,这可以使我们在进行更新时避免出现大量错误。

这是由 nvm 使用以下命令完成的。在这里,我已将我的节点版本更新为 8,并将所有可用的软件包也重新安装到 v8!

nvm i v8 --reinstall-packages-from=default

它也适用于 AWS Linux 实例。


M
Mo Hajr

正如其他人提到的那样,使用 epel 提供了一个非常过时的版本,这是我刚刚编写的一个小脚本,用于添加到 CI 管道或将其传递给 ec2 user-data 以安装最新版本的节点,只需替换 version与您想要的,以及您正在使用的适当的 Linux distro

以下示例适用于 amazon-Linux-2-AMI

#!/bin/bash

version='v14.13.1'
distro='linux-x64'
package_name="node-$version-$distro"
package_location="/usr/local/lib/"

curl -O https://nodejs.org/download/release/latest/$package_name.tar.gz
tar -xvf $package_name.tar.gz -C $package_location
rm -rfv $package_name.tar.gz

echo "export PATH=$package_location/$package_name/bin:\$PATH" >> ~/.profile

如果你想在同一个 shell 中测试它,只需运行

. ~/.profile