Grokbase Groups R r-devel June 2006
FAQ
Hello again,

I've found another issue with 'install.packages'.
'install.packages("C", dep=TRUE)' will "fail" when the 2 following
conditions are satisfied:
- Package C depends on B which in turns depends on A but
the Depends field in C doesn't list A.
- Package B is already installed but not package A (e.g.
the user did 'install.packages("B", depúLSE)').
Then 'install.packages("C", dep=TRUE)' will not install A.
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.

Best,

H.

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

Search Discussions

  • Duncan Murdoch at Jun 8, 2006 at 8:37 pm

    On 6/8/2006 3:31 PM, Herve Pages wrote:
    Hello again,

    I've found another issue with 'install.packages'.
    'install.packages("C", dep=TRUE)' will "fail" when the 2 following
    conditions are satisfied:
    - Package C depends on B which in turns depends on A but
    the Depends field in C doesn't list A.
    - Package B is already installed but not package A (e.g.
    the user did 'install.packages("B", depúLSE)').
    Then 'install.packages("C", dep=TRUE)' will not install A.
    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.

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

    Duncan Murdoch
  • Seth Falcon at Jun 9, 2006 at 4:38 am

    Duncan Murdoch <murdoch@stats.uwo.ca> writes:
    conditions are satisfied:
    - Package C depends on B which in turns depends on A but
    the Depends field in C doesn't list A.
    - Package B is already installed but not package A (e.g.
    the user did 'install.packages("B", depúLSE)').
    Then 'install.packages("C", dep=TRUE)' will not install A.
    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.
    I see your point, but the unreasonable-ness kinda works both ways: If
    a user asked to install C and _all_ its dependencies, then I think
    that request should do that :-)
    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).
    Installing dependencies seems like a reasonable default to me. Having
    the flexibility to not install dependencies is nice, but I imagine for
    a majority of users they install a package in order to use it, and
    mostly you can't use a package unless you have its dependencies
    installed.

    + seth
  • Herve Pages at Jun 9, 2006 at 5:47 pm

    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úLSE' 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
  • Duncan Murdoch at Jun 9, 2006 at 6:03 pm

    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úLSE' 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úLSE" 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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupr-devel @
categoriesr
postedJun 8, '06 at 7:31p
activeJun 9, '06 at 6:03p
posts5
users3
websiter-project.org
irc#r

People

Translate

site design / logo © 2022 Grokbase