Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copying packages between minor versions of R can result in broken packages #172

Open
DavisVaughan opened this issue Jun 8, 2022 · 3 comments

Comments

@DavisVaughan
Copy link

It seems like copy.packages.between.libraries() can, for example, copy packages from R 4.1.3 over into a package library for R 4.2.0.

copy.packages.between.libraries <- function(from, to, ask = FALSE, keep_old = TRUE, do_NOT_override_packages_in_new_R = TRUE) {

I think this is going to cause problems for a lot of people, as packages built with different minor versions of R (4.1 -> 4.2) are not compatible with each other. See this section of the R Windows FAQ:

https://cran.r-project.org/bin/windows/base/rw-FAQ.html#What_0027s-the-best-way-to-upgrade_003f

2.8 What’s the best way to upgrade?
That’s a matter of taste. For most people the best thing to do is to uninstall R (see the previous Q), install the new version, and then there are two options what to do with the library.
The simpler but more resource intensive one is to install all required packages again with the new version of R and then delete the old library once you no longer need it e.g. for reference. Sometimes, this is necessary when there is a change in R that makes the installed packages incompatible, such as when upgrading from R 4.1 to R 4.2 (installed packages with native code/DLLs are incompatible). Also, installing packages can be very fast when they are distributed in binary form (e.g. from CRAN or Bioconductor).
A previously recommended option was to copy any installed packages to the library folder in the new installation, run update.packages(checkBuilt=TRUE, ask=FALSE) in the new R and then delete anything left of the old installation. Different versions of R are quite deliberately installed in parallel folders so you can keep old versions around if you wish. This would often work, but not e.g. when upgrading from R 4.1 to R 4.2, in that case one could do this only for packages without native code/DLLs.

This kind of problem has resulted in frustrated Windows users with multiple packages:

I don't know if they used installr to update, but it seems like they have a situation that could have been caused by this issue.

Is there any way you could discourage usage of this function, or remove it entirely?

@burgerga
Copy link
Collaborator

burgerga commented Jun 8, 2022

I agree with removing; clean installing prevents a lot of annoying problems. NB above issues could have been caused by installr, but especially for Windows (e.g., institute-managed computers) another possible culprit could be using a non-R-version-specific R_LIBS_USER (as unfortunately is common in our institute :( )

@DavisVaughan
Copy link
Author

I just got confirmation from the lubridate user that they used installr when they updated, so their frustration was probably because of this issue tidyverse/lubridate#1041 (comment)

@Alternikaner
Copy link

Alternikaner commented Jun 9, 2022

R_LIBS_USER was the culprit in my case. I'm on a corporate system where shared/network/virtual drives are increasingly being used, particularly for common Windows locations - some of them with limited write permissions. This wreaks havoc on some package installs, which could be avoided by specifying a local package directory. It never occurred to me that "up-to-date" packages built in prior versions could be problematic. Hopefully this workaround won't be required given the change to the default Win package location in 4.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants