From murdoch at stats.uwo.ca  Fri Jun  9 20:03:35 2006
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Fri, 09 Jun 2006 14:03:35 -0400
Subject: [Rd] install.packages("C",
 dep=TRUE) does not always install indirect dependencies
In-Reply-To: <4489B42D.7030108@fhcrc.org>
References: <44887B24.4080808@fhcrc.org> <44888A83.9090202@stats.uwo.ca>
	<4489B42D.7030108@fhcrc.org>
Message-ID: <4489B7F7.9080204@stats.uwo.ca>

On 6/9/2006 1:47 PM, Herve Pages wrote:
> 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...

Right, those are all possibilities.  But they can all be repaired by 
manually installing A, can't they?  Does the error message make clear 
that the problem is a lack of A?

> 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.

I don't know the logic behind the "dependencies=FALSE" default, and I'm 
reluctant to change defaults on platforms I don't use.  Since this is 
really only an inconvenience, I think you'll have to find an R Core 
member who actually uses your platform to deal with it.

Duncan Murdoch



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