「R パッケージガイドライン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:パッケージ開発 en:R package guidelines pt:R package guidelines {{Package Guidelines}} このドキュメントでは R パッケージの...」)
 
(→‎サンプル: ヒントとテクニックを翻訳して追加)
 
(同じ利用者による、間の1版が非表示)
27行目: 27行目:
   
 
== ビルドとパッケージ化 ==
 
== ビルドとパッケージ化 ==
R にはパッケージのビルド機能があるため、ビルド済みのパッケージをインストール・コピーするだけです:
 
   
  +
R にはパッケージを構築するためのサポートが組み込まれています。MRAN、CRAN、Bioconductor の 3 つのリポジトリ用の {{ic|PKGBUILD}} の 3 つのテンプレートを次に示します。MRAN は CRAN のスナップショットミラーであり、このテンプレートを使用すると、古い場合でもパッケージをビルドできます。
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
 
}
 
   
== サンプル ==
+
=== MRAN ===
=== RcppEigen ===
 
   
  +
_cranname=
pkgname=r-rcppeigen
 
  +
_cranver=
pkgver=0.3.3.4.0
 
  +
_updatedate=YYYY-MM-DD
pkgrel=1
 
  +
pkgname=r-${_cranname,,}
pkgdesc="Rcpp Integration for the Eigen Templated Linear Algebra Library"
 
  +
