Warum versucht Yum, die falsche Version von node.js zu installieren?

Warum versucht Yum, die falsche Version von node.js zu installieren?

Auf einem CentOS 7-Server versuche ich, die Version 5.xvon zu installieren Node.js, aber aus irgendeinem Grund yumversucht es immer wieder, die Version zu installieren und gibt einen Fehler zurück, wenn die Version auf der Download-Site 0.xnicht gefunden werden kann . Der Fehler zeigt an, dass ein Versionsdateiname mit einer Versions -URL verknüpft wird . Ich nehme an, dies weist auf einen Fehler in der Konfiguration für auf der CentOS 7-Maschine hin. 0.x5.xyum0.x5.xyumWelche konkreten Änderungen müssen an den folgenden Punkten vorgenommen werden, um Version 5.x zu installieren?

Die grundlegende Fehlermeldung lautet:

Error downloading packages:
  nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.

Die Seite des Herausgebers, von der mein unten stehender Code stammt, finden Sie hier:unter folgendem Link. Einige Komplikationen können auch durchein früherer Versuch nach den Anweisungen unter diesem anderen Link. Und um die möglichen Überbleibsel des früheren Versuchs zu untersuchen, führe ich derzeit den folgenden Befehl aus und warte auf die Ergebnisse:grep -rnw '/path/to/somewhere/' -e "pattern"

Hier ist die Terminalausgabe zum Festlegen des Knotenquellenspeicherorts:

[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`

Hier ist eine Auflistung des Inhalts des /tmpOrdners nach dem obigen Befehl:

[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

Hier sind die Ergebnisse des Installationsversuchs nodejsmit 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]# 

Zur Information: gedit /etc/yum.repos.d/nodesource-el.repoEs zeigt Folgendes:

[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  

Ich vermute, dass das Problem möglicherweise darauf zurückzuführen ist, dass Sie zuvor diesen anderen Befehl ausgeführt haben:

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

Ich vermute, dass das zugrunde liegende Problem darin besteht, wie Yum die Ergebnisse diesercurl --silent --location ... | bash - commands


Kontrollfall:


Bei einer anderen, völlig neuen Installation von CentOS 7 auf einer anderen virtuellen Maschine wurde mit den folgenden drei einfachen Befehlen erfolgreich die richtige aktuelle Version 5.x von nodejs installiert:

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

Diese Ergebnisse aus dem Kontrollfall weisen darauf hin, dass das Problem in der Konfiguration von Yum auf der problematischen Maschine liegt. Welche konkreten Änderungen müssen also an der problematischen Maschine vorgenommen werden, damit Yum so konfiguriert ist, dass die richtige Download-URL generiert wird? Es ist nicht sinnvoll, alles auf eine andere VM zu portieren. Sicherlich sind dies nur ein oder zwei Zeilen in einer Yum-Konfiguration irgendwo, die geändert werden können, um dieses Problem zu lösen.

Antwort1

Dies scheint ein Cache-Problem gewesen zu sein, obwohl unklar ist, was schief gelaufen ist. Nach einer Unterhaltung mit dem Poster im Chat yum clean allwurde das Problem durch Ausführen behoben.

Auf dem Poster stand Folgendes:

[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

Daher yum clean allwurde das veraltete Paket gelöscht, das im Cache gespeichert war.

Ich verfüge nicht über ausreichende Kenntnisse oder Erfahrungen mit auf Red Hat basierenden Distributionen, um sagen zu können, was hier schiefgelaufen ist, daher werde ich mich weiterer Kommentare enthalten.

Antwort2

Folgendes musste ich tun …

Entfernen Sie zunächst das aus EPEL installierte nodejs-Paket:

sudo yum remove nodejs

Listen Sie Ihre Yum-Repos auf:

yum repolist

So sah mein Node-Repo-Eintrag aus:

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

Wenn Sie neugierig sind, listen Sie die Pakete im Node-Repo auf:

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

Führen Sie dann die Yum-Installation nur mit dem Node-Repo aus:

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

Ich vermute, dass etwas am Nummerierungsschema im Node-Repo liegt, das node.js nicht als Ersatz für das Paket im EPEL-Repo darstellt, aber das ist nur eine Vermutung.

Antwort3

yumversucht, die in den konfigurierten Repositorys verfügbare Version abzurufen, nicht die Version, die Sie installieren möchten.

Die Installation von Paketen, die die offiziell angebotenen Versionen überschreiben, ist ein sicherer Weg, Ihr System zu beschädigen, oft auf subtile Weise. Es scheint, dass Ihr Node.js-Repository genau das versucht. Sehen Sie sich genauer an, was verfügbar ist, was dieses Drittanbieter-Repository bietet und welche Sicherheitsvorkehrungen getroffen wurden, um Fehler zu vermeiden.

Vielleicht ist es eine vernünftigere Lösung, das Paket nur für Ihr Konto zu installieren, möglicherweise direkt von der Quelle?

verwandte Informationen