【发布时间】:2015-02-05 16:10:41
【问题描述】:
我看过关于使用 yum 安装依赖项,然后从源代码安装 Node.JS 和 NPM 的文章。虽然这确实有效,但我觉得 Node.JS 和 NPM 都应该在某个地方的公共仓库中。
如何在 AWS Amazon Linux 上通过一个命令安装 Node.JS 和 NPM?
【问题讨论】:
标签: node.js amazon-web-services npm yum amazon-linux
我看过关于使用 yum 安装依赖项,然后从源代码安装 Node.JS 和 NPM 的文章。虽然这确实有效,但我觉得 Node.JS 和 NPM 都应该在某个地方的公共仓库中。
如何在 AWS Amazon Linux 上通过一个命令安装 Node.JS 和 NPM?
【问题讨论】:
标签: node.js amazon-web-services npm yum amazon-linux
偶然发现了这个,奇怪的是后来很难再找到。放在这里供后代使用:
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 发行版提供 100% 高质量的附加软件包Linux。 Epel 项目不是 RHEL/Cent OS 的一部分,但它是为主要的 Linux 发行版设计的,提供了许多开源包,如网络、系统管理、编程、监控等。大部分 epel 包都由 Fedora repo 维护。
通过http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/
【讨论】:
sudo npm install -g n 和 sudo n v0.12 或者你喜欢的任何其他版本。
sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
sudo yum install nodejs --enablerepo=epel-testing 返回错误:“没有可用的包 nodejs。”而sudo yum install nodejs --enablerepo=epel 只给出了非常旧的版本...
接受的答案给了我非常过时的节点 0.10.36 和 npm 1.3.6。我从 nodejs 下载页面获取了最新的 linux-x64 tarball,安装起来并不难: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 “全局”安装的所有软件包。
【讨论】:
和其他人一样,接受的答案也给了我一个过时的版本。
这是另一种效果很好的方法:
$ curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
$ yum -y install nodejs
您也可以将 14.x 替换为其他版本,例如 16.x、12.x 等。
您可以在 NodeSource Github page 上查看所有可用版本,如果需要,也可以从那里提取。
注意:根据您的环境,您可能需要使用sudo 运行。
【讨论】:
package.json 运行npm install 时,效果非常好,
curl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash - 运行它
curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash - 和 sudo yum -y install nodejs
curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
使用 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
【讨论】:
对于 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
【讨论】:
对我有用的程序(遵循these 相当旧的说明并进行了一些更新):
git --version 或通过以下方式安装:sudo yum install git sudo yum install gcc-c++ makesudo yum install openssl-devel node 的目录中(您可以稍后将其删除):git clone https://github.com/nodejs/node.git cd nodegit checkout v6.1.0 - 将您想要的版本放在v之后./configuremakesudo make install node --version 或简单地使用node(通过process.exit() 或^C x 2 或^C + exit 退出节点)npm --version 并在必要时通过sudo npm install -g npm 更新rm -r node 的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 nodejssudo rm -f /usr/local/bin/nodesudo yum rm nodejs 不起作用,因为rm 不是有效的yum 命令,请参阅yum --help)git clone git://github.com/nodejs/node.git 而不是git clone https://github.com/nodejs/node.git 克隆节点存储库,但您可能会遇到各种错误(请参阅here)。/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
【讨论】:
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
我刚遇到这个。我尝试了一些更流行的答案,但最终对我有用的是亚马逊的快速设置指南。
Tutorial: Setting Up Node.js on an Amazon EC2 Instance
本教程的要点是:
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)" 测试您是否已正确安装节点Node
希望这可以帮助下一个人。
【讨论】:
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。
【讨论】:
我安装了 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 allsudo yum makecache:重新生成元数据缓存(文档中没有,但 yum 一直尝试安装 Node.jx 6.x,但未成功,直到我发出最后两个命令)sudo yum install nodejs: 安装 Node.js 8.x【讨论】:
正如官方文档中提到的,简单的以下 2 个步骤 -
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
【讨论】:
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
【讨论】:
对于那些希望在 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 实例。
【讨论】:
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)"
【讨论】:
似乎没有人提到这一点。在 Amazon Linux 2 上,加载 EPEL 的官方方法是:
sudo amazon-linux-extras install epel...那么你可以:
sudo yum install nodejs
【讨论】:
我通常使用 NVM 在服务器上安装节点。它让我可以选择安装多个版本的 nodejs。命令如下
卷曲-o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh |重击
然后检查是否安装正确
命令 -v nvm
之后,运行这个来安装最新版本
nvm 安装节点
或
nvm 安装 11
【讨论】:
bash 的管道代码,您可能会暴露于这样做的漏洞。我建议先下载源代码并确保它包含您期望的脚本。
正如其他人提到的那样,使用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
【讨论】:
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
【讨论】: