R 软件打包准则

来自 Arch Linux 中文维基
Arch 打包准则

32 位CLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSWebWine

本文档涵盖了为 R 软件包编写 PKGBUILD 的标准和指南。大多数信息可以通过查看软件包的 DESCRIPTION 文件获得。在 R 中运行 tools::CRAN_package_db() 可以获得大部分信息。您还可以访问 CRANBioconductor link1Bioconductor link2,了解所有 R 软件包的信息。

软件包命名[编辑 | 编辑源代码]

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

软件包版本号[编辑 | 编辑源代码]

Version字段中获取。R 允许软件包在版本号中使用冒号和连字符,但在 PKGBUILD 中不允许。将其转换为句号或下划线。

Arch[编辑 | 编辑源代码]

请参见 PKGBUILD#arch。如果软件包的 CRAN 网页上有 NeedsCompilation: yes,那么它很可能是特定架构的。否则,很可能不是,参见 PKGBUILD#arch

依赖[编辑 | 编辑源代码]

在软件包 DESCRIPTION 文件的DependsImportsLinkingTo 字段中列出的 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.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.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 软件源。