Skip to content

Boostインストール時のチェックサムエラー解決方法

問題概要

React NativeプロジェクトでiOS向けにpod installを実行する際、以下のエラーが発生する現象が報告されています:

Verification checksum was incorrect, 
expected 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e, 
got 5e89103d9b70bba5c91a794126b169cb67654be2051f90cf7c22ba6893ede0ff

発生環境:

  • React Native バージョン: 0.73.1
  • プラットフォーム: macOS
  • 実行コマンド: cd ios && pod install

このエラーは、React Nativeが依存するBoostライブラリのダウンロード/検証プロセスで発生し、主にダウンロードソースの変更やサーバー障害が原因となっています。

チェックサムエラーのスクリーンショット


根本原因

この問題の本質的な原因は以下のいずれか(または組み合わせ)です:

  1. JFrogリポジトリ障害: Boostの公式配布元がboostorg.jfrog.ioからarchives.boost.ioに変更
  2. サーバーダウン: JFrogリポジトリが一時的に利用不可状態になる
  3. キャッシュ問題: 古いキャッシュが正しいファイルダウンロードを妨害
  4. バージョン不一致: React Nativeバージョンと必要なBoostバージョンの不整合

最新の推奨解決方法

最も安全かつ恒久的な対策: React Nativeのバージョンアップ

Facebook公式でリリースされた修正版を利用するのが最良策です:

bash
# React Nativeバージョンに応じたアップデート
# 0.72.x ユーザー
npm install react-native@0.72.9

# 0.73.x ユーザー
npm install react-native@0.73.2

メリット:

  • 公式サポートによる恒久修正
  • 今後の互換性問題が発生しない
  • boost.podspecが自動修正される

アップデート後のクリーン手順

bash
# node_modulesとキャッシュ削除
rm -rf node_modules
rm -rf ios/Pods
rm package-lock.json
rm ios/Podfile.lock

# 依存関係再インストール
npm install
cd ios && pod install

暫定的な回避策(緊急対応用)

方法1: boost.podspecの手動修正

  1. ファイルを開く:

    bash
    nano node_modules/react-native/third-party-podspecs/boost.podspec
  2. source行を変更(バージョンに応じて適宜変更):

    ruby
    # Before(変更前)
    spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' }
    
    # After(変更後)
    spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2' }
  3. pod install再実行:

    bash
    cd ios && pod install

方法2: patch-packageを使用した自動修正

手動修正の永続化とチーム共有を確実にする方法:

bash
# 1. patch-packageインストール
npm install --save-dev patch-package postinstall-postinstall

# 2. boost.podspecファイル修正(上記方法1と同様)

# 3. パッチファイル生成
npx patch-package react-native

# 4. package.json更新
# "scripts"セクションに以下を追加
{
  "scripts": {
    "postinstall": "patch-package"
  }
}

生成されるパッチ例:

diff
diff --git a/node_modules/react-native/third-party-podspecs/boost.podspec b/node_modules/react-native/third-party-podspecs/boost.podspec
index 2f1fcc4..0f83c02 100644
--- a/node_modules/react-native/third-party-podspecs/boost.podspec
+++ b/node_modules/react-native/third-party-podspecs/boost.podspec
@@ -10,11 +10,11 @@ Pod::Spec.new do |spec|
   spec.homepage = 'http://www.boost.org'
   spec.summary = 'Boost provides free peer-reviewed portable C++ source libraries.'
   spec.authors = 'Rene Rivera'
-  spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2',
+  spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
                   :sha256 => 'f0397ba6e982c4450f27bf37a5623a14636ea583318c41' }

バージョン対応表

React NativeBoostバージョン変更箇所
< 0.701.63.0URL内のバージョン番号を調整
0.70.x1.76.0上記例をそのまま使用
0.73.x1.83.0各数値を1.83.0に変更

補足的な解決策

キャッシュクリア方法

部分的な問題の場合に有効:

bash
# CocoaPodsキャッシュクリア
pod cache clean --all

# Pod関連ファイル削除
rm -rf Podfile.lock
rm -rf ios/Pods

# リポジトリ情報更新
pod repo update

# 再インストール
pod install

iOSデプロイターゲットバージョン変更

エラー解消後に発生する可能性のある別のエラー対策:

ruby
# ios/Podfile の最上部に以下を追加
platform :ios, '13.0' # 以前は11.0

恒久修正の仕組み

公式パッチではboost.podspecのダウンロードURLを以下のように変更:

ruby
# 修正前 (問題の原因)
https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.bz2

# 修正後 (新しいURL)
https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.bz2

変更理由:

  • JFrogアーティファクトリが不安定になったため
  • 公式Boostアーカイブへの移行で安定性を確保
  • SHA256チェックサムは同一ファイルを指しているため維持

結論

  1. 最優先: React Nativeを0.72.90.73.2 以上に更新
  2. 緊急対応: boost.podspecのURLを手動変更 + patch-packageで永続化
  3. 補助的対策: キャッシュクリアとiOSターゲットバージョンの調整

推奨ワークフロー:

公式アップデート以外の方法は一時的な回避策であり、恒久的な解決のためにはReact Nativeのバージョンアップを推奨します。