pkgver=${_cranver//[:-]/.}
arch=('x86_64')
 
  +
pkgrel=1
url="https://cran.r-project.org/package=RcppEigen"
 
  +
pkgdesc=""
license=('GPL')
 
  +
arch=()
depends=('r' 'r-rcpp')
 
  +
url="<nowiki>https://cran.r-project.org/package=${_cranname}</nowiki>"
optdepends=('r-inline' 'r-runit' 'r-pkgkitten')
 
  +
license=()
source=("https://cran.r-project.org/src/contrib/RcppEigen_$pkgver.tar.gz")
 
  +
depends=(r)
md5sums=('78ee1ef7c6043efa875434ae5fcea2ec')
 
  +
makedepends=()
 
  +
optdepends=()
build(){
 
  +
source=("<nowiki>https://cran.microsoft.com/snapshot/${_updatedate}/src/contrib/${_cranname}_${_cranver}.tar.gz</nowiki>")
R CMD INSTALL RcppEigen_"$pkgver".tar.gz -l "$srcdir"
 
  +
sha256sums=('')
}
 
  +
package() {
 
  +
build() {
install -dm0755 "$pkgdir"/usr/lib/R/library
 
  +
R CMD INSTALL ${_cranname}_${_cranver}.tar.gz -l "${srcdir}"
cp -a --no-preserve=ownership RcppEigen "$pkgdir"/usr/lib/R/library
 
}
+
}
  +
  +
package() {
  +
install -dm0755 "${pkgdir}/usr/lib/R/library"
  +
  +
cp -a --no-preserve=ownership "${_cranname}" "${pkgdir}/usr/lib/R/library"
  +
}
   
=== XML ===
+
=== CRAN ===
pkgver で使用できない文字が使われている R パッケージの例:
 
   
  +
_cranname=
_cranver=3.98-1.11
 
  +
_cranver=
pkgname=r-xml
 
  +
pkgname=r-${_cranname,,}
pkgver=${_cranver//[:-]/.}
 
  +
pkgver=${_cranver//[:-]/.}
pkgrel=1
 
  +
pkgrel=1
pkgdesc='Tools for Parsing and Generating XML Within R and S-Plus'
 
  +
pkgdesc=""
arch=('x86_64')
 
  +
arch=()
url='https://cran.r-project.org/package=XML'
 
  +
url="<nowiki>https://cran.r-project.org/package=${_cranname}</nowiki>"
license=('BSD')
 
  +
license=()
depends=('r' 'libxml2')
 
  +
depends=(r)
optdepends=('r-bitops' 'r-rcurl')
 
  +
makedepends=()
replaces=('r-cran-xml')
 
  +
optdepends=()
source=("https://cran.r-project.org/src/contrib/XML_$_cranver.tar.gz")
 
  +
source=("<nowiki>https://cran.r-project.org/src/contrib/${_cranname}_${_cranver}.tar.gz</nowiki>")
md5sums=('6c67f5730ada3456372520773a920b8e')
 
  +
sha256sums=('')
 
  +
build(){
 
  +
build() {
R CMD INSTALL XML_"$_cranver".tar.gz -l "$srcdir"
 
  +
R CMD INSTALL ${_cranname}_${_cranver}.tar.gz -l "${srcdir}"
}
 
  +
}
package() {
 
  +
install -dm0755 "$pkgdir"/usr/lib/R/library
 
  +
package() {
cp -a --no-preserve=ownership XML "$pkgdir"/usr/lib/R/library
 
  +
install -dm0755 "${pkgdir}/usr/lib/R/library"
}
 
  +
  +
cp -a --no-preserve=ownership "${_cranname}" "${pkgdir}/usr/lib/R/library"
  +
}
  +
  +
=== Bioconductor ===
  +
  +
_bcname=
  +
_bcver=
  +
pkgname=r-${_bcname,,}
  +
pkgver=${_bcver//[:-]/.}
  +
pkgrel=1
  +
pkgdesc=""
  +
arch=()
  +
url="<nowiki>https://bioconductor.org/packages/${_bcname}</nowiki>"
  +
license=()
  +
depends=(r)
  +
makedepends=()
  +
optdepends=()
  +
source=("<nowiki>https://bioconductor.org/packages/release/bioc/src/contrib/${_bcname}_${_bcver}.tar.gz</nowiki>")
  +
# or
  +
# source=("<nowiki>https://bioconductor.org/packages/release/data/annotation/src/contrib/${_bcname}_${_bcver}.tar.gz</nowiki>")
  +
sha256sums=('')
  +
  +
build() {
  +
R CMD INSTALL ${_bcname}_${_bcver}.tar.gz -l "${srcdir}"
  +
}
  +
  +
package() {
  +
install -dm0755 "${pkgdir}/usr/lib/R/library"
  +
  +
cp -a --no-preserve=ownership "${_bcname}" "${pkgdir}/usr/lib/R/library"
  +
}
  +
  +
== ヒントとテクニック ==
  +
  +
=== Bioconductor リポジトリ ===
  +
  +
bioconductor パッケージに簡単にアクセスするには、[https://wiki.archlinux.org/title/Unofficial_user_repositories#bioarchlinux bioarchlinux] リポジトリを追加してください。

2023年6月28日 (水) 17:47時点における最新版

このドキュメントでは 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 にはパッケージを構築するためのサポートが組み込まれています。MRAN、CRAN、Bioconductor の 3 つのリポジトリ用の PKGBUILD の 3 つのテンプレートを次に示します。MRAN は CRAN のスナップショットミラーであり、このテンプレートを使用すると、古い場合でもパッケージをビルドできます。

MRAN

_cranname=
_cranver=
_updatedate=YYYY-MM-DD
pkgname=r-${_cranname,,}
pkgver=${_cranver//[:-]/.}
pkgrel=1
pkgdesc=""
arch=()
url="https://cran.r-project.org/package=${_cranname}"
license=()
depends=(r)
makedepends=()
optdepends=()
source=("https://cran.microsoft.com/snapshot/${_updatedate}/src/contrib/${_cranname}_${_cranver}.tar.gz")
sha256sums=()

build() {
  R CMD INSTALL ${_cranname}_${_cranver}.tar.gz -l "${srcdir}"
}

package() {
  install -dm0755 "${pkgdir}/usr/lib/R/library"

  cp -a --no-preserve=ownership "${_cranname}" "${pkgdir}/usr/lib/R/library"
}

CRAN

_cranname=
_cranver=
pkgname=r-${_cranname,,}
pkgver=${_cranver//[:-]/.}
pkgrel=1
pkgdesc=""
arch=()
url="https://cran.r-project.org/package=${_cranname}"
license=()
depends=(r)
makedepends=()
optdepends=()
source=("https://cran.r-project.org/src/contrib/${_cranname}_${_cranver}.tar.gz")
sha256sums=()

build() {
  R CMD INSTALL ${_cranname}_${_cranver}.tar.gz -l "${srcdir}"
}

package() {
  install -dm0755 "${pkgdir}/usr/lib/R/library"

  cp -a --no-preserve=ownership "${_cranname}" "${pkgdir}/usr/lib/R/library"
}

Bioconductor

_bcname=
_bcver=
pkgname=r-${_bcname,,}
pkgver=${_bcver//[:-]/.}
pkgrel=1
pkgdesc=""
arch=()
url="https://bioconductor.org/packages/${_bcname}"
license=()
depends=(r)
makedepends=()
optdepends=()
source=("https://bioconductor.org/packages/release/bioc/src/contrib/${_bcname}_${_bcver}.tar.gz")
# or
# source=("https://bioconductor.org/packages/release/data/annotation/src/contrib/${_bcname}_${_bcver}.tar.gz")
sha256sums=()

build() {
  R CMD INSTALL ${_bcname}_${_bcver}.tar.gz -l "${srcdir}"
}

package() {
  install -dm0755 "${pkgdir}/usr/lib/R/library"
  
  cp -a --no-preserve=ownership "${_bcname}" "${pkgdir}/usr/lib/R/library"
}

ヒントとテクニック

Bioconductor リポジトリ

bioconductor パッケージに簡単にアクセスするには、bioarchlinux リポジトリを追加してください。