Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check Bioconductor dependencies when running install_github? #700

Closed
zji90 opened this issue Jan 17, 2015 · 12 comments
Closed

Check Bioconductor dependencies when running install_github? #700

zji90 opened this issue Jan 17, 2015 · 12 comments

Comments

@zji90
Copy link

zji90 commented Jan 17, 2015

Hi,
I am trying to run install_github to install an R package hosted on Github. This package has a dependency package that is hosted on Bioconductor but not hosted on CRAN. It seems that install_github will not automatically detect the Bioconductor dependencies so the installation just fails because install_github can not find the denpendency package on CRAN. Now I have to install the Bioconductor package first and then install the Github package. This makes the installation process tedious and frustrated for other users. Is there a way that install_github can also detect the package dependencies on Bioconductor?

@PeteHaitch
Copy link

This works fine for me; can you please provide a reproducible example of when it's not working for you?

Does the following work for you?

devtools::install_github('PeteHaitch/BioCpkgA')

It should install a toy package BioCpkgA whose only dependency is GenomicTuples, which is available via Bioconductor and not CRAN.

# My sesion info
devtools::session_info()
Session info ---------------------------------------------------------------------
 setting  value                       
 version  R version 3.1.2 (2014-10-31)
 system   x86_64, darwin10.8.0        
 ui       RStudio (0.99.234)          
 language (EN)                        
 collate  en_AU.UTF-8                 
 tz       Australia/Melbourne         

Packages -------------------------------------------------------------------------
 package       * version  date       source                              
 Biobase       * 2.26.0   2014-10-14 Bioconductor                        
 BiocGenerics  * 0.12.1   2014-11-14 Bioconductor                        
 BioCpkgA        0.1      2015-03-02 Github (PeteHaitch/BioCpkgA@26d12ba)
 bitops        * 1.0-6    2013-08-17 CRAN (R 3.1.0)                      
 devtools      * 1.7.0    2015-01-17 CRAN (R 3.1.2)                      
 GenomeInfoDb  * 1.2.4    2014-12-19 Bioconductor                        
 GenomicRanges * 1.18.4   2015-01-07 Bioconductor                        
 GenomicTuples * 1.0.0    2014-10-14 Bioconductor                        
 httr          * 0.6.1    2015-01-01 CRAN (R 3.1.2)                      
 IRanges       * 2.0.1    2014-12-12 Bioconductor                        
 packrat       * 0.4.3    2015-01-29 CRAN (R 3.1.2)                      
 Rcpp          * 0.11.4   2015-01-24 CRAN (R 3.1.2)                      
 RCurl         * 1.95-4.5 2014-12-06 CRAN (R 3.1.2)                      
 rstudioapi    * 0.2      2014-12-31 CRAN (R 3.1.2)                      
 S4Vectors     * 0.4.0    2014-10-14 Bioconductor                        
 stringr       * 0.6.2    2012-12-06 CRAN (R 3.1.0)                      
 XVector       * 0.6.0    2014-10-14 Bioconductor

@nsheff
Copy link

nsheff commented Apr 21, 2015

This example does not work for me:

devtools::install_github('PeteHaitch/BioCpkgA')
Downloading github repo PeteHaitch/BioCpkgA@master
Installing BioCpkgA
Installing dependencies for BioCpkgA:
GenomicTuples
Installing package into ‘/home/nsheffield/R’
(as ‘lib’ is unspecified)
'/usr/lib/R/bin/R' --vanilla CMD INSTALL  \
  '/tmp/Rtmp6GpfdN/devtools194d288e6252/PeteHaitch-BioCpkgA-26d12ba'  \
  --library='/home/nsheffield/R' --install-tests 

ERROR: dependency ‘GenomicTuples’ is not available for package ‘BioCpkgA’
* removing ‘/home/nsheffield/R/BioCpkgA’

If I first install GenomicTuples, then it works:

