【问题标题】:What is the suggested way to install brew, node.js, io.js, nvm, npm on OS X?在 OS X 上安装 brew、node.js、io.js、nvm、npm 的建议方法是什么?
【发布时间】:2015-03-17 00:43:35
【问题描述】:

我正在尝试尽可能多地使用自制软件。在 OS X 上安装以下内容的建议方法是什么?

并希望支持以下方面的开发:

【问题讨论】:

  • 需要注意的是,虽然您要求使用自制软件。不建议使用 homebrew 安装 nvm 来自github.com/creationix/nvm "不支持 Homebrew 安装。如果您对 homebrew 安装的 nvm 有问题,请 brew 卸载它,并在提交问题之前按照以下说明安装它。"跨度>

标签: node.js macos npm homebrew nvm


【解决方案1】:

2021 年更新

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

MAC 故障排除:

从 macOS 10.15 开始,默认的 shell 是 zsh,nvm 会寻找 .zshrc 来更新,默认没有安装。使用 touch 创建一个 ~/.zshrc 并再次运行安装脚本。

如果你使用 bash,之前的默认 shell,如果不存在,运行 touch ~/.bash_profile 创建必要的配置文件。

您可能需要重新启动终端实例或运行 . ~/.nvm/nvm.sh。重新启动终端/打开新选项卡/窗口,或运行源命令将加载命令和新配置。

您以前使用过 bash,但您安装了 zsh。您需要手动将这些行添加到 ~/.zshrc 并运行。 ~/.zshrc.

