Чому правильна нова версія Node.js не встановиться на CentOS 7?


12

Примітка. Це частково вирішено, але потрібно трохи більше уваги. Дивіться примітки внизу ОП та часткову відповідь @ Digisec.

Я намагаюся налаштувати Node.js на CentOS 7, але наступні команди не вдається встановити останню версію. Що мені потрібно змінити в наведеному нижче коді, щоб встановити новітню версію Node.js на CentOS 7?

Почніть з введення node --versionрезультатів v0.12.7. Це, очевидно, стара версія, тому nodejs.orgщо v5.6.0йдеться про останню стабільну версію.

Тоді я набираю наступне, щоб отримати останню версію node.js:

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

Термінал видає, що я повинен набрати наступне, щоб видалити застарілу версію node.js, тому я набираю таке:

yum remove -y nodejs npm

Термінал також каже ввести наступне, щоб встановити новітню версію node.js, тому я ввожу таке:

yum install -y nodejs

Але потім я набираю node --versionще раз, і термінал відповідає v0.12.7знову, показуючи, що попередні команди просто знову встановили стару застарілу версію.

Отже, що мені потрібно зробити, щоб отримати найновішу стабільну версію node.js, встановлену на машині CentOS 7?


ВІДПОВІДНІ ЕФЕКТИ:


Відповідно до пропозиції @ Digisec, я перезапустив вищезазначені команди, але цього разу весь запис записав у наступний текст. Зауважте, що послідовність дещо інша зараз, коли я запускаю її знову, але результат такий же:

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

Потім, відповідно до відповіді @ Digisec , я спробував наступне, але результат все ще не вдається встановити належну версію , як видно з наступного висновку терміналу:

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

Потім я відвідав статтю бази знань, на яку посилався журнал помилок , але виявив, що я не можу отримати доступ до повної статті, оскільки я не є клієнтом Red Had.


ЧАСТИЧНЕ РІШЕННЯ:


@Digisec частково вирішив це, показавши, як встановити нову версію, але ми все ще не зможемо видалити стару версію, що залишить ризик продовження конфліктів. Які кроки потрібно вжити, щоб видалити стару версію, щоб нова установка могла бути чистою та завершеною?

Я знайшов URL-адресу tar для старої версії v0.12.7 за цим посиланням . І @Digisec 'також запропонував прочитати це інше посилання, яке пропонує використовувати командуmake uninstall . Я розумію, що в терміналі може бути лише п'ять-десять команд, щоб видалити стару версію v0.12.7 та перевстановити нову версію nodejs. Які потрібні команди?

Здається, я знайшов три файли tar на машині CentOS 7, пов'язані з nodejs v0.12.7, використовуючи наступні термінальні команди:

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

Зверніть увагу , що є ще три смоляні файли , помічені , node_modulesчиї відносини з v0.12.7не ясно.

Які конкретні команди я запускаю, щоб безпечно видалити v0.12.7та видалити всі v0.12.7пов'язані файли tar з машини?


Було б непогано також розмістити весь результат. Це допомогло б побачити, що відбувається, щоб краще допомогти вам.
Digisec

@Digisec Я перезапустив команди, а потім додав повний вихід до ОП, як ви просили. Чи можу я зробити щось інше, щоб допомогти вирішити проблему?
CodeMed

FWIW тепер ви можете видалити стару версію NodeJS yum remove -y nodejs.
avazula

Відповіді:


7

Я щойно перевірив посилання, з якого ви це отримали. Ви встановлюєте, зокрема, версію 0.10, або намагаєтесь принаймні, але у вас є нова версія в репо, що встановлюється. Ви повинні дотримуватися налаштування для вузла v5.

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

PS : для подальшої довідки переконайтеся, що ви дуже уважно читаєте сайти, особливо під час виконання команд як root .

EDIT: Гаразд, здається, що ви правильно додали репо . Дивлячись на репо, ваші пакети є, але система шукає неправильну версію. На цьому етапі я б запропонував.