devtools::install_github('PeteHaitch/BioCpkgA')
Downloading github repo PeteHaitch/BioCpkgA@master
Installing BioCpkgA
'/usr/lib/R/bin/R' --vanilla CMD INSTALL  \
  '/tmp/Rtmp6GpfdN/devtools194d690d04ab/PeteHaitch-BioCpkgA-26d12ba'  \
  --library='/home/nsheffield/R' --install-tests 

* installing *source* package ‘BioCpkgA’ ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (BioCpkgA)

Here is a package of mine with the same issue: https://github.com/sheffien/LOLA
It will not download and install IRanges, for example.

devtools::session_info()
Session info -------------------------------------------------------------------
 setting  value                       
 version  R version 3.2.0 (2015-04-16)
 system   x86_64, linux-gnu           
 ui       X11                         
 language en_US                       
 collate  en_US.UTF-8                 
 tz       <NA>                        

Packages -----------------------------------------------------------------------
 package       * version  date       source        
 BiocInstaller   1.19.3   2015-04-21 Bioconductor  
 bitops        * 1.0-6    2013-08-17 CRAN (R 3.2.0)
 devtools      * 1.7.0    2015-01-17 CRAN (R 3.2.0)
 httr          * 0.6.1    2015-01-01 CRAN (R 3.2.0)
 RCurl         * 1.95-4.5 2014-12-28 CRAN (R 3.2.0)
 rstudioapi    * 0.3.1    2015-04-07 CRAN (R 3.2.0)
 stringr       * 0.6.2    2012-12-06 CRAN (R 3.2.0)

@PeteHaitch
Copy link

Hmm, yes there does seem to be a problem. I just tried on a fresh installation of R 3.2 and confirmed that devtools::install_github('PeteHaitch/BioCpkgA') doesn't work unless GenomicTuples is first installed via

source("http://bioconductor.org/biocLite.R")
biocLite("GenomicTuples")

or BiocInstaller::biocLite('GenomicTuples') (if BiocInstaller is already installed).

I thought this used to work (i.e., in R 3.1), but I may be mistaken.

I won't have time to look into this until next week at the earliest, possibly the following week.

# Session info with BioC release
> devtools::session_info()
Session info ---------------------------------------------------------------------
 setting  value                       
 version  R version 3.2.0 (2015-04-16)
 system   x86_64, darwin13.4.0        
 ui       RStudio (0.99.235)          
 language (EN)                        
 collate  en_AU.UTF-8                 
 tz       Australia/Melbourne         

Packages -------------------------------------------------------------------------
 package       * version  date       source        
 BiocInstaller   1.18.1   2015-04-17 Bioconductor  
 bitops        * 1.0-6    2013-08-17 CRAN (R 3.2.0)
 devtools      * 1.7.0    2015-01-17 CRAN (R 3.2.0)
 httr          * 0.6.1    2015-01-01 CRAN (R 3.2.0)
 RCurl         * 1.95-4.5 2014-12-28 CRAN (R 3.2.0)
 rstudioapi    * 0.3.1    2015-04-07 CRAN (R 3.2.0)
 stringr       * 0.6.2    2012-12-06 CRAN (R 3.2.0)

# Session info with BioC devel, i.e., following BiocInstaller::useDevel(TRUE)
> devtools::session_info()
Session info ---------------------------------------------------------------------
 setting  value                       
 version  R version 3.2.0 (2015-04-16)
 system   x86_64, darwin13.4.0        
 ui       RStudio (0.99.235)          
 language (EN)                        
 collate  en_AU.UTF-8                 
 tz       Australia/Melbourne         

Packages -------------------------------------------------------------------------
 package       * version  date       source        
 BiocInstaller   1.19.3   2015-04-20 Bioconductor  
 bitops        * 1.0-6    2013-08-17 CRAN (R 3.2.0)
 devtools      * 1.7.0    2015-01-17 CRAN (R 3.2.0)
 httr          * 0.6.1    2015-01-01 CRAN (R 3.2.0)
 RCurl         * 1.95-4.5 2014-12-28 CRAN (R 3.2.0)
 rstudioapi    * 0.3.1    2015-04-07 CRAN (R 3.2.0)
 stringr       * 0.6.2    2012-12-06 CRAN (R 3.2.0)

