僕は発展途上技術者

rbenv install で error: failed to download エラー、curl 最新版インストールで対処

自分であとから検索したときにヒットするようにメモ。

開発環境周りは進化していて、一昔前と比べて格段にわかりやすくつまづきにくくなったが、サーバー周り、環境構築は相変わらずしんどい。

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

が発生しており、

» rbenv installに失敗する - Qiita

と同じ現象のようだった。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):

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