Pourquoi la nouvelle version correcte de Node.js ne s'installe-t-elle pas sur CentOS 7?

12

Remarque: Ceci est partiellement résolu, mais nécessite un peu plus d'attention. Voir les notes en bas de l'OP et la réponse partielle de @ Digisec.

J'essaie de configurer Node.js sur CentOS 7, mais les commandes suivantes ne parviennent pas à installer la dernière version. Que dois-je changer dans le code ci-dessous pour installer la dernière version de Node.js sur CentOS 7?

Je commence par taper node --versionce qui donne v0.12.7. Ceci est clairement une ancienne version car nodejs.orgdit que v5.6.0est la dernière version stable.

Alors je tape ce qui suit pour obtenir la dernière version de node.js:

cd /tmp
curl -sL https://rpm.nodesource.com/setup | bash -

Le terminal affiche que je dois taper ce qui suit pour supprimer la version obsolète de node.js, donc je tape ce qui suit:

yum remove -y nodejs npm

Le terminal indique également de taper ce qui suit pour installer la dernière version de node.js, donc je tape ce qui suit:

yum install -y nodejs

Mais je tape à node --versionnouveau et le terminal répond à v0.12.7nouveau, montrant que les commandes précédentes ont simplement réinstallé l'ancienne version obsolète.

Alors, que dois-je faire pour obtenir la dernière version stable de node.js installée sur la machine CentOS 7?


EFFORTS EN COURS:


Selon la suggestion de @ Digisec, j'ai réexécuté les commandes ci-dessus, mais cette fois, j'ai enregistré toutes les sorties dans le texte suivant. Veuillez noter que la séquence est légèrement différente maintenant que je l'exécute à nouveau, mais le résultat est le même, comme suit:

[root@localhost ~]# node --version
v0.12.7
[root@localhost ~]# cd /tmp
[root@localhost tmp]# curl -sL https://rpm.nodesource.com/setup | bash -

## Installing the NodeSource Node.js 0.10 repo...


## Inspecting system...

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m

## Confirming "el7-x86_64" is supported...

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_0.10/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Downloading release setup RPM...

+ mktemp
+ curl -sL -o '/tmp/tmp.ePYEdVWXQH' 'https://rpm.nodesource.com/pub_0.10/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Installing release setup RPM...

+ rpm -i --nosignature --force '/tmp/tmp.ePYEdVWXQH'

## Cleaning up...

+ rm -f '/tmp/tmp.ePYEdVWXQH'

## Checking for existing installations...

+ rpm -qa 'node|npm' | grep -v nodesource

## Run `yum install -y nodejs` (as root) to install Node.js 0.10 and npm.
## You may also need development tools to build native addons:
##   `yum install -y gcc-c++ make`

[root@localhost tmp]# yum remove -y nodejs npm
Loaded plugins: fastestmirror, langpacks
No Match for argument: npm
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                     Repository                                Size
====================================================================================================================================================================================
Removing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                              @nodesource                               16 M

Transaction Summary
====================================================================================================================================================================================
Remove  1 Package

Installed size: 16 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 

Removed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm                                                                                                             | 4.5 MB  00:00:09     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 

Installed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# node --version
v0.12.7
[root@localhost tmp]#   

Ensuite, selon la réponse de @ Digisec , j'ai ensuite essayé ce qui suit, mais le résultat ne parvient toujours pas à installer la bonne version , comme vous pouvez le voir sur la sortie du terminal suivante:

[root@localhost tmp]# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

## Installing the NodeSource Node.js 5.x repo...


## Inspecting system...

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m

## Confirming "el7-x86_64" is supported...

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Downloading release setup RPM...

+ mktemp
+ curl -sL -o '/tmp/tmp.NEM1bxM9WB' 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Installing release setup RPM...

+ rpm -i --nosignature --force '/tmp/tmp.NEM1bxM9WB'

## Cleaning up...

+ rm -f '/tmp/tmp.NEM1bxM9WB'

## Checking for existing installations...

+ rpm -qa 'node|npm' | grep -v nodesource

## Run `yum install -y nodejs` (as root) to install Node.js 5.x and npm.
## You may also need development tools to build native addons:
##   `yum install -y gcc-c++ make`

