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

4

Em um servidor CentOS 7, estou tentando instalar a versão 5.x de Node.js , mas por algum motivo, yum continua tentando instalar a versão 0.x e retornando um erro quando não consegue encontrar a versão 0.x no site de download 5.x . O erro indica que yum está concatenando uma versão 0.x nome do arquivo com uma versão 5.x url. Eu suponho que isso aponta para algo errado na configuração de yum na máquina do CentOS 7. Quais alterações específicas a seguir 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 a partir da qual o meu código abaixo foi originado pode ser visualizada no no seguinte link . Além disso, alguma complicação pode ser resultante de tente seguir as instruções neste outro link . E para explorar os possíveis remanescentes 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 o local da fonte de nós:

[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 listagem do conteúdo da pasta /tmp 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 de tentar instalar 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 o registro, 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  

Eu suspeito que o problema pode ser resultado de ter executado este outro comando anteriormente:

curl --silent --location rpm.nodesource.com/setup | bash -

Eu estou supondo que o problema subjacente é como o yum persiste os resultados daqueles curl --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 correta 5.x de nodejs:

# cd /tmp
# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
# yum install -y nodejs  
# node --version
v5.6.0  

Estes resultados do caso de controle indicam que o problema está em como o yum está configurado na máquina que está tendo 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 isso é apenas uma linha ou duas em uma configuração yum em algum lugar que pode ser alterada para resolver este problema.

    
por CodeMed 15.02.2016 / 03:20

3 respostas

3

Isso parece ter sido um problema de cache, embora não esteja claro o que deu errado. Depois de conversar com o cartaz no bate-papo, a execução de 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, o yum clean all excluiu o pacote obsoleto que havia sido armazenado no cache.

Eu não tenho conhecimento suficiente ou experiência de distribuições baseadas na Red Hat para dizer o que deu errado aqui, então vou me abster de comentar mais.

    
por 15.02.2016 / 19:53
2

Aqui está o que eu tive que fazer ...

Primeiro, remova o pacote nodejs instalado do EPEL:

sudo yum remove nodejs

Relacione seus repositórios do yum:

yum repolist

Here's what my node repo entry looked like:

nodesource/x86_64    Node.js Packages for Enterprise Linux 7 - x86_64

Se você estiver curioso, liste os pacotes no repositório do nó:

yum --disablerepo="*" --enablerepo="nodesource" list available

Em seguida, execute a instalação do yum usando apenas o repositório do nó:

yum --disablerepo="*" --enablerepo="nodesource" install nodejs

Minha suspeita é que há algo sobre o 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.

    
por 29.09.2016 / 22:30
1

yum tentará obter a versão disponível nos repositórios configurados, não o que você deseja instalar.

A instalação de pacotes que substituem as versões oferecidas oficialmente é uma maneira segura de manipular seu sistema, muitas vezes de maneira sutil. Parece que o repositório do seu nodejs está tentando fazer exatamente isso. Analise com mais atenção o que está disponível, o que esse repositório de terceiros oferece e quais são as salvaguardas para evitar quebras.

Talvez uma solução melhor seja instalar o pacote apenas para sua conta, talvez diretamente da fonte?

    
por 15.02.2016 / 03:43