くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

HomebrewのSHA256 mismatchエラーを無理やり解決する

Flutterのバージョン管理ツール(fvm)を
HomebrewインストールしようとしたらSHA256 mismatchエラーが。。

しょうがないので、無理やり解決しようとしたときの備忘録(*´ω`*)

発生したエラー

$ brew tap leoafarias/fvm
$ brew install fvm
Running `brew update --auto-update`...
==> Fetching dependencies for leoafarias/fvm/fvm: dart-lang/dart/dart
==> Fetching dart-lang/dart/dart
==> Downloading https://storage.googleapis.com/dart-archive/channels/stable/release/2.19.0/sdk/dartsdk-macos-x6
Already downloaded: /Users/kira_puka/Library/Caches/Homebrew/downloads/31df1a1feb9da5c6bfe97a889b37376b3478b8945e4c63fc5801df8418f49d69--dartsdk-macos-x64-release.zip
==> Fetching leoafarias/fvm/fvm
==> Downloading https://github.com/fluttertools/fvm/archive/2.4.1.tar.gz
Already downloaded: /Users/kira_puka/Library/Caches/Homebrew/downloads/54b77538c3b1241d7203cf322d4c29f344917cfacab6f1f19203cff6dc2390e4--fvm-2.4.1.tar.gz
Error: fvm: SHA256 mismatch
Expected: 578ddc4cc63656938afbfa971e08325d22af1ce4487cb264753dd829e419646b
  Actual: a79559e6a0a2b0ef9f0ac15223b40b630899422eb65e032ccd194492228197a3
    File: /Users/kira_puka/Library/Caches/Homebrew/downloads/54b77538c3b1241d7203cf322d4c29f344917cfacab6f1f19203cff6dc2390e4--fvm-2.4.1.tar.gz
To retry an incomplete download, remove the file above.

解決方法

Homebrewでダウンロードされたファイルのsha256ハッシュを確認する。

$ shasum -a 256 54b77538c3b1241d7203cf322d4c29f344917cfacab6f1f19203cff6dc2390e4--fvm-2.4.1.tar.gz
a79559e6a0a2b0ef9f0ac15223b40b630899422eb65e032ccd194492228197a3  54b77538c3b1241d7203cf322d4c29f344917cfacab6f1f19203cff6dc2390e4--fvm-2.4.1.tar.gz

次に、brew editコマンドで設定されているハッシュを書き換える。

$ brew edit fvm
  require "yaml"

  class Fvm < Formula
    desc "Simple cli to manage Flutter SDK versions per project"
    homepage "https://github.com/fluttertools/fvm"
    url "https://github.com/fluttertools/fvm/archive/2.4.1.tar.gz"
-   sha256 "578ddc4cc63656938afbfa971e08325d22af1ce4487cb264753dd829e419646b"
+   sha256 "a79559e6a0a2b0ef9f0ac15223b40b630899422eb65e032ccd194492228197a3"
    license "MIT"

    depends_on "dart-lang/dart/dart" => :build
    # ...

変更したら保存して、再度brew installを実行。

$ brew install fvm

終わったら、brew edit fvmで変更した内容をもとに戻す。
これでいちようインストールまでできる!!

他に調べたこと

それぞれのパスは以下の通り。

  • ダウンロードのパス
    • /Users/kira_puka/Library/Caches/Homebrew/downloads
  • fvm.rbのパス
    • /usr/local/Homebrew/Library/Taps/leoafarias/homebrew-fvm

fvm.rbはgitで管理されているので、git logで変更履歴も確認できる。

$ cd /usr/local/Homebrew/Library/Taps/leoafarias/homebrew-fvm
$ git log fvm.rb
commit a1a46f45fb693b1cc527e4395f13deb7d5383d0c (HEAD -> master, origin/master, origin/HEAD)
Author: cli_pkg <cli_pkg@none>
Date:   Wed Jul 6 15:10:47 2022 +0000

    Update fvm to 2.4.1

commit b301e9b2ce5f03961f1fe8df828a212fd51100c8
Author: cli_pkg <cli_pkg@none>
Date:   Wed Jul 6 10:53:21 2022 +0000

    Update fvm to 2.4.0

commit 812ff542d3bfe6070d58fc024a19025fcd70491e
Author: cli_pkg <cli_pkg@none>
Date:   Thu Apr 7 20:19:27 2022 +0000

    Update fvm to 2.3.1
...

各リビジョンのurlにあるファイルはGitHub上にあるよう。
そっちも確認してみたけど、該当するSHA265ハッシュではなかった。。

$ wget https://github.com/fluttertools/fvm/archive/2.4.1.tar.gz
$ wget https://github.com/fluttertools/fvm/archive/v2.4.1.tar.gz
$ shasum -a 256 2.4.1.tar.gz 
a79559e6a0a2b0ef9f0ac15223b40b630899422eb65e032ccd194492228197a3  2.4.1.tar.gz
$ shasum -a 256 v2.4.1.tar.gz 
a79559e6a0a2b0ef9f0ac15223b40b630899422eb65e032ccd194492228197a3  v2.4.1.tar.gz

fvm.rbにあるハッシュはどれ。。

参考にしたサイトさま