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ライブラリのダウンロード/検証プロセスで発生し、主にダウンロードソースの変更やサーバー障害が原因となっています。
根本原因
この問題の本質的な原因は以下のいずれか(または組み合わせ)です:
- JFrogリポジトリ障害: Boostの公式配布元が
boostorg.jfrog.io
からarchives.boost.io
に変更 - サーバーダウン: JFrogリポジトリが一時的に利用不可状態になる
- キャッシュ問題: 古いキャッシュが正しいファイルダウンロードを妨害
- バージョン不一致: 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
の手動修正
ファイルを開く:
bashnano node_modules/react-native/third-party-podspecs/boost.podspec
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' }
pod install
再実行:bashcd 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 Native | Boostバージョン | 変更箇所 |
---|---|---|
< 0.70 | 1.63.0 | URL内のバージョン番号を調整 |
0.70.x | 1.76.0 | 上記例をそのまま使用 |
0.73.x | 1.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チェックサムは同一ファイルを指しているため維持
結論
- 最優先: React Nativeを0.72.9 か 0.73.2 以上に更新
- 緊急対応:
boost.podspec
のURLを手動変更 +patch-package
で永続化 - 補助的対策: キャッシュクリアとiOSターゲットバージョンの調整
推奨ワークフロー:
公式アップデート以外の方法は一時的な回避策であり、恒久的な解決のためにはReact Nativeのバージョンアップを推奨します。