リンクをコピーしました

ある日、いつものように、
git pull など git コマンドを実行したときに、急に次のような表示がでました。

You have not agreed to the Xcode and Apple SDKs license. You must agree to the license below in order to use Xcode.
Press enter to display the license:

あれ、なんかどっかで見たような。
何が起きているのか、どうすればいいのかをまとめて見ました。

どういうものか

macOS に最初から見える git は、多くの環境で Xcode か Xcode Command Line Tools(CLT)経由のツール群に乗っています。
そのツールを使う前に、「Xcode and Apple SDKs」の利用許諾への同意が求められることがあります。

僕の場合は git pull のタイミングで出ましたが、同意していない状態だと、同じ系統のコマンドでも同じメッセージになり得ます。

よくあるきっかけは次のとおりです。

  • Xcode や Command Line Tools を新規インストールした直後
  • macOS や Xcode をアップデートしたあと(新しいライセンスにまだ同意していないとき)
  • ずっと同意していなかったが、たまたま git を触ったタイミングで初めてチェックが走ったとき

Apple の技術ノートでは、Command Line Tools はフルの Xcode とは別の小さいパッケージで、/Library/Developer/CommandLineTools に入り、xcode-select --install でも入れられる、と説明されています(TN2339)。
一方、xcodebuild など一部のコマンドは Xcode アプリ側に含まれ、アクティブな developer directory を Xcode に向ける必要がある、という公式のページもあります(Xcode command-line tool reference)。


いまの開発ディレクトリを確認する

同意コマンドの前に、どのツール一式が「アクティブ」かを見ておくと迷いが減ります。

xcode-select -p

よく見る結果のイメージです(環境によってパスは違います)。

xcode-select -p の例意味のざっくり
/Applications/Xcode.app/Contents/Developerフルの Xcode がアクティブ
/Library/Developer/CommandLineToolsCLT のみ(または CLT 側が選択されている)

切り替え自体は xcode-select の仕事で、複数の Xcode があるときの選び方も TN2339 に載っています。
僕がこの記事でやったのは、下のライセンス同意です。


フル Xcode/CLT のみ/別配布の git、どこまでこの記事が効くか

環境この記事の手順との関係
フルの Xcode が入っていて、developer directory も Xcode 側sudo xcodebuild -license がそのまま使いやすい(僕が通ったパターンに近い)
CLT のみ(xcode-select -p が CommandLineTools)ライセンス同意は必要になり得るが、xcodebuild は「Xcode をアクティブな developer directory にする」前提の公式説明がある。CLT だけのとき xcodebuild -license が期待どおり動かない/別メッセージになることがあり、その場合は Xcode のインストールや developer directory の切り替えを先に確認する
Homebrew など 別配布の git を PATH で使っているApple 同梱の git/CLT 経由とは別物になりやすい。この画面そのものが出ないこともあれば、別のツールが同じライセンスを要求することもある。まず which gitxcode-select -p で「今どれを叩いているか」を見る

この記事の再現範囲は、ターミナルで上記の英語メッセージが出たあと、sudo xcodebuild -license で進めたケースです。
macOS/Xcode の具体バージョンはメモし切れていないので、同じ文言でも環境差はあり得ます。


どうすればいいか

方法1: ライセンスを同意する(推奨・一番簡単)

ターミナルで次を実行します。

sudo xcodebuild -license
  1. パスワード入力
  2. Enter でライセンス文を表示
  3. Space で末尾まで進む
  4. 最後に agree と入力して Enter(以下の画像は承諾する前)
terminal画像

これで「Xcode and Apple SDKs」の利用許諾に同意したことになり、git も通常どおり使えるようになります。

方法2: 一発で同意する(内容を読まずに済ませる場合)

内容を読まずに同意だけしたい場合は以下で完了します。

sudo xcodebuild -license accept

まとめ

いきなり出たので、あれって?
前にもなったようなやつでしたが、ここにまとめて見ました。

同じ文言でも、フル Xcode なのか CLT だけなのか、使っている git が Apple 経由なのかで手順の効き方が変わります。
まずはエラー全文と xcode-select -p を手がかりにすると早いです。

それでは!

参考