Comment installer Node.JS sur Amazon Linux

251

J'ai vu les explications sur l'utilisation de yum pour installer les dépendances, puis sur l'installation de Node.JS et NPM à partir de la source. Bien que cela fonctionne, je pense que Node.JS et NPM devraient tous deux être dans un dépôt public quelque part.

Comment puis-je installer Node.JS et NPM en une seule commande sur AWS Amazon Linux?

Tim Fulmer
la source

Réponses:

396

Je suis tombé dessus, étrangement difficile à retrouver plus tard. Mettre ici pour la postérité:

sudo yum install nodejs npm --enablerepo=epel

EDIT 3: Depuis juillet 2016, EDIT 1 ne fonctionne plus pour nodejs 4 (et EDIT 2 non plus). Cette réponse ( https://stackoverflow.com/a/35165401/78935 ) donne un vrai one-liner.

EDIT 1: Si vous recherchez nodejs 4, essayez le repo de test EPEL:

sudo yum install nodejs --enablerepo=epel-testing

EDIT 2: pour effectuer une mise à niveau de nodejs 0.12 installé via le référentiel EPEL à l'aide de la commande ci-dessus, vers nodejs 4 à partir du référentiel de test EPEL, veuillez suivre les étapes suivantes:

sudo yum rm nodejs
sudo rm -f /usr/local/bin/node
sudo yum install nodejs --enablerepo=epel-testing

Les packages plus récents placent les binaires du nœud au /usr/binlieu de /usr/local/bin.

Et quelques informations:

L'option --enablerepo=epelpermet yumde rechercher les packages dans le référentiel EPEL.

EPEL (Extra Packages for Enterprise Linux) est un projet de référentiel communautaire gratuit et open source de l'équipe Fedora qui fournit des packages logiciels 100% de haute qualité pour la distribution Linux, y compris RHEL (Red Hat Enterprise Linux), CentOS et Scientific Linux. Le projet Epel ne fait pas partie du système d'exploitation RHEL / Cent, mais il est conçu pour les principales distributions Linux en fournissant de nombreux packages open source tels que la mise en réseau, l'administration sys, la programmation, la surveillance, etc. La plupart des paquets epel sont maintenus par le repo de Fedora.

Via http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/

Tim Fulmer
la source
8
C'est certainement l'approche la plus rapide que j'ai vue, mais un avertissement peut être utile - le référentiel EPEL n'est pas synchronisé avec le nœud stable actuel, et vous ne pouvez pas utiliser "n" pour résoudre ce problème lorsqu'il est installé ce façon (au moins, pas sans une sorte de magie qui me dépasse). L'approche fastidieuse de git clone / make install est le seul moyen que j'ai trouvé pour assurer une installation cohérente et actuelle.
Point
22
J'ai obtenu le noeud 0.10.36 et npm 1.3.6 de cela. Celles-ci sont très dépassées.
voltrevo
4
@Semicolon vous pouvez contourner cela en installant uniquement npm, puis sudo npm install -g net sudo n v0.12ou toute autre version que vous aimez.
unboundev
4
n mettre à jour comme prévu, mais il ne met pas à jour le lien de noeud correctement. Vous devrez exécuter la commande supplémentaire:sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
Masadow
4
cette réponse n'a pas fonctionné car sudo yum install nodejs --enablerepo=epel-testingrenvoie l'erreur: "No package nodejs available." tout en sudo yum install nodejs --enablerepo=epelne donnant que des versions très anciennes ...
goredwards
224

Comme d'autres, la réponse acceptée m'a également donné une version obsolète.

Voici une autre façon de le faire qui fonctionne très bien:

$ curl --silent --location https://rpm.nodesource.com/setup_12.x | bash -
$ yum -y install nodejs

Vous pouvez également remplacer le 12.x par une autre version, telle que 10.x, 8.x, etc.

Vous pouvez voir toutes les versions disponibles sur la page NodeSource Github , et tirer à partir de là aussi si vous le souhaitez.

Remarque: vous devrez peut-être exécuter en sudofonction de votre environnement.

Matthew Herbst
la source
4
C'est ce que j'avais besoin d'utiliser sur AWS Elastic Beanstalk pour obtenir une version plus récente que celle déjà installée.
Jon Burgess
1
Works parfait alors que je dois courir npm installpour package.json,
Chetabahana
32
Je devais exécuter cela aveccurl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -
user465342
16
Si l'autorisation vous est refusée, vous devrez ajouter du sudo. curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -etsudo yum -y install nodejs
sampoh
1
si vous voulez installer Node.js 8.x, exécutezcurl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
Argun
64

La réponse acceptée m'a donné le noeud 0.10.36 et npm 1.3.6 qui sont très obsolètes. J'ai récupéré la dernière tarball linux-x64 sur la page de téléchargement de nodejs et ce n'était pas trop difficile à installer: https://nodejs.org/dist/latest/ .

# start in a directory where you like to install things for the current user
(For noobs : it downloads node package as node.tgz file in your directlry)
curl (paste the link to the one you want from the downloads page) >node.tgz

Maintenant, téléchargez le tar que vous venez de télécharger -

tar xzf node.tgz

Exécutez cette commande, puis ajoutez-la également à votre .bashrc:

export PATH="$PATH:(your install dir)/(node dir)/bin"

(exemple: export PATH = "$ PATH: /home/ec2-user/mydirectory/node/node4.5.0-linux-x64/bin")

Et mettre à jour npm(une seule fois, ne pas ajouter .bashrc):

npm install -g npm

Notez que -glà qui signifie global, signifie vraiment global à cette instance npm qui est l'instance que nous venons d'installer et est limitée à l'utilisateur actuel. Cela s'appliquera à tous les packages que npm installe «globalement».

voltrevo
la source
4
C'est en fait la meilleure réponse, car vous obtenez exactement la version que vous voulez
Mariusz
1
J'aimerais avoir d'abord lu cette réponse - cela devrait être la réponse acceptée car vous pouvez choisir la version que vous souhaitez installer. - merci @voltrevo
Mike W
2
@voltrevo merci pour la réponse. Oui, il existe d'autres façons d'installer le nœud sous Linux. La réponse acceptée est une ligne unique, qui se connecte au système de package YUM pour des mises à jour automatisées et gérées. Les packages dans les dépôts YUM ont tendance à être un peu plus anciens et sont également un peu mieux testés avec des déploiements plus larges. Personnellement, je recommande de laisser le plus récent et le meilleur aux environnements de développement local et d'utiliser quelque chose de plus comme la réponse acceptée pour les environnements de production. À votre santé!
Tim Fulmer du
pour les anciennes versions de centos, c'est la meilleure façon de procéder
user1336321
L'erreur après avoir exécuté le noeud -v est maintenant: 'ne peut pas exécuter le fichier binaire'. Des idées?
JosFabre
28

La procédure qui a fonctionné pour moi (en suivant ces instructions assez anciennes avec quelques mises à jour):

  • vérifiez que git est installé git --versionou installez-le via:
    sudo yum install git
  • installez gcc et openssl:
    sudo yum install gcc-c++ make
    sudo yum install openssl-devel
  • clonez le dépôt git dans un répertoire appelé node(que vous pourrez supprimer plus tard):
    git clone https://github.com/nodejs/node.git
  • décidez de la version du nœud que vous souhaitez sur https://github.com/nodejs/node/releases
  • allez dans le répertoire du nœud que vous venez de créer et installez le nœud
    cd node
    git checkout v6.1.0- mettez la version souhaitée après lav
    ./configure
    make
    sudo make install
  • tester que le nœud est installé / travailler avec node --versionou simplement node(quitter le nœud via process.exit()ou ^Cx 2 ou ^C+ exit)
  • vérifier la version npm: npm --versionet mettre à jour si nécessaire viasudo npm install -g npm
  • Facultatif: supprimez le noderépertoire avecrm -r node

Remarques:

  1. La réponse acceptée n'a pas fonctionné car sudo yum install nodejs --enablerepo=epel-testingrenvoie l'erreur: No package nodejs available.
    ... et sudo yum install nodejs --enablerepo=epel(c'est-à-dire sans -testing) n'a donné que des versions très anciennes.
  2. Si vous avez déjà une ancienne version de node installée, vous pouvez la supprimer avec:
    sudo npm uninstall npm -g ... puisque npm peut se désinstaller
    sudo yum erase nodejs
    sudo rm -f /usr/local/bin/node
    ( sudo yum rm nodejsdans la réponse acceptée ne fonctionnera pas car ce rmn'est pas une commande yum valide voir yum --help)
  3. Il est possible de cloner le référentiel de nœuds via git clone git://github.com/nodejs/node.gitplutôt que git clone https://github.com/nodejs/node.gitmais vous pouvez obtenir diverses erreurs (voir ici ).
  4. Si vous avez déjà un /noderépertoire d'une installation précédente, supprimez-le avant d'utiliser la commande git clone ( sinon il y aura un conflit):
    rm -r node
  5. Si vous rencontrez des problèmes avec des sudo npm...commandes de type commande sudo: npm: command not foundet / ou rencontrez des problèmes d'autorisations lors de l'installation de packages de nœuds sans sudo, modifiez sudo nano /etc/sudoerset ajoutez :/usr/local/binà la fin de la ligne Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/binpour qu'elle afficheDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
goredwards
la source
3
@Gio beaucoup d'autres réponses au choix si celle-ci ne vous plaît pas ;-) ... 'dans une seule commande' n'était pas la partie la plus importante de la question à mon humble avis.
goredwards
Ceci est très utile après avoir fait une erreur avec la réponse d'acceptation. Merci
Daron Tancharoen
@talentedandrew le etc/sudoersfichier contrôle qui peut exécuter quelles commandes comme quels utilisateurs sur quelles machines - mais qui n'exécutera / ne trouvera / ne recherchera que les commandes qui se trouvent dans les répertoires répertoriés sur son secure_pathnœud devraient être installées /usr/local/binet si c'est le cas, sudo devrait le trouver - voir stackoverflow .com / a / 31734090/3092596 Si sudo ne le trouve pas, alors ce chemin doit être ajouté à sudo's secure_path- voir aussi: superuser.com/a/927599/404543
goredwards
Je voudrais ajouter que vous devrez peut-être corriger vos liens symboliques après l'installation en utilisant cette méthode: sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s /usr/local/bin/npm /usr/bin/npm sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
BuffMcBigHuge
23

Installation simple avec NVM ...

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

Pour installer une certaine version (telle que 12.16.3) de Node, changez la dernière ligne en

nvm install 12.16.3

Pour plus d'informations sur l'utilisation de NVM, visitez les documents: https://github.com/nvm-sh/nvm

recherche floue
la source
1
Cela fonctionne totalement. Prend également moins de temps que la réponse @goredwards. Testé sur une AMI optimisée pour Amazon ECS.
Jayant Bhawal
3
La réponse acceptée et tous les EDIT 1-3 n'ont pas fonctionné pour moi, mais cela a fonctionné. Merci!
seantomburke
1
soigné et compact.
Stephen Tetreault
1
simple et génial
Abhinav
2
Ce devrait être la réponse. Il vaut mieux de loin, sauf si quelqu'un cherche à construire à partir de la source.
Kirkland
19

Pour la version v4 LTS, utilisez:

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs

Pour Node.js v6, utilisez:

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum -y install nodejs

J'ai également rencontré des problèmes lors de l'installation de modules complémentaires natifs sur Amazon Linux. Si vous voulez faire cela, vous devez également installer des outils de build:

yum install gcc-c++ make
Birnbaum
la source
Ceci est une réponse fantastique. Il ne me faut plus 20 minutes pour installer Node.
David Webber
si vous exécutez une application php avec une interface compilée npm sur un haricot élastique, vous pouvez l'utiliser. cela fait partie de mon fichier install.config qui l'a fait fonctionner - gist.github.com/marekjalovec/1ccee0c2254e65fc5d82eb35c7da82ae
Marek Jalovec
14

Je viens de rencontrer ça. J'ai essayé quelques-unes des réponses les plus populaires, mais au final, ce qui a fonctionné pour moi, c'est le guide de configuration rapide d'Amazon.

Tutoriel: Configuration de Node.js sur une instance Amazon EC2

L'essentiel du tutoriel est:

  1. Assurez-vous que vous êtes connecté à l'instance.
  2. Prenez NVM: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
  3. actif . ~/.nvm/nvm.sh
  4. Installez le nœud à l'aide de nvm nvm install 4.4.5(REMARQUE: vous pouvez choisir une version différente. Vérifiez d'abord les versions distantes en exécutant $ nvm ls-remote)
  5. Enfin, testez que vous avez correctement installé le nœud Nœud en exécutant $ node -e "console.log('Running Node.js' + process.version)"

Espérons que cela aide la prochaine personne.

troxwalt
la source
Vous voudrez peut-être expliquer le contenu de ce lien. Une bonne réponse utilise uniquement un lien comme référence, pas le sujet principal de la réponse.
BusyProgrammer
6

Il semble que personne ne le mentionne. Sur Amazon Linux 2 , la manière officielle de charger EPEL est:

  • sudo amazon-linux-extras install epel

... alors vous pouvez:

  • sudo yum install nodejs

     

Voir la bibliothèque des extras (Amazon Linux 2)

theaws.blog
la source
Eh bien, cela semble être la meilleure réponse!
Stretch
@Stretch Pas vraiment. Il installe le nœud 6. Trop ancien.
GabrielBB
5

J'avais installé Node.js 6.x et je voulais installer Node.js 8.x.

Voici les commandes que j'ai utilisées (tirées du site de Nodejs avec quelques étapes supplémentaires pour gérer les données en mémoire cache yum):

  1. sudo yum remove nodejs: Désinstaller Node.js 6.x (je ne sais pas si c'était nécessaire ou non)
  2. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  3. sudo yum clean all
  4. sudo yum makecache: Régénérer le cache de métadonnées (ce n'était pas dans la documentation, mais yum a continué d'essayer d'installer Node.jx 6.x, sans succès, jusqu'à ce que j'émette ces deux dernières commandes)
  5. sudo yum install nodejs: Installer Node.js 8.x
Brad W
la source
3

sudo yum install nodejs npm --enablerepo=epeltravaille pour Amazon Linux AMI. curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs fonctionne pour RedHat.

Xiao Peng - ZenUML.com
la source
2

La solution la plus simple est la suivante (faites-les en tant que root)

sudo su root
cd /etc
mkdir node
yum install wget
wget https://nodejs.org/dist/v9.0.0/node-v9.0.0-linux-x64.tar.gz
tar -xvf node-v9.0.0-linux-x64.tar.gz
cd node-v9.0.0-linux-x64/bin
./node -v
ln -s /etc/node-v9.0.0-linux-x64/bin/node node

entrez la description de l'image ici

grepit
la source
Merci, cela a aidé
arupjbasu
0

Comme mentionné dans la documentation officielle, simple ci-dessous 2 étapes -

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Vivek Chaturvedi
la source
0

Pour ceux qui souhaitent que la réponse acceptée soit exécutée dans Ansible sans autres recherches, je poste la tâche ici pour plus de commodité et de référence future.

Recommandation de réponse acceptée: https://stackoverflow.com/a/35165401/78935

Équivalent de tâche possible

tasks:
  - name: Setting up the NodeJS yum repository
    shell: curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    args:
      warn: no
  # ...
Andrei Cioara
la source
0

Vous pouvez mettre à jour / installer le nœud en réinstallant le package installé dans la version actuelle, ce qui peut nous éviter de nombreuses erreurs lors de la mise à jour.

Ceci est fait par nvm avec la commande ci-dessous. Ici, j'ai mis à jour ma version de nœud à 8 et réinstallé tous les packages disponibles en v8 aussi!

nvm i v8 --reinstall-packages-from=default

Il fonctionne également sur l'instance AWS Linux.

Soundharya AM
la source