使用发行版nodejs包(Ubuntu)将NPM安装到主目录中

我想使用分发Node.js包(或更多最新版本的chris-lea ppa ),但将NPM安装到我的主目录。

这可能看起来很挑剔,但是对于使用polyglot / github的开发人员来说,在Linux下设置语言运行时/库环境是非常习惯的方式:运行时的distro包,每个用户环境中的第三方库(参见virtualenv,RVM – RVM如果你愿意,也会为你build立Ruby)。 如果有必要,我将在本地构build节点,但是它是一个PITA,因为Node正在成为大量项目的附带开发需求。

  • 有关将node + npm安装到主目录的说明
  • 另一种安装node + npm到家的方法

第二个链接似乎可能与分发nodejs包,但似乎很粗略。

更新 这个粘贴总结上面的第二个链接,但对我来说不起作用(至less在安装过程中,npm忽略〜/ .npmrc)。

NPM将已经将本地软件包安装到您的项目中,但是我仍然希望将系统远离操作系统的文件。 以下是我build议如何划分Nodejs包的方法:

通过chris-lea PPA安装Nodejs和NPM。 然后,我在我的homedir中设置一个软件包根目录来保存节点“全局”包:

$ NPM_PACKAGES="$HOME/.npm-packages" $ mkdir -p "$NPM_PACKAGES" 

将NPM设置为使用此目录进行全局程序包安装:

  $ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc 

通过将以下内容添加到.zshrc / .bashrc中,configurationPATH和MANPATH以查看$ NPM_PACKAGES前缀中的命令:

 # NPM packages in homedir NPM_PACKAGES="$HOME/.npm-packages" # Tell our environment about user-installed node tools PATH="$NPM_PACKAGES/bin:$PATH" # Unset manpath so we can inherit from /etc/manpath via the `manpath` command unset MANPATH # delete if you already modified MANPATH elsewhere in your configuration MANPATH="$NPM_PACKAGES/share/man:$(manpath)" # Tell Node about these packages NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" 

现在,当您执行npm install -g ,NPM会将这些库安装到~/.npm-packages/lib/node_modules ,并将可执行工具链接到PATH ~/.npm-packages/bin中。

正如你一样使用npm install -g

 [justjake@marathon:~] $ npm install -g coffee-script ... (npm downloads stuff) ... /home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee /home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake coffee-script@1.3.3 /home/justjake/.npm-packages/lib/node_modules/coffee-script [justjake@marathon:~] $ which coffee /home/justjake/.npm-packages/bin/coffee 

杰克的答案是在2012年发布的,虽然很有用,但它引用了自2015年3月以来不再更新的Chris Lea的Node.js PPA。

下面是我用来在我的主目录中安装Node.js和npm的步骤:

用nvm安装Node.js(不需要sudo ):

 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash source ~/.bashrc nvm install 7 npm install -g npm # update npm 

现在你可以install -g没有sudo ,一切都进入~/.nvm/

或者在没有nvm的情况下安装Node.js( 官方说明 ):

安装Node.js

  • Node.js v6(截至2017年5月的当前LTS):

     curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs 
  • Node.js v7:

     curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - sudo apt-get install -y nodejs 

将npm的默认目录更改为本地目录:

 mkdir ~/.npm-global npm config set prefix '~/.npm-global' export PATH="$HOME/.npm-global/bin:$PATH" # ← put this line in .bashrc source ~/.bashrc # if you only updated .bashrc 

或者用你select的目录replace.npm-global

更新npm并检查它是否安装在您的$HOME目录中:

 $ npm install npm -g /home/<username>/.npm-global/bin/npm -> /home/<username>/.npm-global/lib/node_modules/npm/bin/npm-cli.js /home/<username>/.npm-global/lib └─┬ npm@3.10.6 ├─┬ glob@7.0.5 │ └── minimatch@3.0.2 ├── npm-user-validate@0.1.5 └── rimraf@2.5.3 

现在你可以install -g而不用sudo ,也不用搞乱你的系统文件。

Just Jake发布的解决scheme非常棒。 但是,由于npm> 1.4.10的错误,它可能无法正常工作。 (看到这个和这个 )

当错误被解决时,你可以通过以下步骤降级到npm 1.4.10:

  1. 注释$ HOME / .npmrc中的前缀行
  2. 运行sudo npm install -g npm@1.4.10
  3. 确保安装了正确版本的npm( npm --version
  4. 取消$ HOME / .npmrc中的前缀行注释
  5. 继续将您的全局包安装到您的主文件夹中!

因为Python已经是一个伟大的工作virtualenv ,我使用nodeenv 。 与nvm相比,您可以为相同的节点版本创build多个环境(例如两个环境节点为0.10但包含不同的套装)。

 ENVNAME=dev1 # create an environment python -m virtualenv ${ENVNAME} # switch to the newly created env source ${ENVNAME}/bin/activate # install nodeenv pip install nodeenv # install system's node into virtualenv nodeenv --node=system --python-virtualenv 

自述文件相当不错: https : //github.com/ekalinin/nodeenv

我用@ just-jake 解决了一段时间,发现nvm更容易设置。 此外,它是强大的解决scheme,允许安装和使用不同版本的nodejs

在Ubuntu 14.04或16.04上:

  1. 安装构buildnodejs先决条件包:

     sudo apt-get update sudo apt-get install build-essential libssl-dev 
  2. 安装nvm :

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

    如果新版本的nvm可用,您可以在nvm站点上find实际的安装命令。

  3. nvm安装程序会将引导脚本添加到~/.bashrc ,所以你需要重新打开terminal来运行它,或者执行:

     source ~/.bashrc 
  4. 现在你可以安装你喜欢的任何nodejs版本,在它们之间切换等等。

    使用nvm ls-remote列出可用的nodejs版本。

    例如,要安装nodejs v4.2.4,请nodejs以下操作:

     # install v4.2.4 nvm install v4.2.4 # use nodejs v4.2.4 in the current terminal session nvm use v4.2.4 # use v4.2.4 by default in new terminal session nvm alias default v4.2.4 

要扩大Just Jake和user1533401提供的答案:我无法降级,因为我使用共享主机,并且节点安装在系统目录中。 这也是为什么我要改变npm安装全局脚本的目录,如果我想要的话。 对于那些在同一条船,这里是另一个临时修复我find的作品:

npm install -g --prefix=$(npm config get prefix) <package>

错误在于npm不会读取您的每个用户的configuration文件,而是在您每次安装全局脚本时指定它。 在这里find。

正如这里和这里所述

 npm config set prefix ~ echo export PATH=\$PATH:\~/bin >> ~/.bashrc . ~/.bashrc