[R] Error in readRDS(dest) (was Re: Error with installed.packages with R 3.4.0 on Windows)

Martin Morgan martin.morgan at roswellpark.org
Wed May 31 16:05:37 CEST 2017


On 05/31/2017 04:38 AM, Patrick Connolly wrote:
> On Tue, 23-May-2017 at 12:20PM +0200, Martin Maechler wrote:
> 
> [...]
> 
> |>
> |> Given the above stack trace.
> |> It may be easier to just do
> |>
> |>     debugonce(available.packages)
> |>     install.packages("withr")
> |>
> |> and then inside available.packages, (using 'n') step to the
> |> point _before_ the tryCatch(...) call happens; there, e.g. use
> |>
> |>       ls.str()
> |>
> |> which gives an str() of all your local objects, notably 'dest'
> |> and 'method'.
> |> but you can also try other things once inside
> |> available.packages().
> 
> I couldn't see any differences between R-3.3.3 (which works) and
> R-3.4.0 (which doesn't) until I got to here, a few lines before the
> download.file line:
> 
> Browse[2]>
> debug: dest <- file.path(tempdir(), paste0("repos_", URLencode(repos,
>      TRUE), ".rds"))
> Browse[2]>
> 
> When I check out those directories in a terminal, there's a big diffrence:
> 
> With R-3.4.0
> ~ > ll /tmp/RtmpFUhtpY
> total 4
> drwxr-xr-x 2 hrapgc hrapgc 4096 May 31 10:45 downloaded_packages/
> -rw-r--r-- 1 hrapgc hrapgc    0 May 31 10:56 repos_http%3A%2F%2Fcran.stat.auckland.ac.nz%2Fsrc%2Fcontrib.rds
> 
> 

The file repos_http%3A%2F%2Fcran.stat.auckland.ac.nz%2Fsrc%2Fcontrib.rds 
was likely created earlier in your R session. Likely the download a few 
lines down

                     download.file(url = paste0(repos, "/PACKAGES.rds"),
                                   destfile = dest, method = method,
                                   cacheOK = FALSE, quiet = TRUE, mode = 
"wb")

'succeeded' but created a zero-length file.

You could try to troubleshoot this with something like the following, 
downloading to a temporary location

   dest = tempfile()
   url = "http://cran.stat.auckland.ac.nz/src/contrib/PACKAGES.rds"
   download.file(url, dest)
   file.size(dest)

If this succeeds (it should download a file of several hundred KB), then 
try adding the options method, cacheOK, quiet, mode to the 
download.file() call. 'method' can be determined when you are in 
available.packages while debugging; if R says that it is missing, then 
it will be assigned, in download.file, to either 
getOption("download.file.method") or (if the option is NULL or "auto") 
"libcurl".

If the download 'succeeds' but the temporary file created is 0 bytes, 
then it would be good to share the problematic command with us.

Martin Morgan

> With R-3.3.3
> ~ > ll /tmp/RtmpkPgL3A
> total 380
> drwxr-xr-x 2 hrapgc hrapgc   4096 May 31 11:01 downloaded_packages/
> -rw-r--r-- 1 hrapgc hrapgc   8214 May 31 11:01 libloc_185_3165c7f52d5fdf96.rds
> -rw-r--r-- 1 hrapgc hrapgc 372263 May 31 11:01 repos_http%3A%2F%2Fcran.stat.auckland.ac.nz%2Fsrc%2Fcontrib.rds
> 
> So, if I could figure out what makes *that* difference I could get
> somewhere.  I see there's considerably extra code in the newer of the
> two versions of available.packages() but being a bear with a small
> brain, I can't figure out what differences should be expected.  I have
> no idea what populates those 'dest' directories.
> 
> TIA
> 


This email message may contain legally privileged and/or...{{dropped:2}}



More information about the R-help mailing list