Em um servidor CentOS 7, estou tentando instalar a versão 5.x
do Node.js
, mas por algum motivo, yum
continuo tentando instalar a versão 0.x
e retornando um erro quando não consigo encontrar a versão 0.x
no 5.x
site de download. O erro indica que yum
está concatenando um 0.x
nome de arquivo de versão com um 5.x
URL de versão. Presumo que isso aponta para algo errado na configuração yum
da máquina CentOS 7. Que alterações específicas abaixo precisam ser feitas para instalar a versão 5.x?
A mensagem de erro raiz é:
Error downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.
A página do editor que originou meu código abaixo pode ser visualizadano seguinte link. Além disso, algumas complicações podem ser resultantes deuma tentativa anterior seguindo as instruções neste outro link. E para explorar os possíveis resquícios da tentativa anterior, estou executando o seguinte comando e aguardando os resultados:grep -rnw '/path/to/somewhere/' -e "pattern"
Aqui está a saída do terminal para definir a localização da fonte do nó:
[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.sH82u4Gpap' '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.sH82u4Gpap'
## Cleaning up...
+ rm -f '/tmp/tmp.sH82u4Gpap'
## 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`
Aqui está uma lista do conteúdo da /tmp
pasta após o comando acima:
[root@localhost tmp]# ls -al
total 8
drwxrwxrwt. 13 root root 320 Feb 14 06:13 .
dr-xr-xr-x. 19 root root 4096 Jan 29 20:54 ..
drwx------. 2 user user 60 Feb 13 20:05 .esd-1000
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .font-unix
prw-------. 1 root root 0 Feb 13 20:05 hogsuspend
drwxrwxrwt. 2 root root 80 Feb 13 20:05 .ICE-unix
srwxrwxrwx. 1 mongod mongod 0 Feb 13 20:04 mongodb-27017.sock
drwx------. 2 user user 40 Dec 31 1969 orbit-user
drwx------. 2 user user 60 Feb 13 20:05 ssh-AmQyH8IIEC2m
drwx------. 3 root root 60 Feb 13 20:05 systemd-private-74534ca9946043cc88dbe52a38b4344d-colord.service-hDR3Cd
drwx------. 3 root root 60 Feb 13 20:04 systemd-private-74534ca9946043cc88dbe52a38b4344d-rtkit-daemon.service-ZAQmPk
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .Test-unix
drwx------. 2 user user 40 Feb 13 20:08 tracker-extract-files.1000
-r--r--r--. 1 root root 11 Feb 13 20:05 .X0-lock
drwxrwxrwt. 2 root root 60 Feb 13 20:05 .X11-unix
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .XIM-unix
Aqui estão os resultados da tentativa de instalação nodejs
usando yum
:
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.lax.hugeserver.com
* epel: mirror.sfo12.us.leaseweb.net
* extras: mirror.keystealth.org
* updates: mirror.supremebytes.com
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]#
Para constar, gedit /etc/yum.repos.d/nodesource-el.repo
mostra o seguinte:
[nodesource]
name=Node.js Packages for Enterprise Linux 7 - $basearch
baseurl=https://rpm.nodesource.com/pub_5.x/el/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
[nodesource-source]
name=Node.js for Enterprise Linux 7 - $basearch - Source
baseurl=https://rpm.nodesource.com/pub_5.x/el/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
gpgcheck=1
Suspeito que o problema possa ser resultado da execução deste outro comando anteriormente:
curl --silent --location rpm.nodesource.com/setup | bash -
Eu estou supondo que o problema subjacente é como o yum persiste nos resultados daquelescurl --silent --location ... | bash - commands
CASO DE CONTROLE:
Em uma instalação diferente e completamente nova do CentOS 7 em uma máquina virtual diferente, os três comandos simples a seguir instalaram com sucesso a versão atual 5.x correta do nodejs:
# cd /tmp
# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
# yum install -y nodejs
# node --version
v5.6.0
Esses resultados do caso de controle indicam que o problema está em como o yum está configurado na máquina que está apresentando o problema. Então, quais alterações específicas precisam ser feitas na máquina com o problema para que o yum seja configurado para gerar o URL de download correto? Não é razoável portar tudo para uma VM diferente. Certamente esta é apenas uma ou duas linhas em uma configuração do yum em algum lugar que pode ser alterada para resolver esse problema.
Responder1
Parece ter sido um problema de cache, embora não esteja claro o que deu errado. Depois de alguma conversa com o autor da postagem no chat, a execução yum clean all
corrigiu o problema.
O pôster observou o seguinte:
[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages
nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm
[root@localhost yum]# yum clean all
[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages
[root@localhost yum]# yum install -y nodejs
.... much terminal output during successful install
[root@localhost yum]# node --version
v5.6.0
Portanto, yum clean all
excluímos o pacote obsoleto que estava armazenado no cache.
Não tenho conhecimento ou experiência suficiente em distribuições baseadas em Red Hat para dizer o que deu errado aqui, portanto, evitarei comentar mais.
Responder2
Aqui está o que eu tive que fazer...
Primeiro, remova o pacote nodejs instalado do EPEL:
sudo yum remove nodejs
Liste seus repositórios yum:
yum repolist
Esta é a aparência da minha entrada do repositório do nó:
nodesource/x86_64 Node.js Packages for Enterprise Linux 7 - x86_64
Se estiver curioso, liste os pacotes no repositório do nó:
yum --disablerepo="*" --enablerepo="nodesource" list available
Em seguida, execute o yum install usando apenas o repositório do nó:
yum --disablerepo="*" --enablerepo="nodesource" install nodejs
Minha suspeita é que há algo no esquema de numeração usado no repositório do nó que não apresenta o nodejs como um substituto para o pacote no repositório EPEL, mas isso é apenas um palpite.
Responder3
yum
tentará obter a versão disponível nos repositórios configurados, não o que você deseja instalar.
Instalar pacotes que substituem as versões oferecidas oficialmente é uma maneira segura de danificar seu sistema, muitas vezes de maneiras sutis. Parece que seu repositório nodejs está tentando fazer exatamente isso. Observe com mais cuidado o que está disponível, o que o repositório de terceiros oferece e quais salvaguardas existem para evitar quebras.
Talvez uma solução mais sensata seja instalar o pacote apenas para sua conta, talvez diretamente da fonte?