ある日、Homebrew を使っていると以下のようなエラーに見舞われた。 なるほど組織などでプロキシを使ってインターネットにアクセスしていると、送信元 IP アドレスが同一になるため GitHub API の利用制限に引っかかりやすいようだ。
$ brew search direnv direnv Error: GitHub API rate limit exceeded for XXX.XXX.XXX.XXX. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) Try again in 40 minutes 36 seconds, or create an personal access token: https://github.com/settings/tokens and then set the token as: HOMEBREW_GITHUB_API_TOKEN
API の残り利用可能回数は以下のようにして調べることができる。 確かに、もう使うことができないようだ。 ちなみに、この利用回数の確認でも呼び出し回数を一回分消費する。
$ curl -sS -i https://api.github.com/users/whatever | grep X-RateLimit-Remaining: X-RateLimit-Remaining: 0
GitHub API Token を作る
この問題を回避するには、エラーメッセージにもあるようにユーザで個別に専用の API Token を使ってやれば良い。
GitHub のユーザは既に作成済みであると仮定しておく。 まずは Settings 画面から Personal access tokens を選択して、Generate new token ボタンを押す。
Token に適当な名前を付けて Generate token ボタンを押す。
作成されたトークンをコピーする。
トークンを環境変数に設定する
先ほどコピーしたトークンを、環境変数 HOMEBREW_GITHUB_API_TOKEN に設定する。 シェルの設定ファイル (.zshrc など) に入れておくと良い。
$ export HOMEBREW_GITHUB_API_TOKEN=XXX
トークンの残り API 利用回数は以下のようにして調べることができる。
$ curl -sS -i -H "Authorization: token XXX" https://api.github.com/users/whatever | grep X-RateLimit-Remaining: X-RateLimit-Remaining: 4999
これで Homebrew コマンドの API 利用制限に引っかかることはもうないだろう。
$ brew search direnv direnv
めでたしめでたし。