我已经看到了使用yum安装依赖项,然后从源代码安装Node.JS和NPM的文章。虽然这是可行的,但我觉得Node.JS和NPM都应该在公共回购的某个地方。
如何在AWS亚马逊Linux上一个命令安装Node.JS和NPM ?
我已经看到了使用yum安装依赖项,然后从源代码安装Node.JS和NPM的文章。虽然这是可行的,但我觉得Node.JS和NPM都应该在公共回购的某个地方。
如何在AWS亚马逊Linux上一个命令安装Node.JS和NPM ?
当前回答
我通常使用NVM在服务器上安装节点。它让我可以选择安装多个版本的nodejs。
命令如下:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
然后检查是否正确安装:
command -v nvm
在那之后,运行这个来安装最新版本:
nvm install node
or
nvm install 11
其他回答
偶然发现了这个,奇怪的是后来很难再找到了。为子孙后代写在这里:
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测试repo:
sudo yum install nodejs --enablerepo=epel-testing
编辑2:使用上面的命令从EPEL repo安装的nodejs 0.12升级到EPEL测试repo的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) is open source and free community based repository project from Fedora team which provides 100% high quality add-on software packages for Linux distribution including RHEL (Red Hat Enterprise Linux), CentOS, and Scientific Linux. Epel project is not a part of RHEL/Cent OS but it is designed for major Linux distributions by providing lots of open source packages like networking, sys admin, programming, monitoring and so on. Most of the epel packages are maintained by Fedora repo. Via http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/
和其他人一样,这个公认的答案也给了我一个过时的版本。
这里有另一种非常有效的方法:
$ curl --silent --location https://rpm.nodesource.com/setup_16.x | bash -
$ yum -y install nodejs
您也可以替换16。X与另一个版本,如18。x, 14。x,等等。
您可以在NodeSource Github页面上看到所有可用的版本,如果需要,也可以从那里提取。
注意:根据您的环境,您可能需要使用sudo运行。
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/
对于那些想要在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
# ...
正如其他人提到的,使用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