[R] Building Packages.

Ivan Krylov |kry|ov @end|ng |rom d|@root@org
Wed Mar 20 20:52:53 CET 2024


В Wed, 20 Mar 2024 19:26:53 +0000
Jorgen Harmse <JHarmse using roku.com> пишет:

> Thank you. tools:::.install_packages works.

I'm glad it works, but it shouldn't be necessary to use (and is not
part of the API: not documented to keep working this way).

Since you're already using devtools, perhaps devtools::install will
succeed. But it's not obvious why utils::install.packages() is failing,
and it should still be called by devtools::install().

> It happens that one of the functions in my package is a utility to
> build packages. I guess I should change the install step.

Try setting a breakpoint in system2 before launching your function:

debugonce(system2)
build.package('/path/to/the/source/tree')

This should land you in R's "browser" (see help(browser) for how to use
it). At this point, what is `command` and what are the `args`? If you
remove c("CMD", "INSTALL") from the `args` vector and give the rest as
the argument to .install_packages() in a fresh process, will it break
in a similar manner?

Browse[2]> command
[1] "/usr/lib/R/bin/R"
Browse[2]> args
[1] "CMD" "INSTALL" "-l"
"'/home/ivan/R/x86_64-pc-linux-gnu-library/4.2'"
"'/home/ivan/path/to/package_1.0.tar.gz'"

# (start a new process)

tools:::.install_packages(c(
 '-l',
 # you'll have to manually unquote the file paths:
 # the strings above are for both R and the command line shell
 # to interpret, but here we're only giving them to R, not the shell
 "/home/ivan/R/x86_64-pc-linux-gnu-library/4.2",
 "/home/ivan/path/to/package_1.0.tar.gz"
))

-- 
Best regards,
Ivan



More information about the R-help mailing list