[root@localhost tmp]# yum remove -y nodejs npm
Loaded plugins: fastestmirror, langpacks
No Match for argument: npm
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                     Repository                                Size
====================================================================================================================================================================================
Removing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                              @nodesource                               16 M

Transaction Summary
====================================================================================================================================================================================
Remove  1 Package

Installed size: 16 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                             1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                             1/1 

Removed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
nodejs-0.10.42-1nodesource.el7 FAILED                                          
https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found           ]  0.0 B/s |    0 B  --:--:-- ETA 
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/



Error downloading packages:
  nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.

[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
No Presto metadata available for nodesource  
nodejs-0.10.42-1nodesource.el7 FAILED    
https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found           ]  0.0 B/s |    0 B  --:--:-- ETA 
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/



Error downloading packages:
  nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.

[root@localhost tmp]# node --version
v0.12.7
[root@localhost tmp]# 

J'ai ensuite visité l'article de la base de connaissances référencé par le journal des erreurs ci - dessus , mais j'ai constaté que je ne pouvais pas accéder à l'article complet car je ne suis pas un client de Red Had.


SOLUTION PARTIELLE:


@Digisec a partiellement résolu ce problème en montrant comment installer la nouvelle version, mais nous ne sommes toujours pas en mesure de supprimer l'ancienne version, ce qui laissera le risque de conflits à l'avenir. Quelles mesures doivent être prises pour supprimer l'ancienne version afin que la nouvelle installation puisse être propre et complète?

J'ai trouvé l'URL tar pour l'ancienne version v0.12.7 sur ce lien . Et @Digisec 'a également suggéré de lire cet autre lien, qui suggère d'utiliser la commandemake uninstall . J'ai l'impression qu'il ne peut y avoir que cinq ou dix commandes à taper dans le terminal pour supprimer l'ancienne v0.12.7 et réinstaller la nouvelle version de nodejs. Quelles sont les commandes requises?

Il me semble avoir trouvé trois fichiers tar sur la machine CentOS 7 qui sont liés à nodejs v0.12.7 à l'aide des commandes de terminal suivantes:

[root@localhost ~]# cd /
[root@localhost /]# find . -type f -iname "*.tar"
find: ‘./run/user/1000/gvfs’: Permission denied
./opt/node-v0.12.7/deps/npm/node_modules/tar/test/dir-normalization.tar
./opt/node-v0.12.7/deps/npm/test/fixtures/gitignore-and-npmignore-2.tar
./opt/node-v0.12.7/deps/npm/test/fixtures/gitignore-and-npmignore.tar
./usr/local/lib/node_modules/npm/test/fixtures/gitignore-and-npmignore-2.tar
./usr/local/lib/node_modules/npm/test/fixtures/gitignore-and-npmignore.tar
./usr/local/lib/node_modules/npm/node_modules/tar/test/dir-normalization.tar
[root@localhost /]# 

Notez qu'il existe trois autres fichiers tar marqués node_modulesdont la relation avec v0.12.7n'est pas claire.

Quelles commandes spécifiques dois-je exécuter pour désinstaller v0.12.7et supprimer en toute sécurité tous les v0.12.7fichiers tar associés de la machine?

CodeMed
la source
Ce serait une bonne idée de publier également toutes les sorties. Cela aiderait à voir ce qui se passe pour pouvoir mieux vous aider.
Digisec
@Digisec J'ai réexécuté les commandes, puis ajouté la sortie complète à l'OP, comme vous l'avez demandé. Puis-je faire autre chose pour isoler le problème?
CodeMed
FWIW, vous pouvez maintenant désinstaller l'ancienne version de NodeJS avec yum remove -y nodejs.
avazula

Réponses:

7

Je viens de vérifier le lien que vous avez obtenu. Vous installez, en particulier, la version 0.10, ou essayez au moins, mais vous avez une version plus récente dans le référentiel en cours d'installation. Vous devez suivre la configuration du nœud v5.

curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

PS : pour référence future, assurez-vous de lire très attentivement les sites, en particulier lorsque vous exécutez des commandes en tant que root .

EDIT: D' accord, il semble que vous ayez correctement ajouté le repo . En regardant dans le repo, vos packages sont là mais le système recherche la mauvaise version. À ce stade, je dirais.

yum clean all && yum update

Cela nettoiera le dépôt mis en cache et le récupérera à distance.

