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

Martin Maechler maechler at stat.math.ethz.ch
Tue May 23 12:20:36 CEST 2017


>>>>> Patrick Connolly <p_connolly at slingshot.co.nz>
>>>>>     on Tue, 23 May 2017 20:47:22 +1200 writes:

    > On Mon, 22-May-2017 at 05:43AM -0400, Martin Morgan wrote:
    > |> On 05/22/2017 05:10 AM, Patrick Connolly wrote:

    > |> >Apparently it isn't harmless.
    > |> >
    > |> >>install.packages("withr")
    > |> >Error in readRDS(dest) : error reading from connection
    > |> 
    > |> that seems like a plain-old network connectivity issue, or perhaps
    > |> an issue with the CRAN mirror you're using. Can you debug on your
    > |> end, e.g,.
    > |> 
    > |>   options(error=recover)
    > |>   install.packages("withr")
    > |>   ...
    > |> 
    > |> then select the 'frame' where the error occurs, look around
    > |> 
    > |>   ls()
    > |> 
    > |> find the value of 'dest', and e.g., try to open dest in your  browser.

    > This is what I get

    >> options(error=recover)
    >> install.packages("withr")
    > ^C

    > Enter a frame number, or 0 to exit   

    > 1: install.packages("withr")
    > 2: available.packages(contriburl = contriburl, method = method)
    > 3: tryCatch({
    > download.file(url = paste0(repos, "/PACKAGES.rds"), destfile
    > 4: tryCatchList(expr, classes, parentenv, handlers)
    > 5: tryCatchOne(expr, names, parentenv, handlers[[1]])
    > 6: doTryCatch(return(expr), name, parentenv, handler)
    > 7: download.file(url = paste0(repos, "/PACKAGES.rds"), destfile = dest, method

    > Selection: 7

'7'  was the wrong choice:  'dest' exists in the frame that
     *calls* download.file, in this case, it is frame 2, i.e.,
     inside available.packages(.)  where the  tryCatch() call to
     download.file() happens.

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().

Martin


    > Called from: eval(substitute(browser(skipCalls = skip), list(skip = 7 - which)), 
    > envir = sys.frame(which))
    > Browse[1]> dest
    > Error during wrapup: object 'dest' not found

    > That indicates to me that the problem is further back but I have no
    > idea how make use of that information.


    > Browse[1]> ls()
    > [1] "cacheOK"  "destfile" "extra"    "method"   "mode"     "quiet"    "url"     
    > Browse[1]> url
    > [1] "http://cran.stat.auckland.ac.nz/src/contrib/PACKAGES.rds"
    > Browse[1]> destfile
    > [1] "/tmp/RtmpplJSrB/repos_http%3A%2F%2Fcran.stat.auckland.ac.nz%2Fsrc%2Fcontrib.rds"
    > Browse[1]> 

    > The destfile above is zero-length and I suppose is where dest is
    > intended to end up.

    > Where else should I be looking?  Earlier installations never had this
    > issue so I don't have anything to compare.

    > TIA
    > --



More information about the R-help mailing list