跳至內容
出自 Arch Linux 中文维基
Arch 打包準則

32 位CLRCMakeDKMSEclipseElectronFree PascalGNOMEGoHaskellJava交叉編譯工具KDELispMesonMinGW內核模塊Node.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 軟體源。