Poznámka:Toto je částečně vyřešeno, ale vyžaduje trochu více pozornosti. Viz poznámky v dolní části OP a částečná odpověď @Digisec.
Snažím se nastavit Node.js na CentOS 7, ale následujícím příkazům se nedaří nainstalovat nejnovější verzi. Co musím změnit v kódu níže, abych mohl nainstalovat nejnovější verzi Node.js na CentOS 7?
Začnu zadáním node --version
výsledkem je v0.12.7
. Toto je zjevně stará verze, protože nodejs.org
říká, že v5.6.0
je nejnovější stabilní verze.
Takže potom zadám následující, abych získal nejnovější verzi node.js:
cd /tmp
curl -sL https://rpm.nodesource.com/setup | bash -
Terminál vypíše, že bych měl napsat následující, abych odstranil zastaralou verzi node.js, takže napíšu následující:
yum remove -y nodejs npm
Terminál také říká, že je třeba zadat následující pro instalaci nejnovější verze node.js, takže napíšu následující:
yum install -y nodejs
Ale pak napíšu node --version
znovu a terminál odpoví v0.12.7
opět ukazuje, že předchozí příkazy jednoduše znovu nainstalovaly starou zastaralou verzi.
Co tedy musím udělat, abych si na počítači CentOS 7 nainstaloval nejnovější stabilní verzi node.js?
PŘEBĚŽNÉ ÚSILÍ:
Podle návrhu @Digisec jsem znovu spustil výše uvedené příkazy, ale tentokrát zaznamenal veškerý výstup do následujícího textu. Vezměte prosím na vědomí, že sekvence je nyní mírně odlišná, když ji znovu spouštím, ale výsledek je stejný, a to následovně:
[[email protected] ~]# node --version
v0.12.7
[[email protected] ~]# cd /tmp
[[email protected] 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`
[[email protected] 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!
[[email protected] 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!
[[email protected] tmp]# node --version
v0.12.7
[[email protected] tmp]#
Potom podle odpovědi @Digisec , dále jsem zkusil následující, ale výsledek se stále nedaří nainstalovat správnou verzi , jak můžete vidět z následujícího výstupu terminálu:
[[email protected] 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`
[[email protected] 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!
[[email protected] 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.
[[email protected] 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.
[[email protected] tmp]# node --version
v0.12.7
[[email protected] tmp]#
Poté jsem navštívil článek znalostní báze, na který odkazuje výše uvedený protokol chyb, ale zjistil jsem, že nemám přístup k celému článku, protože nejsem zákazníkem Red Had.
Související:Linux – standardní a/nebo běžné adresáře na operačních systémech Unix/Linux?ČÁSTEČNÉ ŘEŠENÍ:
@Digisec to částečně vyřešil tím, že ukázal, jak nainstalovat novou verzi, ale stále nejsme schopni odstranit starou verzi, což zanechá riziko budoucích konfliktů. Jaké kroky je třeba provést k odstranění staré verze, aby nová instalace mohla být čistá a úplná?
Na tomto odkazu jsem našel tar url pro starou verzi v0.12.7. A @Digisec‘ také navrhl přečíst si tento další odkaz, který navrhuje použít příkaz make uninstall
. Mám pocit, že k odstranění staré verze 0.12.7 a opětovné instalaci nové verze nodejs může být k zadání pouze pět nebo deset příkazů v terminálu. Jaké jsou požadované příkazy?
Zdá se, že jsem na počítači CentOS 7 našel tři soubory tar, které souvisejí s nodejs v0.12.7 pomocí následujících příkazů terminálu:
[[email protected] ~]# cd /
[r[email protected] /]# 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
[[email protected] /]#
Všimněte si, že existují další tři soubory tar označené node_modules
jehož vztah s v0.12.7
není jasné.
Jaké konkrétní příkazy mám spustit, abych bezpečně odinstaloval v0.12.7
a odstraňte všechny v0.12.7
přidružené soubory tar z počítače?
Přijatá odpověď:
Právě jsem zkontroloval odkaz, ze kterého to máš. Instalujete konkrétně verzi 0.10
, nebo se o to alespoň pokoušíte, ale v repozitáři máte novější verzi, která se instaluje. Musíte postupovat podle nastavení pro uzel v5.
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
PS :pro budoucí použití se ujistěte, že jste si stránky přečetli velmi pozorně, zvláště když spouštíte příkazy jako root .
UPRAVIT: Dobře, zdá se, že jste repo přidali správně. Když se podíváte do repozitáře, vaše balíčky tam jsou, ale systém hledá špatnou verzi. V tomto bodě bych navrhoval.
yum clean all && yum update
Tím se vyčistí úložiště v mezipaměti a uchopte ze vzdáleného místa.
Související:Proč se služba Windows Update pokouší nainstalovat aktualizaci, kterou nepotřebuji?
Odpověď: Po práci, kterou jsme udělali přes chat
, zde je pro vás správná odpověď. nodejs v5
nainstalováno v pořádku. Dříve jste zkompilovali nodejs v0.12
ručně, což u binárních distribucí není dobrý nápad, protože skončíte v této pozici.
which node
vráceno
/usr/local/bin/node
zatímco
/usr/bin/node
vrátil správnou odpověď v5.x
.
V tuto chvíli máte několik možností, jak to opravit, ale já bych doporučil 2.
- Možnost 1 :Toto je snadná cesta ven. Svůj
.bashrc
můžete upravit a přidejtealias
to bude ukazovat nanode -> /usr/bin/node
. Je to stejně jednoduché jako přidáníalias node="/usr/bin/node"
. To pokaždé zavolá správnou verzi, ale nemohu zaručit, že to v budoucnu nezpůsobí konflikty s knihovnami. - Možnost 2 :Toto je nejtěžší způsob, ale opraví to. Nejprve proveďte vyčištění pomocí
yum
nodejs, který je nainstalován v systému. Za druhé, získejte tarball pro verzi, kterou jste zkompilovali, rozbalte jej,./configure
a odinstalujte jej. Tento krok můžete snadno najít online. Nakonec znovu nainstalujtenodejs
přesyum
, a to by mělo vyřešit váš problém.