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 软件打包准则
添加话题