【问题标题】:Unattended install of node.js and npm, but without building it from source无人值守安装 node.js 和 npm,但不从源代码构建它
【发布时间】:2011-09-17 20:54:27
【问题描述】:

有没有办法以无人值守的方式(使用 shell 脚本)安装 node.js 和 npm 而无需从源代码构建它?我有一组根据服务器负载自动扩展的服务器,但是下载 Node.js 源并使用 make 构建它需要大约 10 分钟。

谢谢!

编辑:我尝试复制二进制文件,但这导致二进制文件已损坏的错误。是的,它们都是 EC2 m1.small 实例。

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    由于您使用的是 EC2,因此创建自己的 AMI 可能会有所帮助。我发现最方便的方法是:

    1. 启动一台强大的大型机器
    2. 编译最新稳定的 Node.js
    3. 安装 NPM,然后安装 Nave
    4. 使用 Nave 安装多个版本的 Node.js - 每个版本都有自己的 NPM。
    5. 将此保存为 AMI

    我通常根据项目安装 3-5 个不同的版本[1],每个版本都有自己独立的模块。 Nave 将对不同的 Node 版本及其模块进行沙箱处理。

    然后,一旦您按照自己喜欢的方式设置它,您就可以轻松地从此主副本[2] 生成更多服务器。如果您愿意,您可以在技术上编译 每个 Node.js 版本,但我认为这没有必要。

    [1] 例如,Braintree 模块目前需要 Node.js@0.4.7,而主要代码库位于 Node.js@0.4.1。
    [2] 只要你与架构保持一致,如果你在一个 m1.xlarge 上编译所有这些,你就不能在 m1.small 上使用图像,因为 xl 是 64 位的,而 small 是 32 位的。

    【讨论】:

      【解决方案2】:

      也许我迟到了,但由于现在有适用于 Windows 的可安装 MSI 文件,您可以在以下位置下载与您的平台(32 位或 64 位)相对应的文件:

      http://nodejs.org/download/

      并使用 msiexec /qn 标志启动静默安装,请查看此帖子:

      MSIEXEC Silent Mode Installation

      node.js msi 安装程序现在非常简单,他们无需额外步骤即可在 PATH 上安装 node 和 npm。

      【讨论】:

        【解决方案3】:

        假设你的脚本是这样的:

        git clone https://github.com/joyent/node.git
        cd node
        ./configure
        make
        

        你能不能只在每个新实例上使用这里的结果,然后继续:

        sudo make install
        curl http://npmjs.org/install.sh | sudo sh
        

        【讨论】:

        • 我这样做了,将内容放入一个 tarball,并指示 shell 脚本下载此文件,解压缩它,然后继续,但是我收到一个错误,它无法执行文件。让我再试一次。
        • 以这种方式安装 NPM 会给出以下提示:“此脚本将查找并消除 npm 0.x 安装的任何 shims、符号链接和其他杂物。这样可以吗?输入 '是'或'否'”
        • 有没有办法绕过输入提示?
        【解决方案4】:

        我假设服务器都是相同的平台/内核,从 redhat/centos 环境说...为什么不在一台服务器上构建它然后将二进制文件打包成 RPM?然后,您可以在其他服务器上使用它。如果你在 Debian 环境中,我假设 deb 包也是一样的。

        【讨论】:

          【解决方案5】:

          如果您使用的是 Ubuntu,还有一个 deb 包(可能也适用于其他基于 Debian 或 Ubuntu 的发行版):

          http://blog.jetienne.com/2010/08/nodejs-deb-package-on-ubuntu-repository.html

          sudo add-apt-repository ppa:jerome-etienne/neoip && 
               sudo apt-get update && 
               sudo apt-get install nodejs
          

          ..

          $ node -v
          v0.2.6
          

          对于 npm:

          curl http://npmjs.org/install.sh | sudo sh
          

          【讨论】:

            【解决方案6】:

            我赞同 James C 的建议,即构建适合您的操作系统分发的 RPM 或任何软件包系统,然后与您的服务器共享。

            【讨论】:

              猜你喜欢
              • 2013-02-08
              • 2012-05-12
              • 1970-01-01
              • 2021-01-22
              • 2021-09-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多