[R-sig-Debian] installing/updating R packages: apt-get vs. install.packages() and .libPaths()

Michael Friendly friendly at yorku.ca
Sun Mar 12 18:13:41 CET 2006

Dirk Eddelbuettel wrote:

> [ Delayed, and the manually approved as Michael posted without being
>   subscribed under this address. Please consider subscribing.  --Dirk ]

[I've subscribed 3 times, always with the same outgoing email address
> Your subscription request has been received, and will soon be acted upon. Depending on the configuration of this mailing list, your subscription request may have to be first confirmed by you via email, or approved by the list moderator. If confirmation is required, you will soon get a confirmation email which contains further instructions.

But I never get a confirmation, or the digest postings I requested.]

Aparently, I wasn't the only one confused:
Jeremy wrote:
> I couldn't find anything on the R FAQ's mentioning Debian
> specifically.  And a simple search for 'upgrade' in the FAQ also
> turned up nothing.  I even used Google to search for a way to upgrade
> R using CRAN, with no relevant results.  After a little bit of
> searching around the CRAN site I found this :
> http://cran.r-project.org/bin/linux/debian/README
> Which was all the information I needed.  Thanks for all the help.
> Jeremy
[I think the point here was not that debian didn't appear in the FAQ,
but rather that the information there was not sufficiently detailed.]

I would recommend the following:

1) In the R-FAQ, add the the lines:

More details on installing and administering R on debian linux may be
found at


2) Add a section to the above README along the following lines of:
(feel free to edit in any way)


The recommended policy for installing and maintaining R on debian linux 
is as follows:

    *  The r-base-core and r-recommended debian packages are normally 
installed and updated using apt-get (as root) to /usr/lib/R/library.

    *  Other debian packages (e.g., r-cran-*) are normally installed and 
updated using apt-get (as root) to /usr/lib/R/site-library.

    *  Still other packages may be installed by the local user/admin
from source or using install.packeges() to 
/usr/local/lib/R/site-library/.  This depends on local policy and 
setting the proper permissions.

    *  Users are always free to install packages in $HOME/lib/R/library
(or elsewhere).  This requires adding any such library to the .lib.paths
list, e.g., in .Rprofile ...

> |  I'm confused about where things go based on apt-get install 
> | {r-base,r-cran}* vs install.packages()
> | and whether I am running as root vs me.  If I want to update.packages() 
> | I don't want to have
> | to worry about whether I am currently root or me -- I just want to be 
> | *me* and have it work.
> That works _provided you prepare your territory__. This is unix, so "you"
> can only write there if your root let's you write. So you could for example
> i)   add yourself to group adm in /etc/groups
> ii)  chgrp adm /usr/local/lib/R/site-library/
> iii) chmod g+w /usr/local/lib/R/site-library/
> Now you should be able to say (inside R) 
> 	> update.packages(lib.loc="/usr/local/lib/R/site-library/")

OK, but implicit in my original post was the question of what happens 
when there are packages to be upgraded in more than one library.  If I
specify lib.loc="/usr/local/lib/R/site-library/", then, presumably the
r-cran-* packages will be upgraded there, rather than in 
/usr/lib/R/site-library vs. upgrading with apt-get.   The help for 
update.packages is mute on what happens when lib.loc=NULL.

  lib.loc: character vector describing the location of R library trees
           to search through (and update packages therein).

> In fact, I just did that.  You may need ii) and iii) with an added -R so that
> you are allowed to overwrite previously installed versions, if any:
> iv)  chgrp -R adm /usr/local/lib/R/site-library/
> v)   chmod -R g+w /usr/local/lib/R/site-library/
> |  > .libPaths()
> | [1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
> | [3] "/usr/lib/R/library"
> |  >
> | 
> | "/usr/lib/R/library"   for apt-get install r-base, as root
> Per a suggestion by Fritz and Kurt at one of the Vienna conferences, this
> directory is reserved for everything from r-base-core and r-recommended (ie
> boot, MASS, ...) and *nothing* else. So these would get updated via apt-get
> and dpkg.
> | "/usr/lib/R/site-library"    for apt-get install r-cran, as root
> Per a suggestion by Fritz and Kurt at one of the Vienna conferences, this
> directory is reserved for whatever R packages _Debian_ adds to the system.
> So these would get updated via apt-get and dpkg as well.
> | "/usr/local/lib/R/site-library"   for install.packages() as {me,root}
> Per a suggestion by Fritz and Kurt at one of the Vienna conferences, this
> directory is reserved for whatever the local user/admin installs.  I used to
> do that as root, but the method I suggest above is actually nicer.  So yes,
> you can do that provided you (as root) give yourself (as you) the proper
> permissions.
> | My machine is single user; should I just give myself chmod g+w privs 
> | under  /usr/lib/R/site-library
> | and maybe /usr/lib/R/library?  What is the recommended discipline?
> Only for /usr/local/lib/R/ as you need root permissions (or at least sudo) to
> interact with apt-get / dpkg anyway.
> I hope this is of help and wasn;t too terse.  We should expand this where
> needed and maybe post it on the R Wiki or maybe even polish it up for a quick
> one-pager in R News...

This was certainly helpful.  Yes, something on the R Wiki or R News 
would be useful.
> Best regards,  Dirk

Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    http://www.math.yorku.ca/SCS/friendly.html
Toronto, ONT  M3J 1P3 CANADA

More information about the R-SIG-Debian mailing list