Réponse: Après le travail que nous avons effectué sur le chat, voici la bonne réponse pour vous. nodejs v5bien installé. Vous avez précédemment compilé nodejs v0.12manuellement, ce qui n'est pas une bonne idée sur les distributions binaires, car vous vous retrouverez dans cette position.

which node

revenu

/usr/local/bin/node

tandis que

/usr/bin/node

a renvoyé la bonne réponse de v5.x.

À ce stade, vous avez plusieurs options pour le corriger, mais je recommanderais 2.

  • Option 1 : c'est la solution de facilité. Vous pouvez modifier votre .bashrcet ajouter un aliasqui pointera node -> /usr/bin/node. C'est aussi simple que d'ajouter alias node="/usr/bin/node". Cela appellera la bonne version à chaque fois mais je ne peux pas garantir qu'elle ne causera pas de conflits à l'avenir avec les bibliothèques.
  • Option 2 : C'est la manière la plus difficile, mais elle le résoudra. Tout d'abord, purgez avec yumles nodejs installés sur le système. Ensuite, récupérez l'archive tar de la version que vous avez compilée, décompressez-la ./configureet désinstallez-la. Cette étape, vous pouvez trouver en ligne facilement. Enfin, réinstallent à nodejstravers yum, et qui devrait résoudre votre problème.
Digisec
la source
Merci d'avoir étudié cela, mais cela ne résout toujours pas complètement le problème. Veuillez consulter la sortie de terminal supplémentaire que j'ai ajoutée à la fin de l'OP documentant les résultats de votre suggestion. Que puis-je essayer d'autre?
CodeMed
@CodeMed J'ai mis à jour la réponse et ce serait une meilleure idée d'entrer dans le chat.
Digisec
Cela n'a pas résolu le problème. Si vous êtes toujours prêt à discuter, j'ai créé la salle suivante: chat.stackexchange.com/rooms/35670/…
CodeMed
@CodeMed bonne chance pour résoudre votre problème.
Digisec
Êtes-vous prêt à développer votre option 2? Ou devrais-je poster une question distincte?
CodeMed
4

Ce que j'ai fait:

rm -f /etc/yum.repos.d/nodesource-el*
curl -sL https://rpm.nodesource.com/setup_7.x | bash -
yum install -y nodejs
node --version

et j'ai eu:

v7.2.0
Sergio
la source
Je vous remercie! C'était la seule solution qui m'a aidé.
626
1

J'ai essayé d'installer le nœud à partir du même NodeSource RepoInstaller . Pour mon problème de chemin résolu par le nodesourcerepo activé . Changement enabled=0à enabled=1et tous les travaux devraient.

[root@web ~]# cat /etc/yum.repos.d/nodesource-el.repo
[nodesource]
name=Node.js Packages for Enterprise Linux 7 - $basearch
baseurl=https://rpm.nodesource.com/pub_6.x/el/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
BioQwer
la source
0

J'avais également des problèmes pour installer les nouvelles versions de npm et de nodejs sur CentOS 7.

J'ai suivi les instructions sur le site nodejs puis j'ai essayé d'installer npm. Cela s'est avéré être le problème (npm installait depuis EPEL). Le référentiel Nodesource ne fournit pas de packages individuels pour npm comme c'est le cas pour EPEL. Au lieu de cela, tout se trouve dans un seul paquet «nodejs». Ainsi, une fois que vous avez installé nodejs à partir de Nodesource, vous avez maintenant installé automatiquement npm et êtes prêt à passer à la version mise à jour.

Ben
la source
0

Je luttais avec le même problème, ni yum clean allne rm -f /etc/yum.repos.d/nodesource*aidais. Ensuite, j'ai trouvé que yum utilisait le référentiel Epel pour installer le nœud, donc je l'ai désactivé temporairement (dans l' /etc/yum.repos.d/epel.repoensemble enabled=0) et après cela

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install nodejs
Atti
la source
0

J'ai également rencontré le même problème.

Solution: 1. Allez à l' /tmpemplacement pour supprimer tous les fichiers et dossiers.

cd /tmp
rm -rf *

2. vous pouvez maintenant utiliser les commandes ci-dessous pour installer NodeJs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
sudo yum install -y nodejs
Lokesh Kumar Bandi
la source