我已经看到了使用yum安装依赖项,然后从源代码安装Node.JS和NPM的文章。虽然这是可行的,但我觉得Node.JS和NPM都应该在公共回购的某个地方。

如何在AWS亚马逊Linux上一个命令安装Node.JS和NPM ?


当前回答

对于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

其他回答

2022年5月

我在这上面花了太长时间。我的亚马逊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/


我偶然发现了这个。我尝试了一些比较流行的答案,但最后对我有用的是亚马逊的快速设置指南。

教程:在Amazon EC2实例上设置Node.js

本教程的要点是:

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

希望这能帮助到下一个人。

对于那些想要在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
  # ...

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

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

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

它也可以在AWS Linux实例上工作。

正如其他人提到的,使用epel会得到一个非常过时的版本,下面是我刚刚写的一个小脚本,它可以添加到CI管道中,或者将其传递给ec2 user-data,以安装最新版本的node,只需将版本替换为您想要的版本,以及您正在使用的合适的Linux发行版。

下面以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