rstudio / rsconnect

Publish Shiny Applications, RMarkdown Documents, Jupyter Notebooks, Plumber APIs, and more
http://rstudio.github.io/rsconnect/
133 stars 81 forks source link

'NA' package source shown in rsconnect::appDependencies(), even though installed from CRAN. #1062

Closed le-raman closed 5 months ago

le-raman commented 5 months ago

Hi devs,

I'm getting following error while trying to deploy on R v4.3.2, rsconnect v1.2.2:

ℹ Bundling 35 files: '.Renviron', 'app.R', 'changelist', 'config.yaml', 'Dockerfile', 'docs/app.png', 'docs/app2.png', 'docs/app3.png', 'jira.sh', 'README.md', 'lib/browser_server.R', 'lib/browser_ui.R', 'lib/browser.R', 'lib/fun.R', 'lib/request_data_menu.R', 'lib/select_dc_menu.R', 'lib/subtabs/multi_var_box_bar.R', 'lib/subtabs/multi_var_cor.R', …, 'www/assets/webpagetab-logo.png', and 'www/theme.css'
ℹ Capturing R dependencies with renv
✔ Found 192 dependencies
Error in `createAppManifest()`:
! All packages must be installed from a reproducible location.
✖ Can't re-install packages installed from source: bslib, callr, curl, digest,
  ggplot2, gtable, htmltools, httpuv, kit, knitr, munsell, openssl, processx,
  promises, rmarkdown, sass, seriation, tidyselect, tinytex, and xfun.
ℹ See `rsconnect::appDependencies()` for more details.
Backtrace:
    ▆
 1. └─rsconnect::deployApp(...)
 2.   └─rsconnect:::bundleApp(...)
 3.     └─rsconnect:::createAppManifest(...)
 4.       └─rsconnect:::bundlePackages(...)
 5.         └─rsconnect:::checkBundlePackages(deps, call = error_call)
 6.           └─cli::cli_abort(...)
 7.             └─rlang::abort(...)
Execution halted

Looking at rsconnect::appDependencies():

...
50                   bit      4.0.5         CRAN                        https://p3m.dev/cran/2024-02-28
51                 bit64      4.0.5         CRAN                        https://p3m.dev/cran/2024-02-28
52                bitops      1.0-7         CRAN                        https://p3m.dev/cran/2024-02-28
53                  blob      1.2.4         CRAN                        https://p3m.dev/cran/2024-02-28
54                 bslib      0.7.0         <NA>                                                   <NA>
55                    ca     0.71.1         CRAN                        https://p3m.dev/cran/2024-02-28
56                cachem      1.0.8         CRAN                        https://p3m.dev/cran/2024-02-28
57                 callr      3.7.6         <NA>                                                   <NA>
58                   cli      3.6.2         CRAN                        https://p3m.dev/cran/2024-02-28
59               cluster      2.1.4         CRAN                        https://p3m.dev/cran/2024-02-28
60       clusterProfiler     4.10.1 Bioconductor            https://bioconductor.org/packages/3.18/bioc
...

The mentioned packages have a 'NA' source. I installed all packages using remotes::install_version(..., version = x.x.x). Installing with install.packages() instead seems to resolve it, but this doesn't allow me to control my Docker environment & package versions over time.

Any idea what causes this? Is there a workaround?

Thanks!

le-raman commented 5 months ago

Apologies, I forgot to set the repos parameter.

options(repos = BiocManager::repositories()) solves it! 😊