Question: BiocManager v. 3.9 - where is it?
0
gravatar for lejeczek
21 days ago by
lejeczek0
United Kingdom
lejeczek0 wrote:

hi anybody knows where is 3.9 version? It is not in CRAN that's for sure. Many thanks, L.

...
selection: 1
trying URL
'https://cloud.r-project.org/src/contrib/BiocManager_1.30.4.tar.gz'
Content type 'application/x-gzip' length 242304 bytes (236 KB)
==================================================
downloaded 236 KB

* installing *source* package ‘BiocManager’ ...
** package ‘BiocManager’ successfully unpacked and MD5 sums checked
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package ‘BiocManager’
    finding HTML links ... done
    BiocManager-pkg                         html  
    available                               html  
    install                                 html  
    repositories                            html  
    valid                                   html  
    version                                 html  
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation
path
* DONE (BiocManager)
Making 'packages.html' ... done

The downloaded source packages are in
    ‘/tmp/RtmpDHZeQE/downloaded_packages’
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
> library(BiocManager)
Bioconductor version 3.8 (BiocManager 1.30.4), ?BiocManager::install for
help
Bioconductor version '3.8' is out-of-date; the current release version
'3.9' is
  available with R version '3.6'; see https://bioconductor.org/install
Warning message:
Bioconductor version '3.8' requires R version '3.5'; see
  https://bioconductor.org/install 
biocmanager • 186 views
ADD COMMENTlink modified 20 days ago by Martin Morgan ♦♦ 23k • written 21 days ago by lejeczek0
Answer: BiocManager v. 3.9 - where is it?
1
gravatar for Mike Smith
21 days ago by
Mike Smith3.8k
EMBL Heidelberg / de.NBI
Mike Smith3.8k wrote:

I think you're getting confused between package versions and Bioconductor releases (which occur every 6 months and also have version numbers). All packages within a specific release are expected to work with each other and a specific version of R, but not this is not necessarily true between releases. In this case the '3.9' refers to the current version of Bioconductor. The BiocManager package available on CRAN will let you specify the Bioconductor release you want to work with, but will warn you if it's incompatible with the R you're using.

It seems likely that you've updated to a new R version, but are using the same library location to install packages and BiocManager is picking up the version 3.8 from your previous installation.

Try running the following to update everything to the newer version of Bioconductor:

BiocManager::install(version = "3.9")
ADD COMMENTlink modified 20 days ago • written 21 days ago by Mike Smith3.8k
Answer: BiocManager v. 3.9 - where is it?
0
gravatar for Martin Morgan
20 days ago by
Martin Morgan ♦♦ 23k
United States
Martin Morgan ♦♦ 23k wrote:

Note that the message says

...the current release version '3.9' is  available with R version '3.6'

You're using a version of R (3.5.x) that does not support Bioconductor version 3.9 -- update your R to version 3.6, and then BiocManager::install() will in stall Bioc 3.9.

ADD COMMENTlink modified 20 days ago • written 20 days ago by Martin Morgan ♦♦ 23k

I'm not. Do you people really presume that everybody else is a dummy of some sort and unable to do 2 + 2 ??

$ /usr/bin/R 

R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)
> library(BiocManager)
Bioconductor version 3.8 (BiocManager 1.30.4), ?BiocManager::install for help
Bioconductor version '3.8' is out-of-date; the current release version '3.9' is
  available with R version '3.6'; see https://bioconductor.org/install
Warning message:
Bioconductor version '3.8' requires R version '3.5'; see
  https://bioconductor.org/install 
> BiocManager::install()
Error: Bioconductor version '3.8' requires R version '3.5'; see
  https://bioconductor.org/install

What I originally pasted is all from R 3.6

ADD REPLYlink written 20 days ago by lejeczek0

OK; likely you have a stale version of the BiocVersion package, probably because you re-used the libraries from R-3.5 in R-3.6. Remove BiocVersion

remove.packages("BiocVersion") ## repeat until no more installations

and start again. (Better practice: don't re-use libraries across R versions).

Not making any presumptions, just working through what I see in your report, which did not include any information about R version actually in use.

ADD REPLYlink modified 20 days ago • written 20 days ago by Martin Morgan ♦♦ 23k

Okey, it's BiocVersion which messes the whole thing up. Manually "BiocVersion" must be removed first and then BiocManager 3.9 will install properly.

Any @devel, cares to explain, anybody knows - why?

ADD REPLYlink written 20 days ago by lejeczek0

Glad that worked. What would you like explained?

ADD REPLYlink written 20 days ago by Martin Morgan ♦♦ 23k

What BiocVersion had to do with that? Why was it the cause of the problem?

ADD REPLYlink modified 20 days ago • written 20 days ago by lejeczek0
2

The basic issue is that 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.

Previously, one would install a Bioconductor package by running source(".../biocLite.R") to 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 / appropriate for the person invoking the script. Sourcing an executable script from the web is an obvious security problem.

Our solution was to use a CRAN package BiocManager, so that users would start the ball rolling with an installation from CRAN, rather than 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 of 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's not going to 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. You see this when you run BiocManager for the first time

/tmp$ mkdir eglib
/tmp$ R_LIBS_USER=eglib ~/bin/R-3-6-branch/bin/R --vanilla
> library("BiocManager")
Error in library("BiocManager") :
  there is no package called 'BiocManager'
> install.packages("BiocManager")
Installing package into '/private/tmp/eglib'
(as 'lib' is unspecified)
...
> BiocManager::install()
Bioconductor version 3.9 (BiocManager 1.30.4), R 3.6.0 Patched (2019-04-26
  r76431)
Installing package(s) 'BiocVersion'
trying URL 'https://bioconductor.org/packages/3.9/bioc/src/contrib/BiocVersion_3.9.0.tar.gz'
Content type 'application/x-gzip' length 984 bytes
==================================================
downloaded 984 bytes

* installing *source* package 'BiocVersion' ...
** using staged installation
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (BiocVersion)

The downloaded source packages are in
    '/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpxaCwDL/downloaded_packages'

You were re-using your BiocVersion from a previous installation, and BiocManager was responding to the request to install a version of Bioconductor that required a different version of R.

One weakness in the current approach is that the BiocManager does not actually load BiocVersion, it just determines the package version (the scenario below continues from above, but is not quite the same as your scenario)

/tmp$ R_LIBS_USER=eglib ~/bin/R-3-5-branch/bin/R --quiet  # new library, old R
> packageVersion("BiocVersion")
[1] '3.9.0'

If BiocManager actually tried to load the package, R would have objected

> library("BiocVersion")
Error: This is R 3.5.3, package 'BiocVersion' needs >= 3.6.0

We will certainly make this process more robust, with a clearer indication to the user of what the underlying problem is.

ADD REPLYlink written 20 days ago by Martin Morgan ♦♦ 23k

Great explanation Martin, thanks. Perhaps a similar explanation should be included in the BiocVersion package itself, to provide a reference for similar questions in the future.

Out of interest, does the version argument to BiocManager::install() affect the BiocVersion package? I'm wondering because this answer to a similar symptom (https://support.bioconductor.org/p/120724/#120726) seems to get a lot of votes, but it doesn't suggest removing BiocVersion first.

ADD REPLYlink written 20 days ago by Mike Smith3.8k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 298 users visited in the last hour