En un servidor CentOS 7, estoy intentando instalar la versión 5.x
de Node.js
, pero por alguna razón yum
sigo intentando instalar la versión 0.x
y devuelve un error cuando no puedo encontrar la versión 0.x
en el 5.x
sitio de descarga. El error indica que yum
se está concatenando un 0.x
nombre de archivo de versión con una 5.x
URL de versión. Supongo que esto apunta a que hay algo mal en la configuración de yum
la máquina CentOS 7. ¿Qué cambios específicos se deben realizar a continuación para instalar la versión 5.x?
El mensaje de error raíz es:
Error downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.
Se puede ver la página del editor desde la que se originó mi código a continuación.en el siguiente enlace. Además, algunas complicaciones pueden resultar deun intento anterior siguiendo las instrucciones en este otro enlace. Y para explorar los posibles restos del intento anterior, actualmente estoy ejecutando el siguiente comando y esperando los resultados:grep -rnw '/path/to/somewhere/' -e "pattern"
Aquí está la salida del terminal para configurar la ubicación del origen del nodo:
[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`
Aquí hay una lista del contenido de la /tmp
carpeta después del comando anterior:
[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
Estos son los resultados de intentar 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 que conste, gedit /etc/yum.repos.d/nodesource-el.repo
muestra lo siguiente:
[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
Sospecho que el problema podría deberse a haber ejecutado este otro comando anteriormente:
curl --silent --location rpm.nodesource.com/setup | bash -
Supongo que el problema subyacente es cómo Yum persiste los resultados de esoscurl --silent --location ... | bash - commands
CASO DE CONTROL:
En una instalación diferente y completamente nueva de CentOS 7 en una máquina virtual diferente, los siguientes tres comandos simples instalaron con éxito la versión actual correcta 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
Estos resultados del caso de control indican que el problema está en cómo está configurado yum en la máquina que tiene el problema. Entonces, ¿qué cambios específicos se deben realizar en la máquina con el problema para que yum esté configurado para generar la URL de descarga correcta? No es razonable portar todo a una máquina virtual diferente. Seguramente esto es solo una línea o dos en una configuración de yum en algún lugar que se puede cambiar para resolver este problema.
Respuesta1
Esto parece haber sido un problema de caché, aunque no está claro qué salió mal. Después de una conversación con el autor en el chat, ejecutar yum clean all
solucionó el problema.
El cartel señalaba lo siguiente:
[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
Entonces yum clean all
eliminaron el paquete obsoleto que se había almacenado en el caché.
No tengo suficiente conocimiento o experiencia en distribuciones basadas en Red Hat para decir qué salió mal aquí, por lo que me abstendré de hacer más comentarios.
Respuesta2
Esto es lo que tenía que hacer...
Primero, elimine el paquete nodejs instalado desde EPEL:
sudo yum remove nodejs
Enumere sus repositorios de yum:
yum repolist
Así es como se veía la entrada de mi repositorio de nodos:
nodesource/x86_64 Node.js Packages for Enterprise Linux 7 - x86_64
Si tiene curiosidad, enumere los paquetes en el repositorio del nodo:
yum --disablerepo="*" --enablerepo="nodesource" list available
Luego ejecute la instalación de yum usando solo el repositorio del nodo:
yum --disablerepo="*" --enablerepo="nodesource" install nodejs
Mi sospecha es que hay algo en el esquema de numeración utilizado en el repositorio de nodos que no presenta a nodejs como un reemplazo para el paquete en el repositorio de EPEL, pero eso es solo una suposición.
Respuesta3
yum
Intentará obtener la versión disponible en los repositorios configurados, no la que desee instalar.
Instalar paquetes que anulan las versiones ofrecidas oficialmente es una forma segura de dañar su sistema, a menudo de manera sutil. Parece que su repositorio de Nodejs está intentando hacer precisamente eso. Observe más detenidamente lo que está disponible, lo que ofrece ese repositorio de terceros y qué medidas de seguridad existen para evitar roturas.
¿Quizás una solución más sensata sea instalar el paquete solo para su cuenta, quizás directamente desde la fuente?