[R] install.packages() - old version deleted, new version did not install
Duncan Murdoch
murdoch.duncan at gmail.com
Mon Dec 20 15:19:20 CET 2010
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?
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
>
>
>
More information about the R-help
mailing list