# Devtools dependencies

#### Jim Hester, Hadley Wickham

#### 2017-11-08

# Package remotes

Devtools version 1.9 supports package dependency installation for packages not yet in a standard package repository such as CRAN or Bioconductor.

You can mark any regular dependency defined in the `Depends`, `Imports`, `Suggests` or `Enhances` fields as being installed from a remote location by adding the remote location to `Remotes` in your `DESCRIPTION` file. This will cause devtools to download and install them prior to installing your package (so they won’t be installed from CRAN).

The remote dependencies specified in `Remotes` should be described in the following form.

    Remotes: [type::]<Repository>, [type2::]<Repository2>

The `type` is an optional parameter. If the type is missing the default is to install from GitHub. Additional remote dependencies should be separated by commas, just like normal dependencies elsewhere in the `DESCRIPTION` file.

### Github

Because github is the most commonly used unofficial package distribution in R, it’s the default:

    Remotes: hadley/testthat

You can also specify a specific hash, tag, or pull request (using the same syntax as `install_github()` if you want a particular commit. Otherwise the latest commit on the master branch is used.

    Remotes: hadley/httr@v0.4,
      klutometis/roxygen#142,
      hadley/testthat@c67018fa4970

A type of ‘github’ can be specified, but is not required

    Remotes: github::hadley/ggplot2

### Other sources

All of the currently supported install sources are available, see the ‘See Also’ section in `?install` for a complete list.

    # Git
    Remotes: git::https://github.com/hadley/ggplot2.git

    # Bitbucket
    Remotes: bitbucket::sulab/mygene.r@default, dannavarro/lsr-package

    # Bioconductor
    Remotes: bioc::3.3/SummarizedExperiment#117513, bioc::release/Biobase

    # SVN
    Remotes: svn::https://github.com/hadley/stringr

    # URL
    Remotes: url::https://github.com/hadley/stringr/archive/master.zip

    # Local
    Remotes: local::/pkgs/testthat

    # Gitorious
    Remotes: gitorious::r-mpc-package/r-mpc-package

### CRAN submission

When you submit your package to CRAN, all of its dependencies must also be available on CRAN. For this reason, `release()` will warn you if you try to release a package with a `Remotes` field.