跳转至内容

R 包指南

来自 ArchWiki
Arch 软件包指南

32 位CLRCMake交叉编译DKMSEclipse 插件Electron字体Free PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.js非免费应用OCamlPerlPHPPythonRRubyRust - 安全ShellVCSWeb 应用Wine

本文档涵盖了为 R 包编写 PKGBUILD 的标准和指南。大部分信息可以从包的 DESCRIPTION 文件中获得。您可以通过在 R 中运行 tools::CRAN_package_db() 来获取大部分信息。您也可以访问 CRANBioconductor 链接 1Bioconductor 链接 2 来获取所有 R 包的信息。

包命名

包的命名应为 r-pkgname,其中 pkgname 取自 DESCRIPTION 文件中的 Package 字段。包名应为小写。

包版本

Version 字段获取。R 允许包版本包含冒号和连字符,这在 PKGBUILD 中是不允许的。将它们转换为句点或下划线。

Arch

请参阅 PKGBUILD#arch。如果包的 CRAN 网页显示 NeedsCompilation: yes,则它很可能是特定于体系结构的。否则,很可能不是。

依赖

包的 DESCRIPTION 文件中 DependsImportsLinkingTo 字段列出的 R 包应在 depends 下列出。

Suggests 字段列出的 R 包应作为 optdepends 列出。

某些包需要外部工具,这些工具在 SystemRequirements 下列出。

gcc-fortran 是某些包的 depends 所必需的,但并不总是在 DESCRIPTION 文件中列出。

Source(生效配置)

CRAN 上所有可用的 R 包都可以在网站 https://cran.r-project.cn/src/contrib/cranname_cranversion.tar.gz 上找到,其中 cranname 是包在 CRAN 上的名称,cranversion 是 CRAN 版本。

Bioconductor 上可用的 R 包可以在网站 https://bioconductor.org/packages/release/bioc/src/contrib/bcname_bcname.tar.gzhttps://bioconductor.org/packages/release/data/annotation/src/contrib/bcname_bcname.tar.gz 上找到,其中 bcname 是包在 Bioconductor 上的名称,bcver 是版本。

构建和打包

R 内置了对构建包的支持。以下是三个仓库的 PKGBUILD 模板:MRAN、CRAN 和 Bioconductor。MRAN 是 CRAN 的快照镜像,使用此模板将允许包即使在过时的情况下也能成功构建。

MRAN

_cranname=
_cranver=
_updatedate=YYYY-MM-DD
pkgname=r-${_cranname,,}
pkgver=${_cranver//[:-]/.}
pkgrel=1
pkgdesc=""
arch=()
url="https://cran.r-project.cn/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.cn/package=${_cranname}"
license=()
depends=(r)
makedepends=()
optdepends=()
source=("https://cran.r-project.cn/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 仓库。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.