🌽

Bunのインストールで curl: (60) SSL certifica、アップグレードでMalformed_HTTP_Response

2024/05/20に公開

OSの違いを気にせずシェルスクリプトが書けるという
Bun Shellを試したかったのですが、WSLにインストール済みのBunが古くて
1.0.9 でした。

1.0.24 以上が必要なようです。

最新は 1.1.8 のようです。


最近のCLIは、自分自身を最新にアップデートするサブコマンドを内蔵してることが多いので
Bunにも当然あるだろうと思って、適当に試しました。

bun update

でも、これは npm update の代わりになるものなので
Nodeのプロジェクト配下でなければ意味のないコマンドでした。

bun upgrade

が正しい。


しかし、

bun upgrade

の結果は

Bun v1.1.8 is out! You're on 1.0.9
Downloading [1/35249073] Bun upgrade failed with error: Malformed_HTTP_Response

Please upgrade manually:
  curl -fsSL https://bun.sh/install | bash

プロキシのせいかなと思ったけど
Bunは HTTPS_PROXY を読むように作られているし、定義済みでした。

指示通りに

curl -fsSL https://bun.sh/install | bash

を試した結果は

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

error: Failed to download bun from "https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip"

curlがSSL証明書に対して怒ってた。


調べると、こういう場合
証明書をいじれない立場では --insecure オプションを付ければイイらしい。

でも

curl -fsSL --insecure https://bun.sh/install | bash

に変えても、結果は変わらず。

とりあえず install の内容を見てみたかったので

wget https://bun.sh/install

して、ローカルにダウンロード。

この中で bun-linux-x64.zip をダウンロードしようとしてる箇所は
134行目の

curl --fail --location --progress-bar --output "$exe.zip" "$bun_uri" ||

の部分でした。


ここを

curl --insecure --fail --location --progress-bar --output "$exe.zip" "$bun_uri" ||

と書き換えて、

cat ./install | bash

すると、今度は成功。

######################################################################## 100.0%
bun was installed successfully to ~/.bun/bin/bun
Run 'bun --help' to get started

バージョンを確認してみる。

bun --version

の結果は

1.1.8

やった!

サツキ「男の子と curl キライ!」

サツキ「でも、お婆ちゃんちのおはぎと wget は、と~~~っても好き!」

Discussion