[R] 4.5.0: Do NOT just copy library folder and update.packages()

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sat Apr 26 01:50:21 CEST 2025


Fer:

If you have been keeping all 4.x packages in one directory, then you 
should rename that directory and let R 4.5 build a new one to hold 
packages that work there.  Keep the old one around if you want to know 
the names of packages that were previously installed, or delete it if 
you don't really care.

Generally speaking it's a good idea to name the directory with major and 
minor parts of the R version, e.g. Rlib4.5.  You usually don't need to 
reinstall packages moving from 4.5.0 to 4.5.1.

Duncan Murdoch

On 2025-04-25 6:29 p.m., Jeff Newmiller via R-help wrote:
> Don't copy installed packages. There are also periodically changes in the compiler toolchain, and many packages have compiled code in them that can misbehave if you mix old compiled code and new compiled code. The kinds of errors you get can range from minor random answers to crashing R.
> 
> The effort required to tiptoe around these problems is more than the benefit of not having to re-install all of your packages. It may work once and the next time you get weird answers that are hard to track down. Why live on the edge?
> 
> On April 25, 2025 1:53:28 PM PDT, Fer <farcego.pi using gmail.com> wrote:
>> What about if there is only one folder for packages under 4.X... where
>> any version of R $.X... would load from there the packages?
>>
>> Thanks
>>
>> Fer
>>
>> On 4/25/25 11:16, Peter Dalgaard via R-help wrote:
>>> 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....
>>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using 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.
>



More information about the R-help mailing list