Je voudrais utiliser les paquets de dissortingbution Node.js (ou le chris-lea ppa pour les versions plus récentes) mais installer NPM sur mon répertoire personnel.
Cela peut sembler difficile, mais c’est une manière assez idiomatique pour les développeurs utilisant des fichiers polyglottes / github de configurer des environnements d’exécution / bibliothèque de langue sous Linux: paquets de dissortingbution pour l’environnement d’exécution, bibliothèques tierces construira également Ruby pour vous si vous le souhaitez). Si nécessaire, je construirai un nœud localement, mais c’est un PITA, car Node devient un besoin de développement accessoire pour de nombreux projets.
Le second lien semble fonctionner avec les paquets de dissortingbution de nodejs, mais il semble assez sommaire.
Mettre à jour cette pâte résume le deuxième lien ci-dessus, mais ne fonctionne pas pour moi (il semble que npm ignore ~ / .npmrc, au moins pendant l’installation).
NPM installera déjà les packages locaux dans vos projets, mais j’aime toujours garder le système à l’écart des fichiers de mon système d’exploitation. Voici comment je propose de compartimenter les packages Nodejs:
Installez Nodejs et NPM via le PPA chris-lea. Ensuite, j’ai configuré une racine de package dans mon répertoire principal pour contenir les packages “globaux” du noeud:
$ NPM_PACKAGES="$HOME/.npm-packages" $ mkdir -p "$NPM_PACKAGES"
Définissez NPM pour utiliser ce répertoire pour ses installations de paquetages globales:
$ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc
Configurez votre PATH et MANPATH pour voir les commandes de votre préfixe $ NPM_PACKAGES en ajoutant ce qui suit à votre fichier .zshrc / .bashrc:
# 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"
Maintenant, lorsque vous effectuez une npm install -g
, NPM installe les bibliothèques dans ~/.npm-packages/lib/node_modules
et lie les outils exécutables dans ~/.npm-packages/bin
, qui se trouve dans votre PATH
.
Utilisez simplement npm install -g
comme vous le feriez normalement:
[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
La réponse de Jake a été publiée en 2012 et, bien qu’utile, elle fait référence aux PPA de Node.js de Chris Lea qui ne sont plus mis à jour depuis mars 2015.
Voici les étapes à suivre pour installer Node.js et npm dans mon répertoire personnel:
sudo
requirejs): 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
Maintenant, vous pouvez install -g
sans sudo
et tout va dans ~/.nvm/
Node.js v6 (LTS actuelle à partir de mai 2017):
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
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
Vous pouvez également remplacer .npm-global
par le répertoire de votre choix.
$HOME
: $ npm install npm -g /home//.npm-global/bin/npm -> /home/ /.npm-global/lib/node_modules/npm/bin/npm-cli.js /home/ /.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
Vous pouvez maintenant install -g
sans sudo
et sans perturber vos fichiers système.
La solution proposée par Just Jake est excellente. Cependant, à cause d’un bogue avec npm> 1.4.10, il se peut qu’il ne fonctionne pas comme prévu. (Voir ceci et ceci )
Bien que le bogue soit résolu, vous pouvez revenir à la version 1.4.10 de npm en procédant comme suit:
sudo npm install -g npm@1.4.10
npm --version
) Comme python fait déjà un excellent travail virtualenv
, j’utilise nodeenv
. Par rapport à nvm
, vous pouvez créer plusieurs environnements pour la même version de nœud (par exemple, deux environnements pour le nœud 0.10
mais avec différents ensembles de packages).
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
Le readme est très bon: https://github.com/ekalinin/nodeenv
J’ai utilisé la solution @ just-jake pendant un certain temps et j’ai constaté que nvm était plus facile à configurer. C’est aussi une solution très puissante qui permet d’installer et d’utiliser différentes versions de nodejs
.
Sur Ubuntu 14.04 ou 16.04:
Installez les packages prérequirejs pour construire nodejs
:
sudo apt-get update sudo apt-get install build-essential libssl-dev
Installez nvm :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
Si une version plus récente de nvm est disponible, vous pouvez trouver la commande d’installation réelle sur le site nvm .
nvm
installateur nvm
appenda un script bootstrap à ~/.bashrc
, vous devrez donc soit rouvrir le terminal pour l’exécuter, soit faire:
source ~/.bashrc
Maintenant, vous pouvez installer la version de nodejs
vous aimez, basculer entre eux, etc.
Utilisez nvm ls-remote
pour répertorier les versions de nodejs
disponibles.
Pour installer, par exemple, nodejs
v4.2.4 faire:
# 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
Pour développer la réponse fournie par Just Jake et user1533401: Je ne parviens pas à rétrograder car j’utilise l’hébergement partagé et que node est installé dans un répertoire système. C’est aussi pour cette raison que j’ai modifié le répertoire où npm installe les scripts globaux si je le souhaite. Pour ceux qui se trouvent dans le même bateau, voici une autre solution temporaire que j’ai trouvée:
npm install -g --prefix=$(npm config get prefix)
Le bogue est que npm ne lit pas votre fichier de configuration par utilisateur, mais le spécifier chaque fois que vous installez un script global résout ce problème. Trouvé ici .
Comme déjà dit ici et ici
npm config set prefix ~ echo export PATH=\$PATH:\~/bin >> ~/.bashrc . ~/.bashrc