[BioC] Offline Installation of Packages and Dependencies

Nathan Bihlmeyer nbihlme1 at jhmi.edu
Tue Dec 4 21:10:15 CET 2012


Thank you Kasper. I have got everything working the way I want now. In
case anyone wants to know, here are my scripts:

### On the head node
#!/usr/bin/env Rscript
args = commandArgs(T)
rh = R.home()
tmp = paste(rh,"/tmp",sep="")
if(!file.exists(tmp)) {
  dir.create(tmp)
}
source("http://bioconductor.org/biocLite.R")
repos = c(biocinstallRepos(),getOption("repos"))
pkg = utils:::getDependencies(args,,available.packages(contriburl=contrib.url(repos)))
order = download.packages(pkg, tmp, repos=repos)[,2]
write.table(order,paste(tmp,"/pkg_install_order.list",sep=""),col.names=F,row.names=F,quote=F,sep="\t")

### On the compute node
#!/usr/bin/env Rscript
rh = R.home()
tmp = paste(rh,"/tmp",sep="")
if(!file.exists(tmp)) {
  quit()
}
pkg = read.table(paste(tmp,"/pkg_install_order.list",sep=""),sep="\t")
pkg = as.vector(t(pkg))
install.packages(pkg,repo=NULL)
file.remove(pkg)
file.remove(paste(tmp,"/pkg_install_order.list",sep=""))

Thanks,
Nathan Bihlmeyer
Human Genetics
School of Medicine
Johns Hopkins University

On Tue, Dec 4, 2012 at 11:19 AM, Kasper Daniel Hansen
<kasperdanielhansen at gmail.com> wrote:
> Forgot to reply all
>
> Most of the R commands for managing packages has a repos argument.  You can do
>   library(BiocInstaller)
>   install.packages(repos = biocinstallRepos())
> Be careful about R versions here, if nodes are different from head.
> Also, some commands may not accept a repos argument, but instead a
> contriburl argument which you can construct using
>   contrib.url(biocinstallRepos())
> If you start to grab some of the annotation / experiment data packages
> (especially the genomes), watch out that they are much much bigger
> than a typical CRAN package.  Better make sure /tmp is big enough.
>
> Kasper
>
> On Mon, Dec 3, 2012 at 2:10 PM, Nathan Bihlmeyer <nbihlme1 at jhmi.edu> wrote:
>> Hello all,
>>
>> I am currently working on a HPC cluster that for security reasons does
>> not have access to the internet on the compute nodes. Therefore, I
>> wish to quickly download package source archives using the head node,
>> then compile them on a compute node.
>>
>> Other details: The head node does not have same shared libraries as
>> the compute nodes, so I couldn't compile on that node even if I wanted
>> to. All the nodes use the same network-based file system for most
>> files (/home etc...). I am using my own compiled version of R 2.15.2.
>>
>> For non-Bioconductor packages, I have been using the following scripts:
>>
>> ### On the head node
>> #!/usr/bin/env Rscript
>> args = commandArgs(T)
>> rh = R.home()
>> tmp = paste(rh,"/tmp",sep="")
>> if(!file.exists(tmp)) {
>>   dir.create(tmp)
>> }
>> pkg = utils:::getDependencies(args,,available.packages())
>> download.packages(pkg, tmp)
>>
>> ### On the compute node
>> #!/usr/bin/env Rscript
>> rh = R.home()
>> tmp = paste(rh,"/tmp",sep="")
>> if(!file.exists(tmp)) {
>>   quit()
>> }
>> pkg = list.files(tmp,full.names=T)
>> install.packages(pkg,repo=NULL)
>> file.remove(pkg)
>>
>> They work well. What I need now is a way to do the same thing with
>> Bioconductor packages. I have looked into pkgDepTools; however, the
>> package requires a complete dependency graph to be built every time
>> the script is run. This takes too long and uses too many resources and
>> therefore is not an option on the head node. Also, I can not find a
>> way to produce download urls using that package.
>>
>> Thanks for your help,
>> Nathan Bihlmeyer
>> Human Genetics
>> School of Medicine
>> Johns Hopkins University
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor



More information about the Bioconductor mailing list