TL;DR
GitHub上の R パッケージのインストールは以下のようにコマンド一発でできる.
ブランチの指定や force = TRUE による強制インストールなどいろいろできる.
source("https://install-github.me/username/repo[/subdir][@ref|#pull]")- 1つのパッケージのみインストールする時用.
source("https://raw.githubusercontent.com/r-lib/remotes/master/install-github.R")$value(...)...にはrmeotes::instlal_github()が受け取る引数を指定.- 複数のパッケージも指定可能.
はじめに
一般に GitHub 上のパッケージをインストールするには remotes::install_github() を使う.devtools::install_github もあるが,これは remotes::install_github() を流用しているに過ぎない.
あと,devtools は色んなパッケージに依存していて,依存パッケージをdevtools::install_github でインストールしようとすると事故ることがある.
たしかそんな話をy氏がしていたはずなんだけれど,私のググル力が足りなかった.
まあ remotes を使うのが無難そう.
初めて remotes パッケージを使って tidyverse/tidyverse をインストールしようとすると,以下のようにコマンドが2つは必要になる.
install.packages("remotes")
remotes::install_github("tidyverse/tidyverse")
これは開発者にも利用者にも優しくない.
開発者は書くべきことが増える.
README に「インストールにはコマンドをコピペしてくれ」と書くだけでは足りず,「remotes パッケージをインストールしていない場合はまずインストールしてね」なんて注釈も書き足すことになるだろう.
利用者は読むべきことが増えるし,冗長な README はなんとなく閉じたくなる.
それに remotes パッケージは CRAN にあるけどもし GitHub からインストールせざるをえなかったらどうするの?remotes をインストールするために remotes をインストールしないといけなくてあああああってなるの?
(※勿論.ローカルに落とせばごにょごにょできる)
公式からの素敵なお知らせ
remotes パッケージの README を読むと,以下のようなコマンドをコピペするだけで GitHub 上の remotes をインストールできる
(https://github.com/r-lib/remotes#installation).
source("https://install-github.me/r-lib/remotes")
または
source("https://raw.githubusercontent.com/r-lib/remotes/master/install-github.R")$value("r-lib/remotes")
大体の人はこれで満足するかも?
ちょっと深入りしてみる
ソースコードにアクセスしてみると,どうやらこいつは remotes::install_github のラッパーらしい
(https://raw.githubusercontent.com/r-lib/remotes/master/install-github.R).
つまり,?remotes::install_github に載っていることは一通りできてしまう.
例えば,
username/repo[/subdir][@ref|#pull]といった記法による- サブディレクトリに存在するパッケージのインストール,
- 特定のブランチやタグからインストール
r-lib/remotes@masterr-lib/[email protected]
- 特定のプルリクからインストール
r-lib/reomtes#266
dependencies = TRUEにより依存パッケージを全てインストールupgrade = neverで既存パッケージのアップグレードを行わない
など.
https://install-github.me 経由でのインストールでは1番の機能しか利用できない.
Atusy's blog