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

12

Примечание: это частично решено, но требует немного большего внимания. Смотрите примечания внизу OP и частичный ответ @ 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 частично решил эту проблему, показав, как установить новую версию, но мы все еще не можем удалить старую версию, что может привести к возникновению конфликтов. Какие шаги необходимо предпринять, чтобы удалить старую версию, чтобы новая установка могла быть чистой и полной?

Я нашел tar 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 /]# 

Обратите внимание, что есть еще три отмеченных tar-файла node_modules, связь с которыми v0.12.7не ясна.

Какие конкретные команды я запускаю для безопасного удаления v0.12.7и удаления всех v0.12.7связанных файлов tar с компьютера?

CodeMed
источник
Было бы неплохо также опубликовать весь вывод. Это поможет увидеть, что происходит, чтобы лучше помочь вам.
Digisec
@Digisec Я перезапустил команды, а затем добавил полный вывод в OP, как вы и просили. Могу ли я сделать что-нибудь еще, чтобы помочь изолировать проблему?
CodeMed
Теперь вы можете удалить старую версию NodeJS с помощью yum remove -y nodejs.
avazula

Ответы:

7

Я только что проверил ссылку, с которой ты это получил. Вы устанавливаете, в частности, версию 0.10или пытаетесь, по крайней мере, но у вас есть более новая версия в репозитории, которая устанавливается. Вы должны следовать настройке для узла v5.

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

PS : для дальнейшего использования убедитесь, что вы очень внимательно читаете сайты, особенно когда запускаете команды от имени пользователя root .

РЕДАКТИРОВАТЬ: Хорошо, кажется, что вы добавили репо правильно. Заглядывая в репозиторий, ваши пакеты есть, но система ищет неправильную версию. На данный момент, я бы предложил.

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выполните очистку с помощью nodejs, установленного в системе. Во-вторых, получите tarball для версии, которую вы скомпилировали, распакуйте ее ./configureи удалите. Этот шаг вы можете легко найти в Интернете . Наконец, переустановите nodejsчерез yum, и это должно решить вашу проблему.
Digisec
источник
Спасибо, что изучили это, но это все еще не решает проблему полностью. Пожалуйста, ознакомьтесь с дополнительным выводом терминала, который я добавил в конец OP, документируя результаты попытки вашего предложения. Что еще я могу попробовать?
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
Sergio
источник
Спасибо! Это было единственное решение, которое помогло мне.
626
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
BioQwer
источник
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
Локеш Кумар Банди
источник