From edd at debian.org  Wed Nov 14 15:57:47 2007
From: edd at debian.org (Dirk Eddelbuettel)
Date: Wed, 14 Nov 2007 08:57:47 -0600
Subject: [Rd] package installation order
In-Reply-To: <71257D09F114DA4A8E134DEAC70F25D30A2029AA@groamrexm03.amer.pfizer.com>
References: <71257D09F114DA4A8E134DEAC70F25D30A2029AA@groamrexm03.amer.pfizer.com>
Message-ID: <18235.3307.38745.255091@ron.nulle.part>


Hi Max,

On 14 November 2007 at 09:34, Kuhn, Max wrote:
| I have roughly 80 or so packages sources. These were obtained by taking
| a snapshot of certain CRAN packages a few months ago using 
| 
|    install.packages(
|       pkgs = pckNames,
|       destdir = "/home/max",
|       repos = "http://cran.r-project.org"
|       dependencies = c("Depends", "Imports", "Suggests"))
| 
| We need to install these versions of the packages across a few different
| architectures/systems (linux, solaris, 32- and 64-bit). Right now, we
| are constrained to version 2.5.1 (I know, I know). 
| 
| Right now, I'd use 
| 
|    tarList <- list.files()
|    tarList <- grep(".tar.gz", tarList, fixed = TRUE, value = TRUE)
|    install.packages (tarList, repos = NULL)
| 	
| to install, but the package dependencies are ignored. For example, XML
| gets installed after other packages that depend on it.
| 
| I've looked through ?install.packages and I have tried using 
| 
|    install.packages (
|       tarList, repos = NULL, 
|       dependencies = c("Depends", "Imports", "Suggests"))
| 
| but this did not appear to change the install ordering. 
| 
| Is there a simpler way to do this rather than trial and error?

When trying to package the by-now-gargantuan Rmetrics for Debian (which is
still ongoing), I looked around for some Depends builders. Turns out that
BioC has this.   E.g. the following worked for:

## > install.packages("Biobase", repo="http://www.bioconductor.org")
## > repos <- Biobase:::biocReposList()
## > install.packages("pkgDepTools", repos=repos["bioc"])
## > library(pkgDepTools)
## Loading required package: graph
## Loading required package: RBGL
## > CRANdeps <- makeDepGraph(repos["cran"], type="source")
## > getInstallOrder("Rmetrics", CRANdeps, needed.only=FALSE)

worked for me.  I meant to add some code for Graphviz visualization (or look
for it, Seth et al probably already wrote it) but what you get from
getInstallOrder() should suit your needs here.

Hth, Dirk

-- 
Three out of two people have difficulties with fractions.



[Rd] package installation order
Dirk Eddelbuettel