Dlaczego poprawna nowa wersja Node.js nie zostanie zainstalowana na CentOS 7?

12

Uwaga: Zostało to częściowo rozwiązane, ale wymaga nieco więcej uwagi. Zobacz uwagi na dole OP i częściową odpowiedź @ Digisec.

Próbuję skonfigurować Node.js na CentOS 7, ale następujące polecenia nie instalują najnowszej wersji. Co muszę zmienić w poniższym kodzie, aby zainstalować najnowszą wersję Node.js na CentOS 7?

Zaczynam od wpisania node --versionwyniku v0.12.7. Jest to wyraźnie stara wersja, ponieważ nodejs.orgmówi, że v5.6.0jest to najnowsza stabilna wersja.

Więc wpisuję następujące polecenie, aby uzyskać najnowszą wersję node.js:

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

Terminal wypisuje, że powinienem wpisać następujące informacje, aby usunąć nieaktualną wersję node.js, więc wpisuję następujące:

yum remove -y nodejs npm

Terminal mówi również, aby wpisać następujące polecenie, aby zainstalować najnowszą wersję node.js, więc wpisuję następujące polecenie:

yum install -y nodejs

Ale potem piszę node --versionponownie, a terminal odpowiada v0.12.7ponownie, pokazując, że poprzednie polecenia po prostu ponownie zainstalowały starą przestarzałą wersję.

Co więc muszę zrobić, aby zainstalować najnowszą stabilną wersję node.js na komputerze CentOS 7?


WYDAJNE CZYNNOŚCI:


Zgodnie z sugestią @ Digisec ponownie uruchomiłem powyższe polecenia, ale tym razem zapisałem wszystkie dane wyjściowe w następującym tekście. Należy pamiętać, że sekwencja jest nieco inna teraz, gdy uruchamiam ją ponownie, ale wynik jest taki sam, jak poniżej:

[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]#   

Następnie, zgodnie z odpowiedzią @ Digisec , następnie wypróbowałem następujące, ale wynik nadal nie instaluje odpowiedniej wersji , jak widać z następującego wyjścia terminala:

[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]# 

Następnie odwiedziłem artykuł bazy wiedzy, do którego odnosi się powyższy dziennik błędów , ale stwierdziłem, że nie mogę uzyskać dostępu do pełnego artykułu, ponieważ nie jestem klientem Red Had.


CZĘŚCIOWE ROZWIĄZANIE:


@Digisec częściowo rozwiązał ten problem, pokazując, jak zainstalować nową wersję, ale nadal nie jesteśmy w stanie usunąć starej wersji, co spowoduje ryzyko wystąpienia konfliktów w przyszłości. Jakie kroki należy podjąć, aby usunąć starą wersję, aby nowa instalacja mogła być czysta i ukończona?

Znalazłem adres URL tar dla starej wersji v0.12.7 pod tym linkiem . I @Digisec 'również zasugerował przeczytanie tego innego linku, co sugeruje użycie poleceniamake uninstall . Mam wrażenie, że w terminalu może być tylko pięć lub dziesięć poleceń do usunięcia starego v0.12.7 i ponownego zainstalowania nowej wersji nodejs. Jakie są wymagane polecenia?

Wydaje mi się, że znalazłem trzy pliki tar na komputerze CentOS 7, które są powiązane z nodejs v0.12.7 przy użyciu następujących poleceń terminala:

[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 /]# 

Zauważ, że zaznaczono dodatkowe trzy pliki tar, z node_modulesktórymi związek v0.12.7nie jest jasny.

Jakie konkretne polecenia należy uruchomić, aby bezpiecznie odinstalować v0.12.7i usunąć wszystkie v0.12.7powiązane pliki tar z komputera?

CodeMed
źródło
Dobrym pomysłem byłoby opublikowanie również wszystkich danych wyjściowych. Pomoże to zobaczyć, co się dzieje, aby móc ci lepiej pomóc.
Digisec
@Digisec Ponownie uruchomiłem polecenia, a następnie dodałem pełne dane wyjściowe do OP, zgodnie z żądaniem. Czy mogę zrobić coś innego, aby pomóc w rozwiązaniu problemu?
CodeMed
FWIW możesz teraz odinstalować starą wersję NodeJS za pomocą yum remove -y nodejs.
avazula

Odpowiedzi:

7

Właśnie sprawdziłem link, z którego to otrzymałeś. Instalujesz, w szczególności wersję 0.10lub przynajmniej próbujesz, ale masz nowszą wersję w instalowanym repozytorium. Musisz postępować zgodnie z konfiguracją dla węzła v5.

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

