Current Bioconductor packages are available on a ‘release’ version intended for every-day use, and a ‘devel’ version where new features are introduced. A new release version is created every six months. Using the BiocManager package helps users install packages from the same release.
We recommend using the current ‘release’ version of R. Follow instructions for installing R.
Use standard R installation procedures to install the BiocManager package. This command is requried only once per R installation.
install.packages("BiocManager", repos = "https://cloud.r-project.org")
Install Bioconductor (or CRAN) packages with
Installed packages can be updated to their current version with
To install CRAN package versions consistent with previous releases of Bioconductor, use the BiocArchive package. BiocArchive enables contemporary installations of CRAN packages with out-of-date Bioconductor releases using Posit Package Manager.
version() to discover the version of
Bioconductor currently in use.
Bioconductor packages work best when they are all from the
same release. Use
valid() to identify packages that are
out-of-date or from unexpected versions.
valid() returns an object that can be queried for
detailed information about invalid packages, as illustrated in the
following screen capture
> v <- valid() Warning message: 6 packages out-of-date; 0 packages too new > names(v)  "out_of_date" "too_new" > head(v$out_of_date, 2) Package LibPath bit "bit" "/home/mtmorgan/R/x86_64-pc-linux-gnu-library/3.5-Bioc-3.8" ff "ff" "/home/mtmorgan/R/x86_64-pc-linux-gnu-library/3.5-Bioc-3.8" Installed Built ReposVer Repository bit "1.1-12" "3.5.0" "1.1-13" "https://cloud.r-project.org/src/contrib" ff "2.2-13" "3.5.0" "2.2-14" "https://cloud.r-project.org/src/contrib" >
Packages available for your version of Bioconductor can be
available(); the first argument can be used
to filter package names based on a regular expression, e.g., ‘BSgenome’
package available for Homo sapiens
avail <- BiocManager::available() length(avail) # all CRAN & Bioconductor packages BiocManager::available("BSgenome.Hsapiens") # BSgenome.Hsapiens.* packages
Questions about installing and managing Bioconductor packages should be addressed to the Bioconductor support site.
version= argument to update all packages to a
specific Bioconductor version
Bioconductor versions are associated with specific R versions, as summarized here. Attempting to install a version of Bioconductor that is not supported by the version of R in use leads to an error; using the most recent version of Bioconductor may require installing a new version of R.
> BiocManager::install(version="3.9") Error: Bioconductor version '3.9' requires R version '3.6'; see https://bioconductor.org/install
A special version,
version="devel", allows use of
Bioconductor packages that are under development.
It is possible to have multiple versions of Bioconductor installed on the same computer. A best practice is to create an initial R installation. Then create and use a library for each version of Bioconductor. The library will contain all Bioconductor, CRAN, and other packages for that version of Bioconductor. We illustrate the process assuming use of Bioconductor version 3.7, available using R version 3.5
Create a directory to contain the library (replace
USER_NAME with your user name on Windows)
Set the environment variable
R_LIBS_USER to this
directory, and invoke R. Command line examples for Linux
cmd /C "set R_LIBS_USER=C:\Users\USER_NAME\Documents\R\3.5-Bioc-3.7 && R"
Once in R, confirm that the version-specific library path has been set
On Linux and macOS, create a bash alias to save typing, e.g.,
alias Bioc3.7='R_LIBS_USER=~/R/3.5-Bioc-3.7 R'
alias Bioc3.7='R_LIBS_USER=~/Library/R/3.5-Bioc-3.7/library R'
Invoke these from the command line as
On Windows, create a shortcut. Go to My Computer and navigate to a directory that is in your PATH. Then right-click and choose New->Shortcut. In the “type the location of the item” box, put:
cmd /C "set R_LIBS_USER=C:\Users\USER_NAME\Documents\R\3.5-Bioc-3.7 && R"
Click “Next”. In the “Type a name for this shortcut” box, type
Offline use of BiocManager is possible for organizations and users that would like to provide access to internal repositories of Bioconductor packages while enforcing appropriate version checks between Bioconductor and R. For offline use, organizations and users require the following steps:
options( repos = c(CRAN_mirror = "file:///path/to/CRAN-mirror"), BioC_mirror = "file:///path/to/Bioc-mirror" )
Validate repository setting by reviewing the output of
Create an environment variable or option, e.g.,
options( BIOCONDUCTOR_ONLINE_VERSION_DIAGNOSIS = FALSE )
install.packages() to bootstrap the BiocManager
BiocManager can then be used for subsequent installations, e.g.,
BiocManager also expects to reference an online
configuration yaml file for Bioconductor version validation at
https://bioconductor.org/config.yaml. With offline use,
users are expected to either host this file locally or provide their
config.yaml version. The package allows either an
environment variable or R-specific option to locate this file, e.g.,
```r options( BIOCONDUCTOR_CONFIG_FILE = "file:///path/to/config.yaml" ) ```
BiocManager’s job is to make sure that all packages are installed from the same Bioconductor version, using compatible R and CRAN packages. However, R has an annual release cycle, whereas Bioconductor has a twice-yearly release cycle. Also, Bioconductor has a ‘devel’ branch where new packages and features are introduced, and a ‘release’ branch where bug fixes and relative stability are important; CRAN packages do not distinguish between devel and release branches.
In the past, one would install a Bioconductor package by
evaluating the command
read a file from the web. The file contained an installation script that
was smart enough to figure out what version of R and
Bioconductor were in use or appropriate for the person invoking
the script. Sourcing an executable script from the web is an obvious
Our solution is to use a CRAN package BiocManager, so that users install from pre-configured CRAN mirrors rather than typing in a URL and sourcing from the web.
But how does a CRAN package know what version of Bioconductor is in use? Can we use BiocManager? No, because we don’t have enough control over the version of BiocManager available on CRAN, e.g., everyone using the same version of R would get the same version of BiocManager and hence of Bioconductor. But there are two Bioconductor versions per R version, so that does not work!
BiocManager could write information to a cache on the user disk, but this is not a robust solution for a number of reasons. Is there any other way that R could keep track of version information? Yes, by installing a Bioconductor package (BiocVersion) whose sole purpose is to indicate the version of Bioconductor in use.
By default, BiocManager installs the BiocVersion package
corresponding to the most recent released version of
Bioconductor for the version of R in use. At the time
this section was written, the most recent version of R is R-3.6.1,
associated with Bioconductor release version 3.9. Hence on
first use of
BiocManager::install() we see BiocVersion
version 3.9.0 being installed.
> BiocManager::install() Bioconductor version 3.9 (BiocManager 1.30.4), R 3.6.1 Patched (2019-07-06 r76792) Installing package(s) 'BiocVersion' trying URL 'https://bioconductor.org/packages/3.9/bioc/src/contrib/\ BiocVersion_3.9.0.tar.gz' ...
Requesting a specific version of Bioconductor updates, if possible, the BiocVersion package.
> ## 3.10 is available for R-3.6 > BiocManager::install(version="3.10") Upgrade 3 packages to Bioconductor version '3.10'? [y/n]: y Bioconductor version 3.10 (BiocManager 1.30.4), R 3.6.1 Patched (2019-07-06 r76792) Installing package(s) 'BiocVersion' trying URL 'https://bioconductor.org/packages/3.10/bioc/src/contrib/\ BiocVersion_3.10.1.tar.gz' ... > ## back down again... > BiocManager::install(version="3.9") Downgrade 3 packages to Bioconductor version '3.9'? [y/n]: y Bioconductor version 3.9 (BiocManager 1.30.4), R 3.6.1 Patched (2019-07-06 r76792) Installing package(s) 'BiocVersion' trying URL 'https://bioconductor.org/packages/3.9/bioc/src/contrib/\ BiocVersion_3.9.0.tar.gz' ...
n to the prompt to up- or downgrade packages
leaves the installation unchanged, since this would immediately create
an inconsistent installation.
(An initial draft of this section was produced by ChatGPT on 25 May 2023)
A user failed to install the ‘celldex’ package on 25 May 2023. A transcript of the R session is as follows:
> BiocManager::version()  '3.18' > BiocManager::install("celldex") Bioconductor version 3.18 (BiocManager 1.30.20), R 4.3.0 Patched (2023-05-01 r84362) Installing package(s) 'celldex' Warning message: package 'celldex' is not available for Bioconductor version '3.18' A version of this package for your version of R might be available elsewhere, see the ideas at https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
The availability of specific packages within Bioconductor can depend on various factors, including simple errors in entering the package name, the package’s development status, maintenance, and compatibility with the latest version of Bioconductor, as well as the availability of CRAN packages that the Bioconductor package depends on.
Package Name: R package names are case sensitive and must be
spelt correctly, so using
(with a capital
BiocManager::install("celdex") (with only one
l) would both fail to install
R will sometimes suggest the correct name.
BiocManager::install() tries to
install packages from CRAN and from Bioconductor. Check that
the package is not a CRAN package by trying to visit the CRAN ‘landing
If this page is found, then the package is a CRAN package; see the R-admin manual section on troubleshooting CRAN package installations.
Check also that the package is not a CRAN package that has been ‘archived’ and no longer available by trying to visit
If this page exists but the ‘landing page’ does not, this means that the package has been removed from CRAN. While it is possible to install archived packages, usually the best course of action is to identify alternative packages to accomplish the task you are interested in. This is especially true if the ‘Last modified’ date of the most recent archived package is more than several months ago.
Compatibility: A Bioconductor package must be available for the specific version of Bioconductor you are using. Try visiting the ‘landing page’ of the package for your version of Bioconductor, e.g., for Bioconductor version 3.18 and package celldex
If this landing page does not exist, then the package is not available for your version of Bioconductor.
Users may sometimes have an out-of-date version of R or Bioconductor installed; this may be intentional (e.g., to ensure reproducibility of existing analyses) or simply because Bioconductor has not yet been updated. Try visiting the current release landing page
If the release landing page exists, and it is not important that you continue using the out-of-date version of Bioconductor, consider updating R (if necessary) and Bioconductor to the current release versions using instructions at the top of this document.
Packages recently contributed to Bioconductor are added to the ‘devel’ branch, whereas most users are configured to use the ‘release’ branch. Try visiting the ‘devel’ landing page
If only the devel landing page exists, then consider updating your installation to use the development version of Bioconductor. Note that the development version is not as stable as the release version, so should not be used for time-critical or ‘production’ analysis.
It may be that the package you are interested in has been removed from Bioconductor. Check this by visiting
If the package has been removed, the best course of action is to identify alternative packages to accomplish the task you are interested in.
Maintenance and Operating System Availability: A package may be included in the release or devel version of Bioconductor, but currently unavailable because it requires maintenance. This might be indicated by a red ‘build’ badge as in the image below (details of the build problem are available by clicking on the badge). The build error usually requires that the package maintainer correct an issue with their package; the maintainer and email address are listed on the package landing page.
A small number of Bioconductor packages are not available on all operating systems. An orange ‘platforms’ badge indicates this. Click on the badge to be taken to the ‘Package Archives’ section of the landing page; BGmix is not supported on Windows, and not available on ‘Intel’ macOS because of build-related errors. Consider using an alternative operating system if the package is essential to your work
Packages with landing pages from older releases but not available for your operating system cannot be updated by the maintainer. If the package is available in the current release and for your operating system, consider updating to the current release of Bioconductor.
After updating R (e.g., from R version 3.5.x to
R version 3.6.x at the time of writing this) and trying to load
BiocManager, R replies
Error: .onLoad failed in loadNamespace() for 'BiocManager', details: call: NULL error: Bioconductor version '3.8' requires R version '3.5'; see https://bioconductor.org/install
This problem arises because
BiocManager uses a second
BiocVersion, to indicate the version of
Bioconductor in use. In the original installation,
BiocManager had installed
appropriate for R version 3.5. With the update, the version of
Bioconductor indicated by
BiocVersion is no longer
valid – you’ll need to update
BiocVersion and all
Bioconductor packages to the most recent version available for
your new version of R.
The recommended practice is to maintain a separate library for each R and Bioconductor version. So instead of installing packages into R’s system library (e.g., as ‘administrator’), install only base R into the system location. Then use aliases or other approaches to create R / Bioconductor version-specific installations. This is described in the section on maintaining multiple versions of R and Bioconductor.
Alternatively, one could update all Bioconductor packages in
the previous installation directory. The problem with this is that the
previous version of Bioconductor is removed, compromising the
ability to reproduce earlier results. Update all Bioconductor
packages in the previous installation directory by removing all
remove.packages("BiocVersion") # repeat until all instances removed
Then install the updated
BiocVersion, and update all
Bioconductor packages; answer ‘yes’ when you are asked to
update a potentially large number of Bioconductor packages.
Confirm that the updated Bioconductor is valid for your version of R
Large packages can take a long time to downloaded over poor internet
connects. The BiocManager package sets the time limit to 300 seconds,
options(timeout = 300). Only part of a package may
download, e.g., only 15.1 of 79.4 MB in the example below
trying URL 'https://bioconductor.org/packages/3.12/data/annotation/src/contrib/org.Hs.eg.db_3.12.0.tar.gz' Content type 'application/x-gzip' length 83225518 bytes (79.4 MB) ========= downloaded 15.1 MB
or perhaps with a warning (often difficult to see in the output)
Error in download.file(url, destfile, method, mode = "wb", ...) : ... ...: Timeout of 300 seconds was reached ...
Try increasing the download timeout, e.g,
options(timeout = 600).
One potential problem occurs when there are two or more
.libPaths(), with more than one BiocVersion package
installed. This might occur for instance if a ‘system administrator’
installed BiocVersion, and then a user installed their own version. In
this circumstance, it seems appropriate to standardize the installation
by repeatedly calling
all versions are removed, and then installing the desired version.
An essential task for BiocManager is to determine that the version of Bioconductor is appropriate for the version of R. Several errors can occur when this task fails.
Bioconductor version cannot be determined; no internet connection? When the Bioconductor version cannot be obtained from the version map hosted at https://bioconductor.org/config.yaml, this error will occur. It may be a result of poor internet connectivity or offline use. See the offline config.yaml section above.
Bioconductor version cannot be validated; no internet connection?
Usually occurs when the map is unable to be downloaded possibly due to a
BIOCONDUCTOR_CONFIG_FILE. For offline use, a copy
of the configuration file should be downloaded and its address set to
the environment variable or option.
Bioconductor version map cannot be validated; is it misconfigured? On rare occasion, the version map hosted at https://bioconductor.org/config.yaml may be misconfigured. The check ensures that all the version name tags, i.e., out-of-date, release, devel, and future are in the map.
Bioconductor version cannot be validated; is type input mis-specified? The type input refers to the version name inputs, mainly release and devel. This error is chiefly due to internal logic and is not due to user error. Please open a GitHub issue.
## R version 4.3.1 Patched (2023-08-04 r84874) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.2 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 ## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0 ## ## locale: ##  LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C ##  LC_TIME=en_US.UTF-8 LC_COLLATE=C ##  LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 ##  LC_PAPER=en_US.UTF-8 LC_NAME=C ##  LC_ADDRESS=C LC_TELEPHONE=C ##  LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C ## ## time zone: America/New_York ## tzcode source: system (glibc) ## ## attached base packages: ##  stats graphics grDevices utils datasets methods base ## ## loaded via a namespace (and not attached): ##  digest_0.6.33 R6_2.5.1 fastmap_1.1.1 xfun_0.39 ##  cachem_1.0.8 knitr_1.43 htmltools_0.5.5 rmarkdown_2.23 ##  cli_3.6.1 sass_0.4.7 jquerylib_0.1.4 compiler_4.3.1 ##  highr_0.10 rstudioapi_0.15.0 tools_4.3.1 evaluate_0.21 ##  bslib_0.5.0 yaml_2.3.7 rlang_1.1.1 jsonlite_1.8.7