32 位 – CLR – CMake – DKMS – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – 交叉编译工具 – KDE – Lisp – Meson – MinGW – 内核模块 – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine – 字体
本文档涵盖了为 R 软件包编写 PKGBUILD 的标准和指南。大多数信息可以通过查看软件包的 DESCRIPTION 文件获得。在 R 中运行 tools::CRAN_package_db() 可以获得大部分信息。您还可以访问 CRAN、Bioconductor link1与Bioconductor link2,了解所有 R 软件包的信息。
软件包命名
软件包应命名为 r-pkgname,其中 pkgname 取自 DESCRIPTION 文件中的Package字段。软件包名称应小写。
软件包版本号
从Version字段中获取。R 允许软件包在版本号中使用冒号和连字符,但在 PKGBUILD 中不允许。将其转换为句号或下划线。
Arch
请参见 PKGBUILD#arch。如果软件包的 CRAN 网页上有 NeedsCompilation: yes,那么它很可能是特定架构的。否则,很可能不是,参见 PKGBUILD#arch。
依赖
在软件包 DESCRIPTION 文件的Depends、Imports或 LinkingTo 字段中列出的 R 软件包应列在依赖项下。
Suggests 中列出的 R 软件包应列为 optdepends。
有些软件包需要外部工具,这些工具列在 SystemRequirements 下。
某些软件包需要依赖 gcc-fortran包,但它并不总是列在 DESCRIPTION 文件中。
来源
CRAN 上的所有 R 软件包都可以在网站 https://cran.r-project.org/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.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 软件源。