R 软件包指南

出自 ArchWiki
Arch 软件包指南

32 位CLRCMake交叉编译DKMSEclipseElectron字体Free PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.js非自由软件OCamlPerlPHPPythonRRubyRust - 安全ShellVCSWebWine

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

软件包命名

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

软件包版本

Version 字段获取。R 允许软件包版本包含冒号和连字符,但在 PKGBUILD 中不允许这样做。将这些字符转换为句点或下划线。

架构

请参阅 PKGBUILD#arch。如果软件包的 CRAN 网页有 NeedsCompilation: yes,则很可能与架构相关。否则,很可能与架构无关。

依赖

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

Suggests 中列出的 R 软件包应列为 optdepends

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

gcc-fortran 作为某些软件包的 depends 是必需的,但并非总是列在 DESCRIPTION 文件中。

来源

CRAN 上的所有 R 软件包都可以在网站 https://cran.r-project.org.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 内置了构建软件包的支持。以下是针对 MRAN、CRAN 和 Bioconductor 三个仓库的 PKGBUILD 模板。MRAN 是 CRAN 的快照镜像,使用此模板即使软件包过时也可以构建。

MRAN

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