Yes. I was a little more careful about filtering out base and recommended 
packages, but the former won't be on CRAN anyway and will just give off a 
warning. 

The recommended packages sometimes do get upgraded on CRAN and whether you want 
those or the ones from the R release is a bit up in the air. (You might find 
one of those packages being aggressively updated shortly after release as their 
code freeze is lifted along with that of R.) 

You might add priority="NA" to installed.packages to solve that. Also, you 
might automate the version fixup for lib_loc, like:

old_lib <- sub("4.5", "4.4", .libPaths(), fixed=TRUE)

You probably could automate things even further, but my gut feeling is that 
you'd prefer to see the intermediate steps. It seems to get a little sticky to 
keep track of platform differences and historical changes in naming 
conventions. 

-pd

> On 26 Apr 2025, at 04.48, Matthew McCormack 
> <mccorm...@molbio.mgh.harvard.edu> wrote:
> 
> How about this:
> 
> lib_loc <- "/home/R/x86_64-pc-linux-gnu-library/4.4"
> to_install <- unname(installed.packages(lib.loc = lib_loc)[, "Package"])
> to_install
> install.packages(pkgs = to_install)
> 
>      Copy the names of the packages, then install them in the new 
> version of R.
> 
> Matthew
> 
> On 4/25/25 12:16 PM, Peter Dalgaard via R-help wrote:External Email - 
> Use Caution
>> A couple of people have gotten themselves in trouble by copying the contents 
>> of their 4.4 library folder into the 4.5 counterpart and running 
>> update.packages().
>> 
>> That can be a really bad idea if the old library contains base packages like 
>> "tools" or "utils". They don't live on CRAN, so update.packages() just 
>> leaves them at the 4.4.x version.
>> 
>> For instance,tools::md5sum has a new bytes= argument in 4.5.0 which gets 
>> used when loading other packages, but that cannot work anymore.
>> 
>> So copying library folders was probably never a good idea, but this time it 
>> is a very, very bad idea.
>> 
>> To avoid the problem, you can do something like this:
>> 
>>> .libPaths()
>> [1] "/Library/Frameworks/R.framework/Versions/4.5-x86_64/Resources/library"
>>> tbl <- 
>>> installed.packages("/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library")
>>> table(tbl[,"Priority"])
>>        base recommended
>>          14          15
>>> pkglist <- rownames(tbl[is.na(tbl[,"Priority"]),])
>> and then install.packages(pkglist) avoids touching the base/recommended ones.
>> 
>> - pd
>> 
>> PS: On MacOS, I have two systems upgraded 4.4.x to 4.5.0. One of them has 
>> tools in the 4.4 library and the other does not. I have no clue what the 
>> difference might be....
>> 
> The information in this e-mail is intended only for th...{{dropped:31}}

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to