PS : na przyszłość, pamiętaj, aby bardzo uważnie czytać strony, szczególnie podczas uruchamiania poleceń jako root .

EDYCJA: Dobra, wygląda na to, że poprawnie dodałeś repozytorium . Patrząc na repozytorium, twoje pakiety już tam są, ale system szuka niewłaściwej wersji. W tym miejscu sugerowałbym.

yum clean all && yum update

Spowoduje to wyczyszczenie repozytorium w pamięci podręcznej i pobranie ze zdalnego.

Odpowiedź: Po pracy, którą wykonaliśmy chat, oto poprawna odpowiedź dla Ciebie. nodejs v5zainstalowany dobrze. Wcześniej skompilowałeś nodejs v0.12ręcznie, co nie jest dobrym pomysłem na dystrybucjach binarnych, ponieważ skończysz w tej pozycji.

which node

zwrócony

/usr/local/bin/node

podczas

/usr/bin/node

zwrócił poprawną odpowiedź v5.x.

W tym momencie masz wiele opcji, aby to naprawić, ale polecam 2.

  • Opcja 1 : To jest łatwe wyjście. Możesz edytować swój .bashrci dodać aliaswskazujący node -> /usr/bin/node. Jest to tak proste, jak dodawanie alias node="/usr/bin/node". Spowoduje to wywołanie poprawnej wersji za każdym razem, ale nie mogę zagwarantować, że nie spowoduje konfliktów w przyszłości z bibliotekami.
  • Opcja 2 : To trudna droga, ale to naprawi. Najpierw yumwyczyść za pomocą nodejs zainstalowanych w systemie. Po drugie, pobierz plik tar dla skompilowanej wersji, rozpakuj go ./configurei odinstaluj. W tym kroku możesz łatwo znaleźć online . Wreszcie, należy ponownie zainstalować nodejsza pośrednictwem yum, i że powinno rozwiązać problem.
Digisec
źródło
Dziękujemy za przyjrzenie się temu, ale wciąż nie rozwiązuje to w pełni problemu. Proszę zobaczyć dodatkowe wyjście terminala, które dodałem na końcu PO dokumentujące wyniki wypróbowania twojej sugestii. Co jeszcze mogę spróbować?
CodeMed
@CodeMed Zaktualizowałem odpowiedź i lepiej byłoby wejść na czat.
Digisec
To nie rozwiązało problemu. Jeśli nadal chcesz rozmawiać, utworzyłem następujący pokój: chat.stackexchange.com/rooms/35670/...
CodeMed
@CodeMed powodzenia w rozwiązaniu problemu.
Digisec
Czy chcesz rozwinąć swoją opcję 2? Czy powinienem zadać osobne pytanie?
CodeMed
4

Co ja zrobiłem:

rm -f /etc/yum.repos.d/nodesource-el*
curl -sL https://rpm.nodesource.com/setup_7.x | bash -
mniam zainstaluj -y nodejs
węzeł - wersja

i mam:

wersja 7.2.0
Sergio
źródło
Dziękuję Ci! To było jedyne rozwiązanie, które mi pomogło.
626
1

Próbowałem zainstalować węzeł z tego samego NodeSource RepoInstaller . Dla mnie problem rozwiązany przez włączone nodesourcerepo. Zmień enabled=0na enabled=1i wszystko powinno działać.

[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
źródło
0

Miałem również problemy z zainstalowaniem nowych wersji npm i nodejs na CentOS 7.

Postępowałem zgodnie z instrukcjami na stronie nodejs, a następnie próbowałem zainstalować npm. To okazało się problemem (npm instalował się z EPEL). Repozytorium Nodesource nie zapewnia indywidualnych pakietów dla npm, jak ma to miejsce w przypadku EPEL. Zamiast tego wszystko jest w jednym pakiecie „nodejs”. Więc kiedy zainstalujesz nodejs z Nodesource, teraz automatycznie zainstalowałeś npm i jesteś gotowy do aktualizacji.

Ben
źródło
0

Walczyłem z tym samym problemem, ani yum clean allnie rm -f /etc/yum.repos.d/nodesource*pomagałem. Potem odkryłem, że yum użył repozytorium Epel do zainstalowania węzła, więc tymczasowo go wyłączyłem (w /etc/yum.repos.d/epel.repozestawie enabled=0), a potem

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install nodejs
Atti
źródło
0

Zetknąłem się również z tym samym problemem.

Rozwiązanie: 1. Przejdź do /tmplokalizacji, usuń wszystkie pliki i foldery.

cd /tmp
rm -rf *

2. teraz możesz użyć poniższych poleceń, aby zainstalować NodeJs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
sudo yum install -y nodejs
Lokesh Kumar Bandi
źródło