R 軟體打包準則 - Arch Linux 中文维基

跳至內容

# R 軟體打包準則

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 R package guidelines，最近一次同步於 2024-5-11，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Arch 打包準則

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 – Shell – 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 軟體源。

分類：​

- Arch 打包準則

R 軟體打包準則
新增話題