RStudioのコンソールから、とあるパッケージを練習がてらインストールしようとしたら、下の画像のエラーがでた。
これの解決策の例を以下に示す。
結論
GitHubでパーソナルアクセストークンを生成し、RSessionの環境変数に設定すればOK。
原因として考えられる問題
1. GitHubの認証情報が正しくない
GitHubにログインできるユーザー名とパスワードが正しく設定されていない可能性がある。
2. 個人用のアクセストークンが設定されていない
GitHubのアカウントで個人アクセストークンを生成し、環境変数に設定する必要がある。
3. レート制限に達している
GitHubのAPIにアクセスする際のレート制限に達している可能性がある。
解決策
1. 認証情報の確認
1. GitHubのユーザー名とパスワードが正しく設定されていることを確認する
2. 必要に応じて、ユーザー名とパスワードを更新する
2. 個人アクセストークンの設定
1. GitHubのアカウントで個人アクセストークンを作成する
2. 作成したトークンを環境変数GITHUB_PATに設定する
3. RでREMOTES_GITHUB_PAT環境変数を使うように設定する
3. レート制限の確認
1. GitHubのAPIレート制限を確認する
2. 制限に達している場合は、しばらく待ってから再試行する
今回は2番目の方法を試してみた。
実際にやった手順
1. 『GitHub』にサインインする
2. Dashboard画面から、「Settings」→「Developer Settings」の順にアクセスする
3. 「Personal access tokens」から、生成するトークンを選択する
現在トークンは、Classic版 と Beta版(Fine-grained tokens) の2種類があり、
どちらを使えば良いかですが、以下のようなアドバイスが一般的なようです:
Classic版のパーソナルアクセストークンは、まだ多くのツールやライブラリでサポートされているため、選ぶ場合が多いです。
Fine-grained版は、セキュリティ性が高く、必要最小限の権限設定ができるため、より高度なセキュリティが求められる場合に適しています。
Rパッケージのインストールの場合、Classic版のパーソナルアクセストークンを使うのが無難だと思われます。多くのユーザが使用しており、RのライブラリでもClassic版をサポートしているためです。
ただし、Fine-grained版を使いたい場合は、ドキュメントを確認してR側での対応状況を確認する必要があります。最新の情報を確認しながら、用途に応じて適切なトークンを選択することをおすすめします。
4. 右側の「Generate new token」からもう一度Classicの方を選び、トークン新規生成画面を表示させる
5. 「Note」欄に生成するトークンの説明を、「Expiration」欄で有効期限を設定する
※デフォルトの"30 days"でも良いが、今回のように練習としてパッケージをインストールするためだけに使用したいなら、最短の"7 days"で十分だ。これ以下の「Select scopes」の欄にたくさんのチェック項目があるが、必須入力箇所は「Expiration」部だけなので、よく分からない場合は未記入で問題ない。
6. 下部の[Generate token]ボタンをクリックし、生成されたトークンのコードをコピーする
7. 『RStudio』に戻り、以下のコマンドをコンソールで実行する
Sys.setenv(GITHUB_PAT = "my_github_pat_here")
my_github_pat_here
の部分に、6.でコピーしておいたトークンのコードを貼り付ける。このコマンドが、RSessionの環境変数にGitHubのパーソナルアクセストークンを設定する処理に該当する。
8. 再度、以下のコマンドで目的のパッケージのインストールを試す
devtools::install_github("owner/repo")
owner
部に作成者のGitHubのIDを、repo
部にパッケージ名をそれぞれ入力する。
これで、目的としていたRパッケージ(と、それに付随する必要なパッケージ群)を、「Bad credentials(悪い証明書)」というエラーが解消され、見事にインストールすることができた。
もし上記の方法でも解決しない場合は...
- Rコンソールで
devtools::install_github()
を実行する代わりに、Rスクリプトを作成してインストールする - Rのバージョンやパッケージ名、プロキシ設定、ネットワーク環境などを確認する
などをやってみる。
参考にした記事となるかもしれない記事一覧
- Error using
install_github()
andinstall_deps()
: Error: Failed to install 'unknown package' from GitHub. HTTP error 401. Bad credentials. · Issue #659 · r-lib/remotes - Error using
install_github()
: HTTP error 401. Bad credentials. · Issue #641 · r-lib/remotes - r - Failed to install 'unknown package' from GitHub - Stack Overflow
- Error Failed to install 'unknown package' from GitHub Bad credentials Rate limit - General - Posit Community
- http 401 error in
devtools::install_deps(".")
when run from R console, works in RStudio · Issue #330 · r-lib/remotes - GithubからRのパッケージをインストールする方法
- unable to install packages from GitHub - General - Posit Community
- Rでパッケージがインストールできない時の対処法メモ #Ubuntu - Qiita