Wenn die Installation von rbenv nicht erfolgreich ist, verwenden Sie die Umgebungsvariable "RUBY_BUILD_CURL_OPTS".

In der von Vagrant erstellten lokalen Entwicklungsumgebung habe ich versucht, beim Einfügen von "Ruby" "rbenv" zu verwenden (da es sich im Grunde genommen um "Vagrant" handelt Ich arbeite als "root").

Die Installation von "rbenv" selbst ist abgeschlossen, aber wenn ich versuche, "ruby" mit "rbenv" zu installieren, wird der folgende Fehler angezeigt.

[root@localhost ~]# rbenv install 2.6.6
Downloading ruby-2.6.6.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
error: failed to download ruby-2.6.6.tar.bz2

BUILD FAILED (CentOS Linux 7 using ruby-build 20200520-2-gf00582b)

"Curl" -Fehler

Ich kann die Datei scheinbar nicht herunterladen. Bei der Prüfung stellte ich fest, dass "rbenv" "curl" verwendet, um die Dateien herunterzuladen.

Tatsächlich befand sich die Umgebung, in der ich diese Arbeit ausführte, innerhalb des Proxys, sodass ich vermutete, dass dies wahrscheinlich auf die Netzwerkumgebung zurückzuführen war. Daher habe ich "curl" alleine ausgeführt und das Verhalten überprüft.

[root@localhost ~]# curl https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
curl: (60) Peer's Certificate issuer is not recognized.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Proxy-Einstellungen

curl ist ebenfalls fehlgeschlagen. Es scheint, dass die Ursache entweder "SSL-Authentifizierung funktioniert nicht" oder "Proxy ist nicht richtig eingerichtet" ist. Also habe ich zuerst versucht, die wahrscheinlichen Proxy-Beziehungen festzulegen.

Stellen Sie den Proxy mit vi ~ / .curlrc ein.

proxy-user="{Nutzername}:{Passwort}"
proxy = "http:/{Proxy}:{Port-Nummer}/"

Nach dem Einstellen habe ich versucht, "Curl" auszuführen. Die Fehlermeldung hat sich ein wenig geändert, funktioniert aber nicht (die angegebene Version unterscheidet sich übrigens vom vorherigen Abschnitt, aber ich habe versucht, zwischen dieser und dieser Version zu wechseln).

[root@localhost ~]# curl -v https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2
* Could not resolve proxy: http;Unbekannter Fehler
* Closing connection 0
curl: (5) Could not resolve proxy: http;Unbekannter Fehler

curl allein ist aufgrund der optionalen Proxy-Spezifikation erfolgreich

Führen Sie für "curl" den Parameter "-x" aus, mit dem Sie den Proxy usw. direkt festlegen können, den Parameter "-O", der für den Dateidownload verwendet wird, und den Parameter "-k", der Zertifikatfehler in der SSL-Verbindung überspringt. Der Download von curl` allein lief gut.

curl -k -x http://{Nutzername}:{Passwort}@{Proxy}:{Port-Nummer}/ -v -O https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2

...
...
...

  0 11.9M    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{ [data not shown]
100 11.9M  100 11.9M    0     0  1314k      0  0:00:09  0:00:09 --:--:-- 1658k

Geben Sie einen Alias an. curl ist erfolgreich. Rbenv schlägt jedoch fehl.

Ich fand, dass der Proxy immer noch die Ursache war. Um diesen Parameter in rbenv zu verwenden, setze ich als nächstes den gleichen Parameter im Alias von curl.

Stellen Sie in vi / etc / bashrc am Ende Folgendes ein.

alias curl="curl -k -x http://{Nutzername}:{Passwort}@{Proxy}:{Port-Nummer}/"

Wenn Sie die Einstellungen mit source ~ / .bashrc neu laden , -x und -k weglassen und curl setzen, ist curl alleine erfolgreich.

curl -v -O https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2

100 11.9M  100 11.9M    0     0  1853k      0  0:00:06  0:00:06 --:--:-- 1899k

Rbenv funktioniert jedoch nicht.

[root@localhost ~]# rbenv install 2.6.6
Downloading ruby-2.6.6.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
error: failed to download ruby-2.6.6.tar.bz2

BUILD FAILED (CentOS Linux 7 using ruby-build 20200520-2-gf00582b)

Mit der Umgebungsvariablen RUBY_BUILD_CURL_OPTS von ruby-build war rbenv ebenfalls erfolgreich.

Denken Sie über dies und das nach und besuchen Sie die Github-Seite von rbenv und ruby-build. Wenn Sie dies tun, werden Sie feststellen, dass es eine Umgebungsvariable "RUBY_BUILD_CURL_OPTS" gibt, mit der Sie Optionen für "Curl" angeben können.

Wenn Sie wie folgt ausführen, ist dies erfolgreich.

[root@localhost ~]# RUBY_BUILD_CURL_OPTS="-k -x http://{Nutzername}:{Passwort}@{Proxy}:{Port-Nummer}/" rbenv install 2.7.1
Downloading ruby-2.7.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2
Installing ruby-2.7.1...

Installed ruby-2.7.1 to /root/.rbenv/versions/2.7.1

[root@localhost ~]# rbenv global 2.7.1
[root@localhost ~]# rbenv rehash
[root@localhost ~]# ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
[root@localhost ~]#

Erfolgreich. Ich konnte keinen Weg finden, RUBY_BUILD_CURL_OPTS zu verwenden, so weit ich gesucht habe, also werde ich es als Memo belassen.

Außerdem können Sie anscheinend angeben, dass Sie "aria2c" und "wget" verwenden möchten, indem Sie den Parameter "RUBY_BUILD_HTTP_CLIENT" verwenden. Wenn Sie also "curl" selbst nicht verwenden können, möchten Sie möglicherweise "RUBY_BUILD_HTTP_CLIENT" verwenden Hmm.

Recommended Posts

Wenn die Installation von rbenv nicht erfolgreich ist, verwenden Sie die Umgebungsvariable "RUBY_BUILD_CURL_OPTS".
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
[Ubuntu 20.04] Was tun, wenn der externe Monitor nicht erkannt wird?