使用发行版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:
- 注释$ HOME / .npmrc中的前缀行
- 运行
sudo npm install -g npm@1.4.10
- 确保安装了正确版本的npm(
npm --version
) - 取消$ HOME / .npmrc中的前缀行注释
- 继续将您的全局包安装到您的主文件夹中!
因为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上:
-
安装构build
nodejs
先决条件包:sudo apt-get update sudo apt-get install build-essential libssl-dev
-
安装nvm :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
如果新版本的nvm可用,您可以在nvm站点上find实际的安装命令。
-
nvm
安装程序会将引导脚本添加到~/.bashrc
,所以你需要重新打开terminal来运行它,或者执行:source ~/.bashrc
-
现在你可以安装你喜欢的任何
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