r-lib / pak

A fresh approach to package installation
https://pak.r-lib.org
671 stars 60 forks source link

Failing to install tidyverse on Redhat #584

Closed fraba closed 7 months ago

fraba commented 8 months ago
R version 4.3.2 (2023-10-31) -- "Eye Holes"
Copyright (C) 2023 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

What caused pak::pkg_install("tidyverse") to fail is the installation of ragg with error

> ✖ Failed to build ragg 1.2.7                                            
> Error:                                                                  
> ! error in pak subprocess
> Caused by error in `stop_task_build(state, worker)`:
> ! Failed to build source package ragg.
.Last.error
> <callr_error/rlib_error_3_0/rlib_error/error>
> Error: 
> ! error in pak subprocess
> Caused by error in `stop_task_build(state, worker)`:
> ! Failed to build source package ragg.
> ---
> Backtrace:
> 1. pak::pkg_install("tidyverse")
> 2. pak:::remote(function(...) get("pkg_install_do_plan", asNamespace("pak"))(...), …
> 3. err$throw(res$error)
> ---
> Subprocess backtrace:
>  1. base::withCallingHandlers(cli_message = function(msg) { …
>  2. get("pkg_install_do_plan", asNamespace("pak"))(...)
>  3. proposal$install()
>  4. pkgdepends::install_package_plan(plan, lib = private$library, num_workers = nw, …
>  5. base::withCallingHandlers({ …
>  6. pkgdepends:::handle_events(state, events)
>  7. pkgdepends:::handle_event(state, i)
>  8. pkgdepends:::stop_task(state, worker)
>  9. pkgdepends:::stop_task_build(state, worker)
> 10. base::throw(pkg_error("Failed to build source package {.pkg {pkg}}.", …
> 11. | base::signalCondition(cond)
> 12. global (function (e) …
gaborcsardi commented 8 months ago

Unfortunately the real error message is omitted, my guess is that you need to install a system dependency. Try install.packages("ragg") to see the packages you need.

You can also try pak::pkg_sysreqs("tidyverse") to see the system packages and commands.

fraba commented 7 months ago

pak::pkg_sysreqs("tidyverse")

✔ Updated metadata database: 2.87 MB in 7 files.                          
✔ Updating metadata database ... done                                     
Error:                                                                      
! error in pak subprocess
Caused by error in `sysreqs2_command(sysreqs_platform, "update")`:
! Unknown OS. Don't know how to query or install system packages for x86_64-pc-linux-gnu-rhel-9.3.
Type .Last.error to see the more details.
.Last.error
<callr_error/rlib_error_3_0/rlib_error/error>
Error: 
! error in pak subprocess
Caused by error in `sysreqs2_command(sysreqs_platform, "update")`:
! Unknown OS. Don't know how to query or install system packages for x86_64-pc-linux-gnu-rhel-9.3.
---
Backtrace:
1. pak::pkg_sysreqs("tidyverse")
2. pak:::remote(function(...) { …
3. err$throw(res$error)
---
Subprocess backtrace:
1. base::withCallingHandlers(cli_message = function(msg) { …
2. get("pkg_sysreqs_internal", asNamespace("pak"))(...)
3. pkgdepends::sysreqs_install_plan(pkg, upgrade = upgrade, config = config)
4. pkgdepends:::sysreqs2_scripts(sol$data$sysreqs_packages, sysreqs_platform)
5. pkgdepends:::sysreqs2_command(sysreqs_platform, "update")
6. base::throw(pkg_error(paste0("Unknown OS. Don't know how to query or install system packages for ", …
7. | base::signalCondition(cond)
8. global (function (e) …
gaborcsardi commented 7 months ago

That's unfortunate. Here is the proper output nevertheless:

❯ pak::pkg_sysreqs("tidyverse", sysreqs_platform = "redhat-9")
✔ Updated metadata database: 5.36 MB in 8 files.
✔ Updating metadata database ... done
── Install scripts ─────────────────────────────────────────────────────────────────────────────────────────── Redhat 9 ──
dnf install -y libcurl-devel openssl-devel make zlib-devel freetype-devel libjpeg-turbo-devel libpng-devel \
  libtiff-devel libicu-devel fontconfig-devel fribidi-devel harfbuzz-devel libxml2-devel

── Packages and their system dependencies ────────────────────────────────────────────────────────────────────────────────
curl        – libcurl-devel, openssl-devel
fs          – make
haven       – make, zlib-devel
openssl     – openssl-devel
ragg        – freetype-devel, libjpeg-turbo-devel, libpng-devel, libtiff-devel
sass        – make
stringi     – libicu-devel
systemfonts – fontconfig-devel, freetype-devel
textshaping – freetype-devel, fribidi-devel, harfbuzz-devel
xml2        – libxml2-devel
fraba commented 7 months ago

Great!

dnf install -y libcurl-devel openssl-devel make zlib-devel freetype-devel libjpeg-turbo-devel libpng-devel \
  libtiff-devel libicu-devel fontconfig-devel fribidi-devel harfbuzz-devel libxml2-devel

allowed me to complete the installation.