R パッケージガイドライン
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このドキュメントでは R パッケージの PKGBUILD を書く時の決まりとガイドラインを記載しています。ほとんどの情報はパッケージの DESCRIPTION
ファイルを見ることで得ることができます。tools::CRAN_package_db()
を実行することで R の中から取得できます。
パッケージの命名
パッケージは r-pkgname
という名前にしてください。pkgname は DESCRIPTION
ファイルの Package
フィールドの値を使います。パッケージ名は小文字でなければなりません。
パッケージのバージョン
Version
フィールドの値を使ってください。R ではバージョンにコロンとハイフンが使えますが、PKGBUILD では使用できません。ピリオドかアンダースコアに置き換えてください。
アーキテクチャ
PKGBUILD#arch を参照。パッケージの CRAN ウェブページで NeedsCompilation: yes
となっている場合、アーキテクチャに依存します。それ以外の場合は依存しません。
依存関係
パッケージの DESCRIPTION
ファイル の Depends
, Imports
, LinkingTo
フィールドに記載されている R パッケージは depends に追加してください。
Suggests
に並んでいる R パッケージは optdepends に追加してください。
一部のパッケージは外部のツールを必要とすることがあり、それらは SystemRequirements
に記載されています。
パッケージによっては makedepends に gcc-fortran が必要ですが常に DESCRIPTION
ファイルにそのことが記載されているとは限りません。
ソース
CRAN の全ての R パッケージは https://cran.r-project.org/src/contrib/cranname_cranversion.tar.gz
から取得できます。cranname は CRAN におけるパッケージ名、cranversion は cran のバージョンに置き換えてください。
ビルドとパッケージ化
R にはパッケージのビルド機能があるため、ビルド済みのパッケージをインストール・コピーするだけです:
build(){ R CMD INSTALL pkg.tar.gz -l "$srcdir" } package() { install -dm0775 "$pkgdir"/usr/lib/R/library cp -a --no-preserve=ownership pkgname "$pkgdir"/usr/lib/R/library }
サンプル
RcppEigen
pkgname=r-rcppeigen pkgver=0.3.3.4.0 pkgrel=1 pkgdesc="Rcpp Integration for the Eigen Templated Linear Algebra Library" arch=('x86_64') url="https://cran.r-project.org/package=RcppEigen" license=('GPL') depends=('r' 'r-rcpp') optdepends=('r-inline' 'r-runit' 'r-pkgkitten') source=("https://cran.r-project.org/src/contrib/RcppEigen_$pkgver.tar.gz") md5sums=('78ee1ef7c6043efa875434ae5fcea2ec') build(){ R CMD INSTALL RcppEigen_"$pkgver".tar.gz -l "$srcdir" } package() { install -dm0755 "$pkgdir"/usr/lib/R/library cp -a --no-preserve=ownership RcppEigen "$pkgdir"/usr/lib/R/library }
XML
pkgver で使用できない文字が使われている R パッケージの例:
_cranver=3.98-1.11 pkgname=r-xml pkgver=${_cranver//[:-]/.} pkgrel=1 pkgdesc='Tools for Parsing and Generating XML Within R and S-Plus' arch=('x86_64') url='https://cran.r-project.org/package=XML' license=('BSD') depends=('r' 'libxml2') optdepends=('r-bitops' 'r-rcurl') replaces=('r-cran-xml') source=("https://cran.r-project.org/src/contrib/XML_$_cranver.tar.gz") md5sums=('6c67f5730ada3456372520773a920b8e') build(){ R CMD INSTALL XML_"$_cranver".tar.gz -l "$srcdir" } package() { install -dm0755 "$pkgdir"/usr/lib/R/library cp -a --no-preserve=ownership XML "$pkgdir"/usr/lib/R/library }