Skip to content

BiocManager::install() not installing package if available version is lower than current #128

@hpages

Description

@hpages

I have SQLDataFrame 1.9.1:

packageVersion("SQLDataFrame")
# [1] ‘1.9.1’

and the version of SQLDataFrame currently available in BioC 3.15 is 1.9.0:

library(BiocManager)
available.packages(repos=BiocManager::repositories())["SQLDataFrame", "Version"]
# [1] "1.9.0"

But if I run BiocManager::install() I get:

BiocManager::install("SQLDataFrame")
# Bioconductor version 3.15 (BiocManager 1.30.16), R Under development (unstable)
#   (2021-10-25 r81105)
# Warning message:
# package(s) not installed when version(s) same as current; use `force = TRUE` to
#   re-install: 'SQLDataFrame' 

It seems to me that BiocManager::install("somePackage") should just re-install by default (i.e. without the need to use force=TRUE) when the available version is different from the installed version, including when it's lower than the installed version.

If we don't want that, then the warning message would need to be corrected to say something like:

package(s) not installed when version(s) same as (or lower than) current; use force = TRUE to re-install: 'somePackage'

FWIW I ran into this issue in the context of BiocManager::valid():

> BiocManager::valid()

* sessionInfo()

R Under development (unstable) (2021-10-25 r81105)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 21.10

Matrix products: default
BLAS:   /home/hpages/R/R-4.2.r81105/lib/libRblas.so
LAPACK: /home/hpages/R/R-4.2.r81105/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB              LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] Spectra_1.5.6        ProtGenerics_1.27.2  BiocParallel_1.29.12
[4] S4Vectors_0.33.10    BiocGenerics_0.41.2  BiocManager_1.30.16 

loaded via a namespace (and not attached):
[1] MASS_7.3-55       compiler_4.2.0    IRanges_2.29.1    parallel_4.2.0   
[5] tools_4.2.0       fs_1.5.2          MsCoreUtils_1.7.1 clue_0.3-60      
[9] cluster_2.1.2    

Bioconductor version '3.15'

  * 0 packages out-of-date
  * 3 packages too new

create a valid installation with

  BiocManager::install(c(
    "coMET", "GenomeInfoDb", "SQLDataFrame"
  ), update = TRUE, ask = FALSE)

more details: BiocManager::valid()$too_new, BiocManager::valid()$out_of_date

Warning message:
0 packages out-of-date; 3 packages too new 

But when I tried to create a valid installation by copy/paste'ing the suggested command I got:

>   BiocManager::install(c(
+     "coMET", "GenomeInfoDb", "SQLDataFrame"
+   ), update = TRUE, ask = FALSE)
Bioconductor version 3.15 (BiocManager 1.30.16), R Under development (unstable)
  (2021-10-25 r81105)
Warning message:
package(s) not installed when version(s) same as current; use `force = TRUE` to
  re-install: 'coMET' 'GenomeInfoDb' 'SQLDataFrame' 

Thanks,
H.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions