27

Selecting Packages->Update packages... gave:

> update.packages(ask='graphics',checkBuilt=TRUE)
--- Please select a CRAN mirror for use in this session ---
Warning: package 'foreign' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'lattice' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'Matrix' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'mgcv' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'nlme' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'rpart' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated

I ran the R shortcut in the startup menu "as Administrator" and got the same results.

R version is 3.0.2.

antonio
  • 10,629
  • 13
  • 68
  • 136
  • 6
    Maybe you installed these as Administrator and am now running as you? – Dirk Eddelbuettel Dec 14 '13 at 19:44
  • 1
    As is always encouraged, using a personal library solves exactly these types of minor issues – im so confused Dec 14 '13 at 19:48
  • 6
    @imsoconfused Take note that the packages mentioned are typically in the base install. So just having a personal library doesn't solve this issue. – Dason Dec 14 '13 at 19:50
  • @Dason thanks! i'll keep that in mind - somebody else helped me with this same issue on an external package and using a personal library / Run as Admin fixed it and I hastily applied that same suggestion forward! haha – im so confused Dec 14 '13 at 19:53
  • @imsoconfused: and anyway I have the personal library active. `libPaths()` gives as expected: `[1] "C:/Users/antonio/R/win-library/3.0" "C:/Program Files/R/R-3.0.2/library"` – antonio Dec 14 '13 at 20:04
  • could there be something using the packages? – im so confused Dec 14 '13 at 20:14

5 Answers5

26

A general restatement of the question

  1. In Windows 7/8 the package nicePack, included in the base install, is outdated.
  2. You update it with update.packages() or via the equivalent GUI menu.
  3. You get:
    Warning: package 'nicePack' in library 'C:/Program Files/R/R-3.*.*/library" will not be updated

Potential causes

R is not very kind with Windows so it just says "will not be updated" and not something like "permission denied to C:/Program Files/R/...". Anyway you realise that R cannot write to C:/Program Files and so restart it as Administrator and upgrade, but the problem persists!

If you check the personal package directory, where R is able to write, you see that the updated version of nicePack is there. In Windows the directory is normally ~\R\win-library\x.y or find it with Sys.getenv("R_LIBS_USER").

Probably the first time R, unable to write to R default directory, used the personal directory, so that there are two versions of nicePack. The second time, despite the admin privileges, R finds the updated package version in the personal directory and it does not update the default directory.

May be that R says "warning" and not "error", because the package is installed in the personal directory, but an outdated version remains in the default library.

Solution

Delete nicePack package directory in the personal library directory, restart as administrator and update again.

Opinions

I don't know if there is an actual bug in this behaviour, anyway more informative messages would for sure help the Windows user.

Perhaps the default library should be avoided in Windows, in favour of the personal. Many Windows applications use C:\ProgramData or ~\AppData\Local, writeable without special privileges.

antonio
  • 10,629
  • 13
  • 68
  • 136
  • I'd say there is a bug. The first upgrade of `nicePack` (at a point in time when it's stored only in `C:/Program Files/R/R-4.0.2/library`) works fine: `'lib = "C:/Program Files/R/R-4.0.2/library"' is not writable. Would you like to use a personal library instead?`. However, subsequent updates are ignored. – bers Oct 22 '20 at 13:15
  • What should one do in this situation when on an institutional machine where you do not have administrator privileges? – canderson156 Feb 01 '21 at 18:38
8

On R 4.0.4 (Gallium OS 3.1)

Permissions? old.packages() ?

In my case, I noticed 3 packages that would not update had permissions set differently from others in /usr/local/lib/R/library.

I fixed the permissions, but this did not solve the problem.

Then I ran old.packages() and noted the SAME 3 packages were considered old.

I admit I did not quite understand the help in ?update.packages(), but tried the following.

update.packages(oldPkgs = old.packages())

This fixed the problem and the 3 packages updated.

jim rothstein
  • 145
  • 2
  • 9
  • 2
    Thank you very much! This worked for me on R 3.6.3 on ubuntu 20.04.3. I didn't need to change permissions before I ran update.packages(old...), either. – Max Robinson Sep 30 '21 at 18:20
  • This question was about file permission on Windows. – IRTFM Jun 04 '22 at 21:51
5

I am on Ubuntu and i have the same problem from RStudio. I have tried to solve by sudo R and update.packages(). But it did not help. However sudo rstudio + update.packages() have solved the problem.

vondoRishi
  • 81
  • 1
  • 2
  • Worked in my Arch machine as well, except the executable in my case is called `rstudio-bin` because I have the more upstream "rstutio-desktop-bin" package installed instead of "rstudio-desktop". – Waldir Leoncio Nov 08 '18 at 13:32
2

In my case worked the following command sequence in the Terminal of Ubuntu:

sudo i-
R
update.packages(ask=FALSE)
q(save="no")
logout

That is to say: loging as root -> starting R -> updating packages from root -> out of R -> out of root.

Miguel Alvarez
  • 314
  • 2
  • 11
0

I'm on Windows, but using R Studio Server through SSH tunneling (AWS / Ubunutu Linux). I think that sometimes R Studio adds a layer of difficulties instead of getting things easier, this happens with package dependencies across multiple UNIX users

So, adding this possible scenario that may affect people looking for aforementioned question >>>

You can have a package version on your user and other version on

You need to su root and install.update() by SUDO R (same of R.exe on Windows) with a root user.

Then, when you acess RStudio Server, you'll see System Library packages updated

In summary, even if you use only one high-privilege unix user on a server, there will be two different locations for libraries:

ubuntu(user):/usr/local/lib/R/

system wide: /usr/lib/R/library

Luis Martins
  • 1,572
  • 12
  • 11