From P.Dalgaard at biostat.ku.dk  Wed Aug 20 17:06:36 2008
From: P.Dalgaard at biostat.ku.dk (Peter Dalgaard)
Date: Wed, 20 Aug 2008 17:06:36 +0200
Subject: [Rd] Outdated dependencies and install.packages()
In-Reply-To: <alpine.LFD.1.10.0808201232150.5896@gannet.stats.ox.ac.uk>
References: <48ABF23B.70707@biostat.ku.dk>
	<alpine.LFD.1.10.0808201232150.5896@gannet.stats.ox.ac.uk>
Message-ID: <48AC32FC.8040606@biostat.ku.dk>

Prof Brian Ripley wrote:
> On Wed, 20 Aug 2008, Peter Dalgaard wrote:
>
>> This looks like a buglet:
>>
>>> install.packages("lme4", depend=TRUE, lib="~/Rlibrary/")
>> --- Please select a CRAN mirror for use in this session ---
>> [...snip...]
>> ** preparing package for lazy loading
>> Error: package 'Matrix' 0.999375-4 was found, but >= 0.999375.11 is
>> required by 'lme4'
>> Execution halted
>> ERROR: lazy loading failed for package 'lme4'
>> ** Removing '/home/bs/pd/Rlibrary/lme4'
>> ** Restoring previous '/home/bs/pd/Rlibrary/lme4'
>>
>> and the DESCRIPTION file for lme 4 does have
>>
>> Depends: methods, R(? 2.7.0), Matrix(? 0.999375-11), lattice
>> <http://cran.r-project.org/web/packages/lattice/index.html>
>>
>>
>> Looks like we're either not checking the version requirement of
>> dependencies, or something is making 4 > 11... (from my reading of the
>> code, it is the former, but I could have missed something).
>
> We don't check version requirements of dependencies in
> install.packages(). That's a minefield related to having multiple
> versions of a package on a system and which gets loaded/namespace
> loaded, so you can easily have the needed version but pick up a
> different one.
>
> Depending on whether lazy-loading is in place (and various other
> issues) you may or may not need the dependencies to install the
> package.  It's also a problem that you can update dependencies to
> incompatible ones, so the versions available at installation are only
> part of the story.
>
> I don't see why the message reports .11 not -11, but that may be
> related to "package_version" classes.
>
>> We should at least document the behaviour.
>
> I am not sure where you think it should be documented and is not.
> But for install.packages():
>
> dependencies: logical indicating to also install uninstalled packages
>           on which these packages depend/suggest/import (and so on
>           recursively).  Not used if 'repos = NULL'. Can also be a
>           character vector, a subset of 'c("Depends", "Imports",
>           "Suggests")'.
>
> 'uninstalled' seems pretty clear to me.
>
It isn't. Matrix 0.999375-11 was 'uninstalled'. The above could just
mean that if you installed it, it wouldn't be installed again.

Something like "Notice that version dependencies are not checked." would
help. (Assuming that people read the help page.)

-- 
   O__  ---- Peter Dalgaard             ?ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



[Rd] Outdated dependencies and install.packages()
Peter Dalgaard