Auf einem CentOS 7-Server versuche ich, die Version 5.x
von zu installieren Node.js
, aber aus irgendeinem Grund yum
versucht es immer wieder, die Version zu installieren und gibt einen Fehler zurück, wenn die Version auf der Download-Site 0.x
nicht 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.x
5.x
yum
0.x
5.x
yum
Welche 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 /tmp
Ordners 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 nodejs
mit 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.repo
Es 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 all
wurde 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 all
wurde 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
yum
versucht, 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?