Re: [Rd] Outdated dependencies and install.packages()

From: Martin Maechler <>
Date: Thu, 21 Aug 2008 09:39:13 +0200

>>>>> "PD" == Peter Dalgaard <> >>>>> on Wed, 20 Aug 2008 17:06:36 +0200 writes:

    PD> 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
    >>> <>
    >>> 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.
    PD> It isn't. Matrix 0.999375-11 was 'uninstalled'. The above could just     PD> mean that if you installed it, it wouldn't be installed again.

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

Or even more:

Notice that version dependencies are not checked such that  outdated versions of installed packages are \emph{not} updated.  Consider using \code{\link{update.packages}()} before  \code{install.packages()}.

Note that --- thanks to Kate Mullen's nice help.request() proposal --- one of my top "TODOs" for R-devel is
to finish a generalization of the current   update.packages()
function (that I have not quite finished) which will allow to only look for updates of specified set of packages rather than all packages in a given lib.loc {something that should *not* be triggered by a help.request()  for a user (as ours) who has ~ 2000 R packages installed}.

Martin mailing list Received on Thu 21 Aug 2008 - 07:45:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 21 Aug 2008 - 18:37:18 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive