[Rd] install.packages("C", dep=TRUE) does not always install indirect dependencies

Herve Pages hpages at fhcrc.org
Fri Jun 9 19:47:25 CEST 2006


Duncan Murdoch wrote:
> On 6/8/2006 3:31 PM, Herve Pages wrote:
>> May be this is the desired behavior, I don't know. Personally, I would
>> think of 'install.packages("C", dep=TRUE)' as a reliable way to get 
>> every
>> packages that C directly or indirectly relies on installed.
>
> This seems rather unreasonable.  If a user asked not to install B's 
> dependencies, and A is not listed as a dependency of C, then I don't 
> think a request to install C and its dependencies should install A.

Hi Duncan,

Maybe the user didn't _ask_ not to install B's deps. Maybe he simply 
made a mistake
(which is easy with 'dep=FALSE' being the default), or maybe this is a 
shared system and
someone else installed B without 'dep=TRUE' or removed A or...
But I realize that there would be a significant extra cost if 
'install.packages("C", dep=TRUE)'
had to check the whole deps tree instead of just checking whether only 
the packages listed
in C's Depends field are already installed (especially when those 
packages _are_ already
installed).
So if checking the whole deps tree can't be done everytime 
'install.packages(..., dep=TRUE)'
is used then may be it could be done on demand e.g. with something 
similar to what
"rpm -Va --nofiles" does on a Linux system (this checks the entire 
system for missing deps).

> Perhaps the installation of B without dependencies was a mistake?  I 
> think an argument could be made that dependencies=TRUE should be the 
> default (as it is when using the corresponding menu item in the 
> Windows GUI).
Yes having 'dependencies=TRUE' as the default would definetly help the
user to keep a system where all deps are satisfied.

Best,

H.

-- 
------------------------
Hervé Pagès
E-mail: hpages at fhcrc.org
 Phone: (206) 667-5791
   Fax: (206) 667-1319



More information about the R-devel mailing list