[Rd] Rcmdr package dependencies

Uwe Ligges ligges at statistik.tu-dortmund.de
Tue Sep 22 20:16:55 CEST 2009



John Fox wrote:
> Dear r-devel members,
> 
> My Rcmdr package "depends" on several other packages (tcltk, grDevices,
> utils, and car) and "suggests" a number of others (abind, aplpack,
> colorspace, effects, foreign, grid, Hmisc, lattice, leaps, lmtest, MASS,
> mgcv, multcomp, nlme, nnet, relimp, rgl, and RODBC). The reason for the
> distinction is that I don't want all of these packages to load when the
> Rcmdr loads; rather, the "suggested" packages are loaded as they're needed.
> But all of the packages -- both those under "depends" and those under
> "suggests" -- really are necessary for all of the features of the Rcmdr to
> work. For example, if the "leaps" package is absent, then the "Subset model
> selection" item in the "Models" menu is suppressed.
> 
> This arrangement works reasonably well, but it makes it awkward to install
> the Rcmdr. If the user issues the command install.packages("Rcmdr"), then
> the "suggested" packages aren't installed. On the other hand, if the user
> issues the command install.packages("Rcmdr", dependencies=TRUE), which is
> what I currently recommend, then "suggested" packages are installed
> recursively, causing dozens of packages, most of them actually unnecessary,
> to be installed. This issue has been growing more acute, and at this point
> even with a fast Internet connection it takes quite a while for all of the
> dependencies to download and install.
> 
> I wonder whether I've missed something. Is there a way for me to arrange the
> Rcmdr package dependencies so that only the necessary packages (those
> currently listed under both "depends" and "suggests" and the packages on
> which they "depend") are installed along with the Rcmdr, but the currently
> "suggested" packages aren't loaded when the Rcmdr loads?



Dear John,

no, this is not possible.

Consider your package A (or Rcmdr) suggests B that suggests C.
Then A::foo uses the function B::bar which only works if C::dep is 
present. B works essentially without C but it requires C just to make 
bar work. Then this means your A::foo won't work if C is not installed 
and you won't get it with the setup mentioned above.

In summary, I fear what you want might work well *now* (by chance), but 
it does not work in general.

Best wishes,
Uwe






> Any help would be appreciated.
> 
> John 
> 
> ------------------------------
> John Fox, Professor
> Department of Sociology
> McMaster University
> Hamilton, Ontario, Canada
> web: socserv.mcmaster.ca/jfox
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list