@hadley
Copy link
Member

hadley commented Apr 21, 2015

Unfortunately I think this is just the reality of relying on bioconductor packages. If anyone has bright ideas about how to make it a bit better, I'd be happy to review a PR.

@hadley hadley closed this as completed Apr 21, 2015
@lamortenera
Copy link

This is indeed a pity, now the installation instructions for a package of mine ("lamortenera/epicseg") have become more tedious and might scare users.
Maybe that's a very naive and stupid idea, but what argues against providing a flag for allowing installation from Bioconductor? Something like the bioc_required option provided by R-travis?
I guess this could be implemented by installing every dependency with
source("http://bioconductor.org/biocLite.R")
biocLite("pkgname")
instead of
install.packages("pkgname")

That said, devtools is still an awesome package and thanks so much for it.

@rmflight
Copy link
Contributor

Or is it possible to add the list of bioconductor repos as a repos source in package_deps??

http://bioconductor.org/packages/release/bioc/
http://bioconductor.org/packages/release/data/annotation
http://bioconductor.org/packages/release/data/experiment
http://bioconductor.org/packages/release/extra

These will return the list of available packages using available_packages, just checked on R 3.2.0 and devtools 1.8.0

@lamortenera
Copy link

This is awesome! My bad that I didn't see it.
Thanks so much!

@rmflight
Copy link
Contributor

But it looks like there would need to be a pull request to add these to the package_deps function before they would be useful in install_github??

@lamortenera
Copy link

Ah right, I celebrated too early. I thought that the ... in install_github were used in install, which has also some ... used in install.packages, which has option repos. But this is not working :(

@biocyberman
Copy link

One way to make devtools install dependencies from Bioconductor is like this:

# Install a cool package
devtools::install_github(repo="Bioconductor-mirror/CoolPkg1")
# Human: Error: CoolPkg1 require SomePkgA version x.10.10 ; only SomePkgA version x.9.9 is installed.
# Machine: Look for SomePkgA on gitbub?
# Human: Yes
# Machine: From which github users? 
# [1]  Bioconductor-mirror
# [2] Bioconductor-mirror (use as default)
# Human: Answer: 2
# Machine: Ok, now I will try to install required dependencies from this github user: Bioconductor-mirror
# Machine: Just sit back and relax.
# Mahcine: But beware that you will get all the risk of using unstable versions of packages.
# Human: What?!!! Ok, could you please roll back?
# Machine: No, it's too late. Joking :-)
# Human: Phew! 
# Machine: Rolling back ....

Continued...

# Machine: You know what, maybe you don't need this install_github() at all.
# Machine: To install Bioconductor development versions of packages
# Machine: Just run this:
source("http://bioconductor.org/biocLite.R")
BiocInstaller::useDevel()
biocLite("CoolPkg1")
# Human: Cool. What if things mess up so bad and I want to revert to stable version.
# Machine: No problem, do this:
# Quit current R session and open a new one
source("http://bioconductor.org/biocLite.R")
pkgs <- rownames(installed.packages())
BiocInstaller::useDevel(FALSE)
biocLite(pkgs) # this could take hours to finish.

@ck37
Copy link

ck37 commented Jul 26, 2016

There is a trick for this: add biocViews: to the package's DESCRIPTION and R will know to search the bioconductor repository automatically for package requirements. This trick is not documented anywhere.

r-cheologist added a commit to bhagwataditya/autonomics0 that referenced this issue Jun 19, 2018
r-cheologist added a commit to bhagwataditya/autonomics0 that referenced this issue Jun 19, 2018
r-cheologist added a commit to bhagwataditya/autonomics0 that referenced this issue Jun 19, 2018
vllorens added a commit to vllorens/metaester that referenced this issue Sep 11, 2018
added biocViews (from r-lib/devtools#700)
@lock
Copy link

lock bot commented Sep 18, 2018

This old issue has been automatically locked. If you believe you have found a related problem, please file a new issue (with reprex) and link to this issue. https://reprex.tidyverse.org/

@lock lock bot locked and limited conversation to collaborators Sep 18, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants