install.packages("C", dep=TRUE) does not always install indirect dependencies
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