There should never be a "requirement" for libRblas.so
. In short, R allows you to build with the BLAS and LAPACK (subset of) sources it shipts, you then get this libRblas.so
. Or you can use the system BLAS and LAPACK libraries, which the Debian (and hence Ubuntu) package I am responsible for has been doing for probably close to twenty years, and which allows you to switch BLAS installation (Atlas, OpenBLAS, MKL, back in the day also Goto, ...).
As a demonstration, I just launched a suitable Ubuntu 22.04 Docker container based on r2u as it combines having R pre-made (using my r-base-core
package with the external BLAS linkage) as well as the (awesome !!) ability to take all of CRAN as Ubuntu binaries (see r2u for more). In short:
edd@rob:~$ docker run --rm -ti --security-opt seccomp=unconfined eddelbuettel/r2u:jammy
root@818091e49861:/# export PS1="root@r2u_docker:\w# "
root@r2u_docker:/# echo "192.168.1.114 dirk.eddelbuettel.com" >> /etc/hosts
root@r2u_docker:/# install.r imputeTS ## one command !!
Install system packages as root...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Ign https://dirk.eddelbuettel.com/cranapt jammy InRelease
Hit https://dirk.eddelbuettel.com/cranapt jammy Release
Hit http://archive.ubuntu.com/ubuntu jammy InRelease
Hit http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit http://security.ubuntu.com/ubuntu jammy-security InRelease
Get:1 https://ppa.launchpadcontent.net/marutter/rrutter4.0/ubuntu jammy InRelease [17.5 kB]
Fetched 17.5 kB in 0s (0 B/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Get:1 https://dirk.eddelbuettel.com/cranapt jammy/main amd64 r-cran-bitops amd64 1.0-7-1.ca2204.1 [25.5 kB]
Get:2 https://dirk.eddelbuettel.com/cranapt jammy/main amd64 r-cran-glue amd64 1.6.2-1.ca2204.1 [143 kB]
[... cutting here to satisfy SO quote limit ...]
Setting up r-cran-forecast (8.16-1.ca2204.1) ...
Setting up r-cran-imputets (3.2-1.ca2204.1) ...
root@r2u_docker:/#
after which we can indeed launch R and load it just fine:
root@r2u_docker:/# R
R version 4.2.1 (2022-06-23) -- "Funny-Looking Kid"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(imputeTS)
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
>
It uses external BLAS/LAPACK "by design":
root@r2u_docker:/# dpkg -l | grep -i "blas\|lapack" | cut -c-90
ii libblas-dev:amd64 3.10.0-2ubuntu1 amd64 Basi
ii libblas3:amd64 3.10.0-2ubuntu1 amd64 Basi
ii liblapack-dev:amd64 3.10.0-2ubuntu1 amd64 Libr
ii liblapack3:amd64 3.10.0-2ubuntu1 amd64 Libr
root@r2u_docker:/#
So I think this may be self-imposed by a combination of you having maybe compiled R locally plus the imputeTS
not dealing well with that (it should, it may be a bug). But I hope this also shows that this can be so much easier too.
If you have more detailed follow-up questions please come to the r-sig-debian
list which is friendly, no-sensense and low-volume.
PS For completness, the container's sessionInfo()
in a fresh session:
> sessionInfo()
R version 4.2.1 (2022-06-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
loaded via a namespace (and not attached):
[1] compiler_4.2.1 bspm_0.3.9
>
PPS A 'live' demo in one animated gif is in this tweet (tweeted as one cannot attach gifs over 2mb here).