PC パソコン

Xcode Swift Package『repository not found』の原因と解決方法

XcodeでSwift Package Manager(SwiftPM)のパッケージを追加・更新・解決するときに、repository not found と表示されて依存関係を取得できないことがあります。このエラーは、リポジトリURLの誤り、リポジトリの移動・削除、Private Repositoryへの認証失敗、GitHubなどのアクセス権不足、キャッシュされた古いURLなどが原因で発生します。

エラーの例

fatal: repository 'https://github.com/example/sample-package.git/' not found

repository not found

Could not resolve package dependencies

主な原因

  • Package Dependencyに登録したGit URLが間違っている
  • リポジトリ名やOrganization名が変更された
  • 対象リポジトリが削除・非公開化された
  • Private Repositoryに対するGitHub・GitLab等の認証情報が無効
  • 現在のアカウントにリポジトリの読み取り権限がない
  • HTTPSとSSHの接続方式が環境と合っていない
  • XcodeやSwiftPMが古いリポジトリ情報をキャッシュしている

代表的な発生状況

新しいMacへプロジェクトを移した直後、チームメンバーからプロジェクトを受け取った直後、Private RepositoryのトークンやSSHキーを変更した後、パッケージ提供元がGitHub上でリポジトリ名を変更した後などに発生しやすいエラーです。また、CI環境ではローカルMacと異なり認証情報が設定されていないため、同じプロジェクトでもCIだけで失敗することがあります。

確認手順

1. Xcodeに登録されているURLを確認する

Xcodeのプロジェクト設定からPackage Dependenciesを開き、対象パッケージのRepository URLを確認します。ブラウザで同じURLを開き、現在もリポジトリが存在するか確認してください。

2. Gitコマンドでアクセスできるか確認する

git ls-remote https://github.com/example/sample-package.git

ここでも repository not found が返る場合、Xcode固有の問題ではなくURLまたはGit認証の問題である可能性が高いです。

3. Private Repositoryか確認する

ブラウザでログインしていると開けるのにGitでは取得できない場合、Personal Access Token、Credential Helper、SSHキーなどの認証を確認します。

解決方法1:正しいRepository URLへ修正する

リポジトリが移動・改名されている場合は、XcodeのPackage Dependenciesから古い依存関係を削除し、新しいURLで追加し直します。

https://github.com/organization/package-name.git

URL末尾の.gitの有無はホスティングサービスによって両方利用できる場合がありますが、提供元が案内している正式なClone URLを使用するのが安全です。

解決方法2:Private Repositoryの認証を修正する

HTTPSでPrivate Repositoryへ接続する場合は、古いパスワードや失効したトークンが保存されていないか確認します。GitHubなどでは通常のアカウントパスワードではなくPersonal Access Token等が必要になる場合があります。

git ls-remote https://github.com/organization/private-package.git

このコマンドで認証に失敗する場合は、Xcodeより先にGit側の認証設定を直してください。

解決方法3:SSH接続を確認する

SSH URLを使用している場合は、SSHキーがホスティングサービスへ登録されているか、現在のMacから認証できるか確認します。

ssh -T git@github.com

使用するURLの例:

git@github.com:organization/package-name.git

解決方法4:XcodeでPackageを再解決する

URLと認証に問題がない場合は、XcodeのFile > Packages > Reset Package Cachesを実行し、その後Resolve Package Versionsを実行します。Xcodeのバージョンによってメニュー名や配置が多少異なる場合があります。

解決方法5:Package.resolvedを確認する

古いリポジトリURLや取得不能なrevisionがPackage.resolvedに固定されている場合があります。チーム開発では勝手に削除する前に差分を確認してください。必要に応じて依存関係を再解決します。

xcodebuild -resolvePackageDependencies -project MyApp.xcodeproj -scheme MyApp

解決方法6:リポジトリのアクセス権を確認する

Organization配下のPrivate Repositoryでは、招待の承認、Teamへの所属、SSO認証、トークンのRepository権限などが必要になる場合があります。ブラウザで表示できるだけでなく、Git clone相当の読み取り権限があることを確認してください。

CIで発生する場合

ローカルでは成功しCIだけでrepository not foundになる場合、CI環境に認証情報が渡されていない可能性があります。SSHキー、Deploy Key、アクセストークン、Keychain設定などをCI側で確認します。秘密情報をPackage.swiftやリポジトリURLへ直接埋め込まないでください。

注意点

repository not foundは、実際にはリポジトリが存在していても、アクセス権のないユーザーに対してセキュリティ上「存在しない」ように返される場合があります。そのため、URLが正しい場合は認証と権限を重点的に確認してください。

キャッシュ削除やPackage.resolvedの削除だけで直そうとせず、まずgit ls-remoteでリポジトリへ直接アクセスできるかを確認すると原因を切り分けやすくなります。

まとめ

Xcode Swift Packageの「repository not found」は、最初にRepository URL、次にGit認証、その次にアクセス権を確認するのが基本です。Gitコマンドで取得できるのにXcodeだけ失敗する場合は、Package Cacheのリセットや依存関係の再解決を試します。Private RepositoryではHTTPSトークンやSSHキー、Organization権限、CIの認証設定まで確認すると解決しやすくなります。