[R-sig-Debian] Regarding R_LIBS_USER

Dirk Eddelbuettel edd at debian.org
Fri Jul 7 10:06:12 CEST 2017


On Thu, Jul 06, 2017 at 02:02:52PM +0200, Sergio Oller wrote:
> Hi,
> 
> As comments are welcome I will give my two cents and a patch suggestion :-)
> 
> 2017-07-06 10:42 GMT+02:00 Dirk Eddelbuettel <edd at debian.org>:
> >
> >
> > I have used such settings (such as un-setting R_LIBS_USER or its
> > predecessors) for over a decade, it just works (if you give write
> > permissions). It clearly helps us at work because everybody sees by
> > the default the same packages. I have also spoken with different R
> > Core members and several find the default installation below $HOME and
> > in a versioned directory less than ideal as well.  But it ensures
> > writeability. Which I cannot do easily from the package.
> >
> >
> > So maybe the change was too abrupt, and I think I may revert it. I
> > generally prefer for packagers like myself to not divert from upstream
> > unless they have good reasom or are unintrusive (and eg the added
> > tab-completion we have here is both).  But leaving newbies without
> > installable directories is bad, as is possibly hiding existing
> > installations.
> 
> There are several entangled issues:
> 1. What should be the default places where packages are installed?
> 2. What should be the default places where packages are loaded from?

That's both the same -- what .libPaths() shows, and which can be set
in several ways.

> 3. Ensuring that with the default R installation any user can install
> packages

Yes, and that went wrong this time.
 
> For 1., I believe packages should be installed at:
> - /usr/lib/R/library, if they are given by a .deb package (core R packages)
> - /usr/lib/R/site-library/, if they are given by a .deb package (other
> packages)
> - /usr/local/lib/R/site-library/, if the user has permissions
> - ~/R/x86_64-pc-linux-gnu-library/3.4, (or somewhere else under $HOME,
> otherwise)

The first three (in reverse order) have been our default for 15 or years.

The fourth is what R adds (even if a few people have reservations) and
it provides a fallback.
 
> For 2., I believe packages should be loaded from:
> - ~/R/x86_64-pc-linux-gnu-library/3.4
> - /usr/local/lib/R/site-library/
> - /usr/lib/R/site-library/
> - /usr/lib/R/library

See above. We have that.
 
> I believe with 3.4.1-1 Dirk tried to move towards that configuration, and
> for some reasons we ended in a situation where the R library in the HOME
> directory was not considered to write into and was not considered to load
> packages from.
> 
> This is how R works:
> 
> - When we use `library("package_name")`, the package_name is searched in
> the directories given by .libPaths().
> 
> - When we use `install.packages("package_name")`, by default the package is
> installed in the first element of .libPaths().
> 
> These two things make it very tricky to find a solution to 1, because:
> 
> - We can't change .libPaths() as we would break with how packages are
> searched

We can. See help(Startup) and other places. But setting good default are hard.

> - We may try to change install.packages() so instead of trying to install
> to .libPaths()[1] by default it tries /usr/local/lib/R/site-library first.
> We don't know how many things may break because they rely on that
> assumption, we would need to test CRAN packages like checkpoint and packrat
> and worse we don't know if we break some custom setups from users.
> - We can't remove the home directory from .libPaths() because some users
> won't be able to install packages there anymore nor find their packages,
> unless they choose to do that in their Renviron file.
> 
> Considering this, the safest approach is to remove the home directory
> approach from .libPaths() as Dirk tried to do. The main problem is that
> there the personal directory approach failed and there was not enough
> documentation in install.packages() to fix that.
> 
> Maybe a help message in install.packages would have helped. I attach a
> DEP-3 compliant patch as a proposal. It works on my computer. I'm no expert
> so your review is very welcome. The patch does a small change in how
> install.packages works:
> 
> If the package can't be installed into .libPaths()[1]
> (/usr/local/lib/R/site-library/), and if the user directory is NA (because
> it is not set anymore in /etc/Renviron) then:
>   * the default user directory is used instead: ~/R/%p-library/%v
>   * and "Would you like to use \\n~/R/%p-library/%v \nto in the future to
> install packages into?" is asked. if the answer is "yes", then it is
> appended to the ~/.Renviron file.

Some of this way work, but we need some testing first.

In the near term, reverting the patch may be easiest.

Dirk
 
> 
> >
> > I am a little pressed for time (at useR!) and system (main server is
> > ill, as is backup machine) but I should get a 3.4.1-2 out.
> >
> 
> I hope this helps, I am missing the useR conference, I hope I can assist
> next year :-)
> 
> Best,
> 
> Sergio
> _______________________________________________
> R-SIG-Debian mailing list
> R-SIG-Debian at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-debian

-- 
Three out of two people have difficulties with fractions.



More information about the R-SIG-Debian mailing list