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)
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.
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 erfolgreichFü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
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)
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.