自分であとから検索したときにヒットするようにメモ。
開発環境周りは進化していて、一昔前と比べて格段にわかりやすくつまづきにくくなったが、サーバー周り、環境構築は相変わらずしんどい。
Ruby をアップデートしようと、割と古い Ubuntu 上で、rbenv install を実行したら、
$ rbenv install 2.6.3
Downloading ruby-2.6.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2
error: failed to download ruby-2.6.3.tar.bz2
というエラーが発生。
ダウンロード先のファイルを curl で取得しようとすると、
curl: (35) SSL connect error
が発生しており、
と同じ現象のようだった。curl を最新版に入れ替えれば良さそうだわかる。
Curl のページより最新版のソースをダウンロードしてきて、
./configure
make
sudo make install
でインストールできたのだが、 curl -vV を実行してみると、
Symbol lookup error undefined symbol: curl_mime_init
というエラーが出る。
バージョン表示のときに表示される curl のバージョンと libcurl のバージョンがあっていないのがどうも悪いらしいと、libcurl を入れ替えようとしてみたり悪戦苦闘したのだが、結局
» 【学習メモ】curl-7.59.0のインストール後はldconfigが必要
にあるとおり、
sudo ldconfig
を実行したら、動くようになった。
ldconfig とは、
» 【ldconfig】共有ライブラリの依存関係情報を更新する
にあるとおり、共有ライブラリの依存関係情報を更新する。
うーん、Unix 力がまだまだ足りない。。
[追記]
別の環境では、上記を実行しても、依然 curl: (35) error が出る。
curl -v -1 https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2
* Trying 151.101.109.178...
* TCP_NODELAY set
* Connected to cache.ruby-lang.org (151.101.109.178) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.1 (OUT), TLS handshake, Client hello (1):
* TLSv1.1 (IN), TLS alert, protocol version (582):
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection 0
curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
sudo apt-get install libssl-dev
を実行して、libssl-dev を最新版にしたところ、接続できるようになった。
curl -v -1 https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2
* Trying 151.101.109.178...
* TCP_NODELAY set
* Connected to cache.ruby-lang.org (151.101.109.178) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
* subject: C=US; ST=California; L=San Francisco; O=Fastly, Inc.; CN=m.ssl.fastly.net
* start date: Sep 24 16:42:11 2018 GMT
* expire date: Sep 1 15:02:57 2019 GMT
* subjectAltName: host "cache.ruby-lang.org" matched cert's "*.ruby-lang.org"
* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign CloudSSL CA - SHA256 - G3
* SSL certificate verify ok.
> GET /pub/ruby/2.6/ruby-2.6.3.tar.bz2 HTTP/1.1
> Host: cache.ruby-lang.org
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< x-amz-id-2: CSxKQ4zF5+oGri/uccevgMVR6WPQQsMtjQhgaWhvt4hu92tB++BaSizfF22SF9KolfSE5GgTwA4=
< x-amz-request-id: B53E6653265B2E84
< Last-Modified: Wed, 17 Apr 2019 15:24:47 GMT
< ETag: "9a57b5fd806e5dc0b992a45d21e9c353-2"
< x-amz-version-id: rMhn0_W8iaiOyH_SaOIJVmfaw1UJa12b
< Content-Type: application/x-tar
< Server: AmazonS3
< Accept-Ranges: bytes
< Age: 4737479
< Content-Length: 14509165
< Accept-Ranges: bytes
< Date: Tue, 11 Jun 2019 14:24:42 GMT
< Via: 1.1 varnish
< Connection: keep-alive
< X-Served-By: cache-tyo19928-TYO
< X-Cache: HIT
< X-Cache-Hits: 0
< X-Timer: S1560263082.085898,VS0,VE7
<
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failed writing body (0 != 2759)
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, close notify (256):
2019/05/19 09:00:00