Por que o yum está tentando instalar a versão errada do node.js?

Por que o yum está tentando instalar a versão errada do node.js?

Em um servidor CentOS 7, estou tentando instalar a versão 5.xdo Node.js, mas por algum motivo, yumcontinuo tentando instalar a versão 0.xe retornando um erro quando não consigo encontrar a versão 0.xno 5.xsite de download. O erro indica que yumestá concatenando um 0.xnome de arquivo de versão com um 5.xURL de versão. Presumo que isso aponta para algo errado na configuração yumda 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 /tmppasta 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 nodejsusando 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.repomostra 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 allcorrigiu 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 allexcluí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

yumtentará 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?

informação relacionada