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@master
r-lib/[email protected]
- 特定のプルリクからインストール
r-lib/reomtes#266
dependencies = TRUE
により依存パッケージを全てインストールupgrade = never
で既存パッケージのアップグレードを行わない
など.
https://install-github.me 経由でのインストールでは1番の機能しか利用できない.