Thanks Henrik and Jon, that's very helpful. Dan
----- Original Message ----- > From: "Jon Olav Skoien" <jon.sko...@jrc.ec.europa.eu> > To: "Henrik Bengtsson" <h...@biostat.ucsf.edu> > Cc: "Dan Tenenbaum" <dtene...@fhcrc.org>, "R-devel" <r-devel@r-project.org> > Sent: Friday, October 11, 2013 1:38:26 AM > Subject: Re: [Rd] install.packages() removes package on Windows > > > > On 11-Oct-13 3:15, Henrik Bengtsson wrote: > > My guess is that the DLL of the already installed XML package is > > loaded by another R session and that prevents the corresponding DLL > > file: > > > >> path <- system.file("libs", package="XML") > >> list.files(path, recursive=TRUE, pattern="dll$") > > [1] "i386/XML.dll" "x64/XML.dll" > > > > from being deleted by install.packages() -> unpackPkgZip() -> > > > > ret <- unlink(instPath, recursive=TRUE, force=TRUE) > > > > which gives the warnings. You can verify this by checking that all > > files but the DLLs are deleted; > > > >> path <- system.file("libs", package="XML") > >> list.files(path, recursive=TRUE) > > > > REPRODUCIBLE EXAMPLE: > > > > # Download package with native code (=has DLLs) > > url <- > > "http://cran.r-project.org/bin/windows/contrib/r-release/png_0.1-6.zip" > > pkgfile <- basename(url) > > if (!file_test("-f", pkgfile)) download.file(url, dest=pkgfile, > > mode="wb") > > > > # Setup temporary library > > if (!file_test("-d", "local-libs")) dir.create("local-libs") > > > > # Install to temporary library > > install.packages(pkgfile, repos=NULL, lib="local-libs") > > > > # Record package path > > path <- system.file(package="png", lib.loc="local-libs") > > > > # Launch *another* session that loads the package > > Rscript <- file.path(R.home("bin"), "Rscript") > > code <- "library('png', lib.loc='local-libs'); img <- > > readPNG(system.file('img','Rlogo.png',package='png')); > > Sys.sleep(60)" > > code <- "library('png', lib.loc='local-libs'); Sys.sleep(60)" > > system2(Rscript, args=c("-e", dQuote(code)), wait=FALSE) > > > > # Try to install; will fail > > install.packages(pkgfile, repos=NULL, lib="local-libs") > > ## Gives: > > ## package 'png' successfully unpacked and MD5 sums checked > > ## Warning: cannot remove prior installation of package 'png' > > files <- list.files(path, recursive=TRUE) > > print(files) > > ## [1] "libs/x64/png.dll" > > > > > > SUGGESTION: > > The problem is that unlink(..., recursive=TRUE) is not atomic, > > leaving > > a corrupt installation behind. A better solution would be to use > > file.rename() to move the existing installation to a temporary > > directory/location, move the new installation in place, and then > > remove the temporary/old one. The last step will fail if there is > > a > > session holding onto the DLL, but at least it does not leave a > > corrupt > > installation behind. > There is an option to avoid the corrupted installations when running > multiple instances of R: > options(install.lock = TRUE) > https://stat.ethz.ch/pipermail/r-help/2010-December/263722.html > Not sure if this will solve the original problem though. > > Best wishes, > Jon > > > > > /Henrik > > > > On Thu, Oct 10, 2013 at 4:28 PM, Dan Tenenbaum <dtene...@fhcrc.org> > > wrote: > >> Hi, > >> > >> Starting with the XML package installed: > >> > >>> "XML" %in% rownames(installed.packages()) > >> [1] TRUE > >> I ran the following script: > >> > >> pkgs <- c("XML") > >> > >> for (i in 1:100) > >> { > >> install.packages(pkgs, repos="http://cran.fhcrc.org") > >> if (!all(pkgs %in% rownames(installed.packages()))) > >> { > >> print("failed to install pkgs!") > >> print(paste("Iteration", i)) > >> break > >> } > >> } > >> > >> And it failed on the third iteration: > >> > >> trying URL > >> 'http://cran.fhcrc.org/bin/windows/contrib/3.0/XML_3.98-1.1.zip' > >> Content type 'application/zip' length 4287270 bytes (4.1 Mb) > >> opened URL > >> downloaded 4.1 Mb > >> > >> package 'XML' successfully unpacked and MD5 sums checked > >> > >> The downloaded binary packages are in > >> > >> C:\Users\biocbuild\AppData\Local\Temp\3\Rtmps7OWh0\downloaded_packages > >> trying URL > >> 'http://cran.fhcrc.org/bin/windows/contrib/3.0/XML_3.98-1.1.zip' > >> Content type 'application/zip' length 4287270 bytes (4.1 Mb) > >> opened URL > >> downloaded 4.1 Mb > >> > >> package 'XML' successfully unpacked and MD5 sums checked > >> > >> The downloaded binary packages are in > >> > >> C:\Users\biocbuild\AppData\Local\Temp\3\Rtmps7OWh0\downloaded_packages > >> trying URL > >> 'http://cran.fhcrc.org/bin/windows/contrib/3.0/XML_3.98-1.1.zip' > >> Content type 'application/zip' length 4287270 bytes (4.1 Mb) > >> opened URL > >> downloaded 4.1 Mb > >> > >> package 'XML' successfully unpacked and MD5 sums checked > >> Warning: cannot remove prior installation of package 'XML' > >> > >> The downloaded binary packages are in > >> > >> C:\Users\biocbuild\AppData\Local\Temp\3\Rtmps7OWh0\downloaded_packages > >> [1] "failed to install pkgs!" > >> [1] "Iteration 3" > >> > >> At this point the XML package is not installed: > >> > >>> "XML" %in% rownames(installed.packages()) > >> [1] FALSE > >> > >> Any idea what could cause this? There is no virus scanner running. > >> > >> I notice the warning about failing to remove prior installation, > >> but it looks like it removed enough of it so that XML is no > >> longer installed. > >> > >> I realize my script is a little contrived but I'm trying to track > >> down an elusive problem in our build system that is causing a lot > >> of grief....this may or may not be the same problem but it's > >> certainly a problem, so I thought I'd report it. > >> > >> Is there a workaround? > >> > >> I've only ever seen this issue on Windows. > >> > >> I did try running the same script on a vanilla windows machine and > >> it did not fail. In fact, it does not always fail on the machine > >> where it fails above. But once is enough to mess us up. > >> > >> > >>> sessionInfo() > >> R version 3.0.2 (2013-09-25) > >> Platform: i386-w64-mingw32/i386 (32-bit) > >> > >> locale: > >> [1] LC_COLLATE=English_United States.1252 > >> [2] LC_CTYPE=English_United States.1252 > >> [3] LC_MONETARY=English_United States.1252 > >> [4] LC_NUMERIC=C > >> [5] LC_TIME=English_United States.1252 > >> > >> attached base packages: > >> [1] stats graphics grDevices utils datasets methods > >> base > >> > >> Thanks, > >> Dan > >> > >> ______________________________________________ > >> R-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > -- > Jon Olav Skøien > Joint Research Centre - European Commission > Institute for Environment and Sustainability (IES) > Land Resource Management Unit > > Via Fermi 2749, TP 440, I-21027 Ispra (VA), ITALY > > jon.sko...@jrc.ec.europa.eu > Tel: +39 0332 789205 > > Disclaimer: Views expressed in this email are those of the individual > and do not necessarily represent official views of the European > Commission. > > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel