R 包指南
本文档涵盖了为 R 包编写 PKGBUILD 的标准和指南。大部分信息可以从包的 DESCRIPTION 文件中获得。您可以通过在 R 中运行 tools::CRAN_package_db() 来获取大部分信息。您也可以访问 CRAN、Bioconductor 链接 1 和 Bioconductor 链接 2 来获取所有 R 包的信息。
包命名
包的命名应为 r-pkgname,其中 pkgname 取自 DESCRIPTION 文件中的 Package 字段。包名应为小写。
包版本
从 Version 字段获取。R 允许包版本包含冒号和连字符,这在 PKGBUILD 中是不允许的。将它们转换为句点或下划线。
Arch
请参阅 PKGBUILD#arch。如果包的 CRAN 网页显示 NeedsCompilation: yes,则它很可能是特定于体系结构的。否则,很可能不是。
依赖
包的 DESCRIPTION 文件中 Depends、Imports 或 LinkingTo 字段列出的 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.gz 或 https://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 仓库。