【讨论】:

    【解决方案2】:

    2019 更新:使用 NVM 安装节点,而不是 Homebrew

    在大多数答案中,推荐的安装 nvm 的方法是使用 Homebrew

    不要这样做

    Github Page 为 nvm 明确指出:

    不支持 Homebrew 安装。如果您有问题 自制安装的 nvm,请 brew 卸载它,然后使用安装它 在提交问题之前,请按照以下说明进行操作。

    改用下面的方法

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

    该脚本将 nvm 存储库克隆到 ~/.nvm 并将源代码行添加到您的配置文件(~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc)。

    然后使用nvm安装node。例如要安装最新的 LTS 版本:

    nvm install v8.11.1
    

    干净无忧。它也会将此标记为您的默认节点版本,因此您应该全部设置好

    【讨论】:

    • 我想你也可以nvm install --lts 获取最新的LTS
    • 感谢您提出这个问题,我带着 nvm 和自制软件掉进了一个可怕的兔子洞,刚刚出现......
    • 好答案!经过大量阅读(节点安装可能是雷区),我只是 brew 卸载节点,清理所有内容并使用 nvm 在 Mojave 10.14.4 上安装节点:stackoverflow.com/q/55735701/123033
    • 安装“nvm”的最佳方式是什么?
    【解决方案3】:

    使用 zsh 和 Homebrew 安装:

    brew install nvm
    

    然后将以下内容添加到 ~/.zshrc 或您想要的 shell 配置文件:

    export NVM_DIR="$HOME/.nvm"
    . "/usr/local/opt/nvm/nvm.sh"
    

    然后安装一个node版本并使用它。

    nvm install 7.10.1
    nvm use 7.10.1
    

    【讨论】:

      【解决方案4】:

      我来得太晚了,但我不喜欢其他答案

      安装 Homebrew

      对于 brew 运行

      "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
      

      安装节点和npm

      不应该使用brew来安装nodenpm

      我看到一些地方建议你应该使用 Homebrew 来安装 Node(比如 alexpods 的答案和在这个 Team Treehouse blog Post 中),但是以这种方式安装你更容易遇到像 npm 和 @987654328 这样的问题@ 都是 包管理器,你应该有一个 包管理器 管理另一个 包管理器 这会导致问题,就像这个错误官方 npm 问题Error: Refusing to delete: /usr/local/bin/npm 或这个Can't uninstall npm module on OSX

      您可以在 DanHerbert 的帖子 Fixing npm On Mac OS X for Homebrew Users 中阅读有关该主题的更多信息,他接着说

      此外,使用 Homebrew 安装的 npm 将要求您在安装全局包时使用 sudo。由于 Homebrew 背后的核心理念之一是无需授予 root 权限即可安装应用程序,因此这是个坏主意。

      其他一切

      我会使用 npm;但是您真的应该按照那里网站上的说明按照每个模块的安装说明进行操作,因为他们会比其他任何人更了解他们遇到的任何问题或错误

      【讨论】:

      • 所以你建议从他们的下载中安装它?
      【解决方案5】:

      我正在使用 n(节点版本管理)

      你可以通过两种方式安装它

      brew install n
      

      npm install -g n
      

      你可以在不同版本的node和io之间切换。这是我当前环境中的一个示例,当我在没有参数的情况下调用 n 时:

      $ n
      
        io/3.3.1
        node/0.12.7
        node/4.0.0
        node/5.0.0
      ο node/5.10.1 
      

      【讨论】:

      • 您可以添加第三种安装方式,如果您需要,它会轻松安装并留下方便的卸载实用程序 - github.com/mklement0/n-install github.com/tj/n 的 n 文档中建议使用此方法
      • 还应该提到的是,如果您计划同时为不同的项目运行不同的节点版本(例如在 2 个不同的终端窗口中),nvm 是一个更好的选择,因为它只切换到节点的路径在每个会话中。
      【解决方案6】:

      您应该使用 nvm 安装 node.js,因为这样您在安装全局包时不必提供超级用户权限(您可以简单地执行“npm install -g packagename”而无需添加 'sudo')。

      不过,Brew 对于其他事情来说非常棒。每当我可以选择使用 Bower 安装某些东西时,我倾向于偏向于 Bower。

      【讨论】:

      • 使用 nvm 安装节点现在是我的首选方法。由于能够在我的机器上拥有多个版本的节点,而且我不必使用 sudo 执行 npm,原因很明显。我写了一篇博文garywoodfine.com/install-nodejs-nvm-osx解释如何安装
      【解决方案7】:

      如果您以前使用 brew 安装过 node,那么您将有一堆额外的文件,您应该在“正确的方式”安装 node 之前清理这些文件。另外,我必须在我的启动脚本中添加一些设置才能使事情顺利进行。

      我编写了一个脚本来简化此操作。

      # filename:  install-nvm-npm-node
      # author:    Lex Sheehan
      # purpose:   To cleanly install NVM, NODE and NPM
      # dependencies:  brew
      
      NOW=$(date +%x\ %H:%M:%S)
      CR=$'\n'
      REV=$(tput rev)
      OFF=$(tput sgr0)
      BACKUP_DIR=$HOME/backups/nvm-npm-bower-caches/$NOW
      MY_NAME=$(basename $0)
      NODE_VER_TO_INSTALL=$1
      if [ "$NODE_VER_TO_INSTALL" == "" ]; then
          NODE_VER_TO_INSTALL=v0.12.2
      fi
      if [ "`echo "$NODE_VER_TO_INSTALL" | cut -c1-1`" != "v" ]; then
          echo """$CR""Usage:   $ $MY_NAME <NODE_VERSION_TO_INSALL>"
          echo "Example: $ $MY_NAME v0.12.1"
          echo "Example: $ $MY_NAME $CR"
          exit 1
      fi
      echo """$CR""First, run:  $ brew update"
      echo "Likely, you'll need to do what it suggests."
      echo "Likely, you'll need to run: $ brew update$CR"
      echo "To install latest node version, run the following command to get the latest version:  $ nvm ls-remote"
      echo "... and pass the version number you want as the only param to $MY_NAME. $CR"
      echo "Are you ready to install the latest version of nvm and npm and node version $NODE_VER_TO_INSTALL ?$CR"
      echo "Press CTL+C to exit --or-- Enter to continue..."
      read x
      
      echo """$REV""Uninstalling nvm...$CR$OFF"
      # Making backups, but in all likelyhood you'll just reinstall them (and won't need these backups)
      if [ ! -d "$BACKUP_DIR" ]; then 
          echo "Creating directory to store $HOME/.nvm .npm and .bower cache backups: $BACKUP_DIR"
          mkdir -p $BACKUP_DIR
      fi 
      set -x
      mv $HOME/.nvm   $BACKUP_DIR  2>/dev/null
      mv $HOME/.npm   $BACKUP_DIR  2>/dev/null
      mv $HOME/.bower $BACKUP_DIR  2>/dev/null
      { set +x; } &>/dev/null
      
      echo "$REV""$CR""Uninstalling node...$CR$OFF"
      echo "Enter your password to remove user some node-related /usr/local directories"
      set -x
      sudo rm -rf /usr/local/lib/node_modules
      rm -rf /usr/local/lib/node
      rm -rf /usr/local/include/node
      rm -rf /usr/local/include/node_modules
      rm /usr/local/bin/npm
      rm /usr/local/lib/dtrace/node.d
      rm -rf $HOME/.node
      rm -rf $HOME/.node-gyp
      rm /opt/local/bin/node
      rm /opt/local/include/node
      rm -rf /opt/local/lib/node_modules
      rm -rf /usr/local/Cellar/nvm
      brew uninstall node 2>/dev/null
      { set +x; } &>/dev/null
      
      echo "$REV""$CR""Installing nvm...$CR$OFF"
      
      echo "++brew install nvm"
      brew install nvm 
      echo '$(brew --prefix nvm)/nvm.sh'
      source $(brew --prefix nvm)/nvm.sh
      
      echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc):$CR$OFF"
      echo "export NVM_DIR=\"\$(brew --prefix nvm)\"; [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"$CR"
      NVM_DIR="$(brew --prefix nvm)"
      
      echo """$CR""Using nvm install node...$CR"
      echo "++ nvm install $NODE_VER_TO_INSTALL"
      nvm install $NODE_VER_TO_INSTALL
      NODE_BINARY_PATH="`find /usr/local/Cellar/nvm -name node -type d|head -n 1`/$NODE_VER_TO_INSTALL/bin"
      echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc) and then restart your shell:$CR$OFF"
      echo "export PATH=\$PATH:$NODE_BINARY_PATH:$HOME/.node/bin"
      
      echo """$CR""Upgrading npm...$CR"
      echo '++ install -g npm@latest'
      npm install -g npm@latest
      { set +x; } &>/dev/null
      echo "$REV""$CR""Insert following line in your $HOME/.npmrc file:$OFF"
      echo """$CR""prefix=$HOME/.node$CR"
      echo "Now, all is likley well if you can run the following without errors:  npm install -g grunt-cli$CR"
      echo "Other recommended global installs: bower, gulp, yo, node-inspector$CR"
      

      我写了一篇短文here,详细说明了为什么这是“正确的方式”。

      如果您需要安装 iojs,请使用 nvm 安装,如下所示:

      nvm install iojs-v1.7.1
      

      要安装 brew,只需查看其 home page

      其余的请参见 alexpods 答案。

      【讨论】:

      • 很高兴看到所有这些包管理器和版本管理器确实有助于删除自定义编写的脚本、hacks 和解决方法,以使 techstack xyz 正常工作。太棒了。
      • 为我工作,即使我从 npm 开始并且 brew 都坏了
      【解决方案8】:
      1. 使用homebrew 安装nvm

        brew update
        brew install nvm
        source $(brew --prefix nvm)/nvm.sh
        

        将最后一个命令添加到.profile.bashrc.zshrc 文件中,以便在每次终端启动时不再运行它。因此,例如将其添加到.profile 运行:

        echo "source $(brew --prefix nvm)/nvm.sh" >> ~/.profile
        

        如果您在使用brew 安装nvm 时遇到问题,您可以手动安装(参见here

      2. 使用nvm安装nodeiojs(你可以安装任何你想要的版本):

        nvm install 0.10
        # or
        nvm install iojs-1.2.0
        
      3. npm 附带node(或iojs),因此在安装node(或iojs)后可用。您可能需要将其升级到最新版本:

        $ npm install -g npm@latest
        

        UPD 以前的版本是 npm update -g npm。感谢@Metallica 指出正确的方法(请看下面的评论)。

      4. 使用npm安装ionic

        npm install -g ionic
        
      5. ngCordova 怎么样:您可以使用npmbower 安装它。我不知道哪种变体更适合您,这取决于您要用于客户端的包管理器。所以我会同时描述它们:

        1. 使用npm:转到您的项目文件夹并在其中安装ng-cordova

          npm install --save ng-cordova
          
        2. 使用bower:安装凉亭:

           npm install -g bower
          

          然后转到你的项目文件夹并在其中安装ngCordova

           bower install --save ngCordova
          

      附言

      1. 某些命令可能需要超级用户权限
      2. npm install some_module 的短变体是npm i some_module

      【讨论】:

      • 如果你更新 npm 本身,不要使用 npm update 命令。 更新 npm 的上游推荐方式是:npm install -g npm@latest(来自brew info node,和@ 987654322@)
      • 从当前的 brew nvm 安装中:“请注意,上游已要求我们通过 Homebrew 明确管理 nvm 不受他们的支持......” -> 所以正确的答案可能是不使用 brew对于 nvm/node.js/io.js.
      • 我收到错误消息“nvm 与 npm config“前缀”选项不兼容”。根据这个网站 (github.com/creationix/nvm/issues/855#issue-109279804) ,NVM 与 Homebrew 不兼容。我“brew卸载了nvm”并通过CURL命令安装了nvm,现在错误消息消失了。
      • 我通过 brew 使用了一段时间的 nvm,但也收到了“上游......显式......不受支持”的消息。 NVM 文档明确表示“不支持 Homebrew 安装。如果您对 homebrew 安装的 nvm 有问题,请在提交问题之前将其 brew 卸载,并使用以下说明安装它。”因此,这可能不再是公认的答案。我刚开始使用 n 有效。
      • 当前 NVM 版本 (v0.33.2) 不支持自制软件安装:请参阅:github.com/creationix/nvm/tree/v0.33.2#installation
      【解决方案9】:

      我同意 noa 的观点——如果您需要多个版本的 nodeio.js,那么 brew 不是合适的解决方案。

      您可以帮助在 nvm 中进行 beta 测试 io.js 支持:https://github.com/creationix/nvm/pull/616

      如果你只想要io.js而不是切换版本,那么你可以从https://iojs.org/dist/v1.0.2/iojs-v1.0.2-darwin-x64.tar.gz安装io.js的二进制发行版;其中包括npm,如果您不切换版本,则不需要nvm

      安装后记得更新npmsudo npm install -g npm@latest

      【讨论】:

        【解决方案10】:

        这是我的工作:

        curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
        cd / && . ~/.nvm/nvm.sh && nvm install 0.10.35
        . ~/.nvm/nvm.sh && nvm alias default 0.10.35
        

        这个没有自制软件。

        nvm 很快将支持 io.js,但在发帖时不支持:https://github.com/creationix/nvm/issues/590

        然后使用package.jsonnpm install 为每个项目安装其他所有内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-01-27
          • 1970-01-01
          • 1970-01-01
          • 2014-10-17
          • 2011-04-20
          • 1970-01-01
          • 2015-11-14
          相关资源
          最近更新 更多