From murdoch.duncan at gmail.com  Tue Dec  1 20:27:27 2015
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Tue, 1 Dec 2015 14:27:27 -0500
Subject: [Rd] Package Dependency
In-Reply-To: <CAErODj96vDuuKVNa06-Dd=FKsV7=fHP4_0gSYm9v70mwOdFKgA@mail.gmail.com>
References: <CAErODj96vDuuKVNa06-Dd=FKsV7=fHP4_0gSYm9v70mwOdFKgA@mail.gmail.com>
Message-ID: <565DF49F.4040600@gmail.com>

On 01/12/2015 2:19 PM, Paul Johnson wrote:
> Lately, I see a dependency problem with R-3.2 systems.
> install.packages allows dependencies, but they are not installed so
> the install fails.

You are saying you only want dependencies listed in the "Depends" field 
of DESCRIPTION.  Many packages nowadays have dependencies listed in 
"Imports", because that's now the recommended way to do it.  Those are 
not optional.

Imports are loaded, but don't affect the search path, so that's why 
they're preferred over Depends, which are both loaded and attached to 
the search path.  Modifying the search path can break user scripts.

Duncan Murdoch

>
> I see this a lot with students who are able to install packages like
> ggplot2 but then can't load it because a dependency "stringi" is
> missing.  Those students are generally using Windows, but today I
> reproduced the same on RedHat Linux with R-3.2.2.
>
> desiredPackages is a big vector of packages to install. This is using
> a trick that one of R Core taught me about 15 years ago...
>
>
>
>
> > installedPackages <- rownames (installed.packages() )
>
> > alreadyHave <- desiredPackages %in% installedPackages
>
>
> > install.packages(desiredPackages[!alreadyHave],
> +                                             dependencies = c("Depends"),
> +                                             lib = TARGETLIB)
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/DiagrammeR_0.8.1.tar.gz'
> Content type 'application/x-gzip' length 3438156 bytes (3.3 MB)
> ==================================================
> downloaded 3.3 MB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/emplik_1.0-2.tar.gz'
> Content type 'application/x-gzip' length 199124 bytes (194 KB)
> ==================================================
> downloaded 194 KB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/glmc_0.2-4.tar.gz'
> Content type 'application/x-gzip' length 19721 bytes (19 KB)
> ==================================================
> downloaded 19 KB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/sem_3.1-6.tar.gz'
> Content type 'application/x-gzip' length 156194 bytes (152 KB)
> ==================================================
> downloaded 152 KB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/OpenMx_2.3.1.tar.gz'
> Content type 'application/x-gzip' length 2537264 bytes (2.4 MB)
> ==================================================
> downloaded 2.4 MB
>
> ERROR: dependency 'visNetwork' is not available for package 'DiagrammeR'
> * removing '/panfs/pfs.acf.ku.edu/crmda/tools/lib64/R/3.2/site-library/DiagrammeR'
>
>
> However, I can manually install that individual package
>
>
>
> > install.packages("visNetwork",
> +                                             dependencies = c("Depends"),
> +                                             lib = TARGETLIB)
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/visNetwork_0.1.2.tar.gz'
> Content type 'application/x-gzip' length 1828012 bytes (1.7 MB)
> ==================================================
> downloaded 1.7 MB
>
> * installing *source* package 'visNetwork' ...
> ** package 'visNetwork' successfully unpacked and MD5 sums checked
> ** R
> ** inst
> ** preparing package for lazy loading
> ** help
> *** installing help indices
> ** building package indices
> ** installing vignettes
> ** testing if installed package can be loaded
> * DONE (visNetwork)
>
> The downloaded source packages are in
>      '/library/tmp/RtmpBImblN/downloaded_packages'
>
>
> After that, I start over,  the install of the desiredPackages vector
> proceeds, but hits another snag:
>
> install.packages(desiredPackages[!alreadyHave],
>                                              dependencies = c("Depends"),
> + +                                             lib = TARGETLIB)
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/DiagrammeR_0.8.1.tar.gz'
> Content type 'application/x-gzip' length 3438156 bytes (3.3 MB)
> ==================================================
> downloaded 3.3 MB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/sem_3.1-6.tar.gz'
> Content type 'application/x-gzip' length 156194 bytes (152 KB)
> ==================================================
> downloaded 152 KB
>
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/OpenMx_2.3.1.tar.gz'
> Content type 'application/x-gzip' length 2537264 bytes (2.4 MB)
> ==================================================
> downloaded 2.4 MB
>
> * installing *source* package 'DiagrammeR' ...
> ** package 'DiagrammeR' successfully unpacked and MD5 sums checked
> ** R
> ** inst
> ** preparing package for lazy loading
> ** help
> *** installing help indices
> ** building package indices
> ** testing if installed package can be loaded
> * DONE (DiagrammeR)
> ERROR: dependency 'StanHeaders' is not available for package 'OpenMx'
>
>
> Go back, install just that one
>
> > install.packages("StanHeaders", dependencies = c("Depends"), lib = TARGETLIB)
> trying URL 'http://rweb.crmda.ku.edu/cran/src/contrib/StanHeaders_2.8.0.tar.gz'
> Content type 'application/x-gzip' length 479231 bytes (467 KB)
> ==================================================
> downloaded 467 KB
>
> * installing *source* package 'StanHeaders' ...
> ** package 'StanHeaders' successfully unpacked and MD5 sums checked
> ** inst
> ** help
> *** installing help indices
> ** building package indices
> ** testing if installed package can be loaded
> * DONE (StanHeaders)
>
> The downloaded source packages are in
>      '/library/tmp/RtmpBImblN/downloaded_packages'
>
> I don't recall seeing this problem until the last few months.
>



[Rd] Package Dependency
Duncan Murdoch