[R] install.packages() - old version deleted, new version did not install

Uwe Ligges ligges at statistik.tu-dortmund.de
Mon Dec 20 15:26:10 CET 2010



On 20.12.2010 15:19, Duncan Murdoch wrote:
> On 20/12/2010 9:03 AM, Jon Olav Skoien wrote:
>> On 12/20/2010 1:43 PM, Duncan Murdoch wrote:
>> > Jon Olav Skoien wrote:
>> >> On 12/17/2010 6:22 PM, Duncan Murdoch wrote:
>> >>> On 17/12/2010 11:13 AM, Jon Olav Skoien wrote:
>> >>>> Dear list,
>> >>>>
>> >>>> (R 2.12.0, Windows 7, 64bit)
>> >>>>
>> >>>> I recently tried to install a new package ("spacetime"), that
>> >>>> depends on
>> >>>> "sp" among others. I already had the last one installed, but
>> there was
>> >>>> probably a newer version on CRAN, so the command
>> >>>>> install.packages("spacetime")
>> >>>> also gave me:
>> >>>> also installing the dependencies ‘sp’, ‘zoo’, ‘xts’
>> >>>>
>> >>>> sp was already loaded in this session, so installation failed:
>> >>>> package 'sp' successfully unpacked and MD5 sums checked
>> >>>> Warning: cannot remove prior installation of package 'sp'
>> >>>>
>> >>>> Unfortunately, the warning should rather say:
>> >>>> "cannot completely remove prior installation of package 'sp'"
>> >>>> R managed to remove most of the prior installation of sp, except
>> >>>> for the
>> >>>> .dll. I could go on using sp in the existing sessions, but not load
>> >>>> the
>> >>>> package in a new session or open the help pages. This has happened
>> >>>> to me
>> >>>> several times, and the only solution I have found to this is to
>> close
>> >>>> all R-sessions and install the package again. This is normally
>> ok, but
>> >>>> this time I had some long-time computations running in another
>> >>>> R-session
>> >>>> that I did not want to interrupt. For the next time, is there a
>> way to
>> >>>> reinstall a package without interrupting running R-sessions?
>> >>>>
>> >>>> For me it seems like the cause of the problem could have been
>> >>>> solved by
>> >>>> checking if the .dll can be removed before removing the rest of the
>> >>>> package, by adding something like the following in
>> >>>> utils:::unpackPkgZip?
>> >>>> if (unlink(paste(instPath,"/libs/x64/sp.dll", sep = "")) != 0)
>> >>>> warning("cannot remove...")
>> >>>> before
>> >>>> ret<- unlink(instPath, recursive = TRUE) (line 95)
>> >>>> x64 in the path would have to be changed to something architecture
>> >>>> dependent...
>> >>>
>> >>> Could you try out the new 2.12.1 release? I recall hearing that
>> >>> something like this had changed, but I can't spot the NEWS item
>> >>> right now.
>> >>>
>> >>> Duncan Murdoch
>> >>
>> >> It seems it didnt change yet...
>> >> I installed 2.12.1 (on a different computer, still Windows, but Vista
>> >> and 32 bit), and after installing and loading sp in one session, I
>> >> opened a new session and got:
>> >>
>> >> R version 2.12.1 (2010-12-16)
>> >> Copyright (C) 2010 The R Foundation for Statistical Computing
>> >> ISBN 3-900051-07-0
>> >> Platform: i386-pc-mingw32/i386 (32-bit)
>> >> ............................
>> >>
>> >> > install.packages("sp")
>> >> Installing package(s) into ‘C:\Users\Jon\Documents/R/win-library/2.12’
>> >> (as ‘lib’ is unspecified)
>> >> --- Please select a CRAN mirror for use in this session ---
>> >> provo con l'URL
>> >> 'http://cran.at.r-project.org/bin/windows/contrib/2.12/sp_0.9-76.zip'
>> >> Content type 'application/zip' length 997444 bytes (974 Kb)
>> >> URL aperto
>> >> downloaded 974 Kb
>> >>
>> >> package 'sp' successfully unpacked and MD5 sums checked
>> >> Warning: cannot remove prior installation of package 'sp'
>> >>
>> >> The downloaded packages are in
>> >> C:\Users\Jon\AppData\Local\Temp\RtmpCTJeBk\downloaded_packages
>> >> > library(sp)
>> >> Errore in library(sp) : non c'è alcun pacchetto chiamato 'sp'
>> >> >
>> >>
>> >> The error message is the same as earlier, there is no package called
>> >> "sp", the attempt to install it again removed the old version except
>> >> for the .dll.
>> >>
>> >> Jon
>> >
>> > Did you have it open at the time? Windows won't let open files be
>> > removed, so that could have caused the problem. If it's not that, it
>> > could be a permissions problem. Have you tried running R as
>> > administrator for the install?
>> Yes, I had it open. In this case it was intentional to give a
>> reproducible example in case something had changed in the new version,
>> in other cases I have had to wait for 2 days before I could reinstall a
>> package. It seems the .dll is the one causing the problem, so wouldnt it
>> be possible to test if this file can be unlinked before trying to unlink
>> the complete directory in utils:::unpackPkgZip? Then the package should
>> be left untouched if it is in use, and not partly deleted as today.
>
> I don't know. Perhaps we could try to rename the folder; if that fails,
> abort the whole thing. If that succeeds but something later fails, then
> remove all the new stuff and restore the old folder. Do you know of a
> better test?

I think we had something like that in the past which did not work 
properly on network shares and we had to change the way it works for 
that reason.

Uwe


> Duncan Murdoch
>
>> I know that it is possible to avoid this problem by not installing a
>> package in use, but
>> 1) it seems only to affect packages with .dll's, so some packages can be
>> reinstalled while in use
>> 2) you dont always know if a dependent package will download a new
>> version of an installed package
>>
>> Best wishes,
>> Jon
>>
>>
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list