背景
CocoaPods を使用しているプロジェクトで pod update
を行った際に以下のエラーが発生しました。
$ pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
[!] CDN: trunk Repo update failed - 2 error(s):
CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/Specs/0/3/5/Firebase/10.24.0/Firebase.podspec.json Response: Failure when receiving data from the peer
CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/Specs/0/3/5/Firebase/10.25.0/Firebase.podspec.json Response: Failure when receiving data from the peer
対応
~/.cocoapods/repos/trunk/Specs
ディレクトリ以下のファイルを全て削除することで解決しました。
$ rm -rf ~/.cocoapods/repos/trunk/Specs/*
~/.cocoapods/repos/trunk/Specs
ディレクトリ以下を削除することで問題が解決する理由は、CocoaPods がローカルに保存しているリポジトリのキャッシュをクリアし、再度リポジトリ情報を全て新規にダウンロードするためです。キャッシュが破損していたり古い情報が含まれている場合、それが原因でダウンロードに失敗することがあります。キャッシュを削除することで、最新かつ正確なデータをサーバーから取得するため、問題が解消されることが多いです。
Specs ディレクトリについて
~/.cocoapods/repos/trunk/Specs
ディレクトリには、CocoaPods の Trunk リポジトリの仕様(Specs)が含まれています。このディレクトリは、CocoaPods が利用可能な各ポッドのバージョン、依存関係、ソースの場所などのメタデータを格納した .podspec ファイルをキャッシュしておく場所です。各ポッドの設定情報が、階層的なディレクトリ構造で保存されています。
例えば、ある特定のライブラリ(例:Firebase)のすべてのバージョンの .podspec ファイルがここに配置されています。これにより、pod install や pod update が実行される際に、どのバージョンのポッドが必要で、どの依存関係が存在するかを CocoaPods が解決できるようになります。
~/.cocoapods/repos/trunk/Specs
ディレクトリを削除しても、通常は問題は起きません。CocoaPods はこのディレクトリを自動的に再生成し、必要な .podspec ファイルを再ダウンロードします。これは基本的にはキャッシュをクリアする行為に等しく、古いまたは破損したデータが原因で発生している問題を解決するのに役立ちます。
参考