yum clean all && yum update

Це очистить кешоване репо і захопить з віддаленого.

Відповідь: Після роботи, яку ми виконали над chat, ось правильна відповідь для вас. nodejs v5встановлений штраф. Ви раніше компілювали nodejs v0.12вручну, що не є гарною ідеєю щодо бінарних дистрибутивів, тому що ви опинитесь у цій позиції.

which node

повернувся

/usr/local/bin/node

поки

/usr/bin/node

повернув правильну відповідь v5.x.

На даний момент у вас є кілька варіантів, щоб виправити це, але я б рекомендував 2.

  • Варіант 1 : Це найпростіший вихід. Ви можете відредагувати .bashrcта додати aliasвказівку node -> /usr/bin/node. Це так само просто, як додавання alias node="/usr/bin/node". Це буде викликати правильну версію кожного разу, але я не можу гарантувати, що це не спричинить конфліктів у майбутньому з бібліотеками.
  • Варіант 2 : Це важкий шлях, але він це виправить. По-перше, yumочистіть вузли, встановлені в системі. По-друге, знайдіть тарбол для складеної вами версії, зніміть її ./configureта видаліть. Цей крок ви можете легко знайти в Інтернеті . Нарешті, перевстановлювати nodejsчерез yum, і це повинно вирішити вашу проблему.

Дякуємо, що вивчили це, але це все ще не повністю вирішує проблему. Будь ласка, дивіться додатковий термінальний висновок, який я додав до кінця ОП із документуванням результатів спроби вашої пропозиції. Що ще я можу спробувати?
CodeMed

@CodeMed Я оновив відповідь, і було б краще зайти в чат.
Digisec

Це не вирішило проблему. Якщо ви все ще бажаєте спілкуватися, я створив таку кімнату: chat.stackexchange.com/rooms/35670/…
CodeMed

@CodeMed удачі з виправленням проблеми.
Digisec

Ви готові детальніше розглянути свій варіант 2? Або я повинен розмістити окреме запитання?
CodeMed

4

Що я зробив:

rm -f /etc/yum.repos.d/nodesource-el*
curl -sL https://rpm.nodesource.com/setup_7.x | баш -
yum install -y nodejs
вузол --версія

і я отримав:

v7.2.0

Дякую! Це було єдине рішення, яке мені допомогло.
626

3

CentOS 7.2, NodeJS 6.7.0 ( https://nodejs.org/download/release/v6.7.0/ ). Вручну встановити

wget https://nodejs.org/download/release/v6.7.0/node-v6.7.0.tar.gz
./configure
make
make install

видалити make uninstall


1

Я спробував встановити вузол з того ж NodeSource RepoInstaller . Для мого шляху проблема вирішена за допомогою увімкненого nodesourceрепо. Зміна enabled=0до enabled=1і все повинно працює.

[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

0

У мене також були проблеми з отриманням нових версій npm та nodejs, встановлених на CentOS 7.

Я дотримувався інструкцій на сайті nodejs, потім намагався встановити npm. Це виявилося проблемою (npm встановлювався з EPEL). Репозиторій Nodesource не надає окремих пакетів для npm, як це стосується EPEL. Натомість все знаходиться в одному пакеті "nodejs". Отже, як тільки ви встановите nodejs з Nodesource, ви автоматично встановили npm і готові перейти до оновленої версії.


0

Я боровся з тією ж проблемою, ні yum clean allні rm -f /etc/yum.repos.d/nodesource*допомагав. Потім я виявив, що yum використовував сховище Epel для встановлення вузла, тому я його тимчасово відключив (у /etc/yum.repos.d/epel.repoнаборі enabled=0), а після цього

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

0

Я також зіткнувся з тим же питанням.

Рішення: 1. Перейдіть до /tmpмісця, де вилучіть усі файли та папки.

cd /tmp
rm -rf *

2. Тепер ви можете використовувати команди нижче, щоб встановити NodeJs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
sudo yum install -y nodejs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.