cran4linux / bspm

R Bridge to System Package Manager
https://cran4linux.github.io/bspm
Other
80 stars 4 forks source link

`.Library.site` is not defined in archlinux #73

Closed brianmsm closed 1 year ago

brianmsm commented 1 year ago

I was using the package from archlinux, but there was something that didn't make sense to me and that is that every time I installed a new package, all its dependencies were reinstalled even though they were already installed in the system. Then I tried it on a docker with ubuntu with R installed and this didn't happen.

Actually, in archlinux this happens when I tried to install ggmosaic for example:

bspm::enable()
#> Tracing function "install.packages" in package "utils"
install.packages("ggmosaic")
Output ```r #> Available system packages... #> #> Install system packages... #> :: Synchronizing package databases... #> garuda #> core #> extra #> multilib #> chaotic-aur #> bioarchlinux #> desolve #> archpkgs #> :: Processing package changes... #> (1/67) r-cli #> (2/67) r-glue #> (3/67) r-rlang #> (4/67) r-lifecycle #> (5/67) r-gtable #> (6/67) r-isoband #> (7/67) r-farver #> (8/67) r-labeling #> (9/67) r-colorspace #> (10/67) r-munsell #> (11/67) r-r6 #> (12/67) r-rcolorbrewer #> (13/67) r-viridislite #> (14/67) r-scales #> (15/67) r-fansi #> (16/67) r-magrittr #> (17/67) r-utf8 #> (18/67) r-vctrs #> (19/67) r-pillar #> (20/67) r-pkgconfig #> (21/67) r-tibble #> (22/67) r-withr #> (23/67) r-ggplot2 #> (24/67) r-generics #> (25/67) r-tidyselect #> (26/67) r-dplyr #> (27/67) r-base64enc #> (28/67) r-digest #> (29/67) r-ellipsis #> (30/67) r-fastmap #> (31/67) r-htmltools #> (32/67) r-jsonlite #> (33/67) r-lazyeval #> (34/67) r-crosstalk #> (35/67) r-data.table #> (36/67) r-evaluate #> (37/67) r-xfun #> (38/67) r-highr #> (39/67) r-yaml #> (40/67) r-knitr #> (41/67) r-cachem #> (42/67) r-jquerylib #> (43/67) r-memoise #> (44/67) r-mime #> (45/67) r-fs #> (46/67) r-rappdirs #> (47/67) r-sass #> (48/67) r-bslib #> (49/67) r-fontawesome #> (50/67) r-stringi #> (51/67) r-stringr #> (52/67) r-tinytex #> (53/67) r-rmarkdown #> (54/67) r-htmlwidgets #> (55/67) r-curl #> (56/67) r-sys #> (57/67) r-askpass #> (58/67) r-openssl #> (59/67) r-httr #> (60/67) r-rcpp #> (61/67) r-later #> (62/67) r-promises #> (63/67) r-purrr #> (64/67) r-tidyr #> (65/67) r-plotly #> (66/67) r-ggrepel #> (67/67) r-plyr #> #> Installing packages into ‘/home/brian/R/x86_64-pc-linux-gnu-library/4.3’ #> (as ‘lib’ is unspecified) #> Warning in install.packages : #> packages ‘methods’, ‘utils’, ‘grDevices’, ‘grid’, ‘stats’, ‘tools’, ‘graphics’, ‘splines’ are base packages, and should not be updated #> trying URL 'https://cran.rstudio.com/src/contrib/productplots_0.1.1.tar.gz' #> Content type 'application/x-gzip' length 234490 bytes (228 KB) #> ================================================== #> downloaded 228 KB #> #> trying URL 'https://cran.rstudio.com/src/contrib/MASS_7.3-60.tar.gz' #> Content type 'application/x-gzip' length 561534 bytes (548 KB) #> ================================================== #> downloaded 548 KB #> #> trying URL 'https://cran.rstudio.com/src/contrib/mgcv_1.9-0.tar.gz' #> Content type 'application/x-gzip' length 1112050 bytes (1.1 MB) #> ================================================== #> downloaded 1.1 MB #> #> trying URL 'https://cran.rstudio.com/src/contrib/nlme_3.1-162.tar.gz' #> Content type 'application/x-gzip' length 848546 bytes (828 KB) #> ================================================== #> downloaded 828 KB #> #> trying URL 'https://cran.rstudio.com/src/contrib/Matrix_1.6-0.tar.gz' #> Content type 'application/x-gzip' length 2058479 bytes (2.0 MB) #> ================================================== #> downloaded 2.0 MB #> #> trying URL 'https://cran.rstudio.com/src/contrib/lattice_0.21-8.tar.gz' #> Content type 'application/x-gzip' length 589330 bytes (575 KB) #> ================================================== #> downloaded 575 KB #> #> trying URL 'https://cran.rstudio.com/src/contrib/ggmosaic_0.3.3.tar.gz' #> Content type 'application/x-gzip' length 473641 bytes (462 KB) #> ================================================== #> downloaded 462 KB #> #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘productplots’ ... #> ** package ‘productplots’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** R #> ** data #> *** moving datasets to lazyload DB #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** help #> *** installing help indices #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (productplots) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘MASS’ ... #> ** package ‘MASS’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** libs #> using C compiler: ‘gcc (GCC) 13.1.1 20230429’ #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c MASS.c -o MASS.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c lqs.c -o lqs.o #> gcc -shared -L/usr/lib64/R/lib -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -o MASS.so MASS.o lqs.o -L/usr/lib64/R/lib -lR #> installing to /home/brian/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-MASS/00new/MASS/libs #> ** R #> ** data #> *** moving datasets to lazyload DB #> ** inst #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** help #> *** installing help indices #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** checking absolute paths in shared objects and dynamic libraries #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (MASS) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘lattice’ ... #> ** package ‘lattice’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** libs #> using C compiler: ‘gcc (GCC) 13.1.1 20230429’ #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c init.c -o init.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c threeDplot.c -o threeDplot.o #> gcc -shared -L/usr/lib64/R/lib -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -o lattice.so init.o threeDplot.o -L/usr/lib64/R/lib -lR #> installing to /home/brian/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-lattice/00new/lattice/libs #> ** R #> ** data #> *** moving datasets to lazyload DB #> ** demo #> ** inst #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** help #> *** installing help indices #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** installing vignettes #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** checking absolute paths in shared objects and dynamic libraries #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (lattice) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘nlme’ ... #> ** package ‘nlme’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** libs #> using C compiler: ‘gcc (GCC) 13.1.1 20230429’ #> using Fortran compiler: ‘GNU Fortran (GCC) 13.1.1 20230429’ #> gfortran -fpic -g -O2 -c chol.f -o chol.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c corStruct.c -o corStruct.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c gnls.c -o gnls.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c init.c -o init.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c matrix.c -o matrix.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c nlOptimizer.c -o nlOptimizer.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c nlme.c -o nlme.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c nlmefit.c -o nlmefit.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c pdMat.c -o pdMat.o #> gcc -I"/usr/include/R/" -DNDEBUG -I/usr/local/include -fvisibility=hidden -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c pythag.c -o pythag.o #> gfortran -fpic -g -O2 -c rs.f -o rs.o #> gcc -shared -L/usr/lib64/R/lib -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -o nlme.so chol.o corStruct.o gnls.o init.o matrix.o nlOptimizer.o nlme.o nlmefit.o pdMat.o pythag.o rs.o -lgfortran -lm -lquadmath -L/usr/lib64/R/lib -lR #> installing to /home/brian/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-nlme/00new/nlme/libs #> ** R #> ** data #> *** moving datasets to lazyload DB #> ** inst #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** help #> *** installing help indices #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** checking absolute paths in shared objects and dynamic libraries #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (nlme) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘Matrix’ ... #> ** package ‘Matrix’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** libs #> using C compiler: ‘gcc (GCC) 13.1.1 20230429’ #> gcc -I"/usr/include/R/" -DNDEBUG -DNTIMER -I./SuiteSparse_config -DUSE_FC_LEN_T -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c CHMfactor.c -o CHMfactor.o #> gcc -I"/usr/include/R/" -DNDEBUG -DNTIMER -I./SuiteSparse_config -DUSE_FC_LEN_T -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c Csparse.c -o Csparse.o #> ... #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD' #> ( cd Lib ; make clean ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD/Lib' #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD/Lib' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD' #> ( cd Source ; make clean ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD/Source' #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD/Source' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD' #> ( cd Source ; make clean ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD/Source' #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD/Source' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/SuiteSparse_config' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/SuiteSparse_config' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD' #> ( cd Lib ; make -f "/usr/lib64/R/etc/Makeconf" -f Makefile ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD/Lib' #> gcc -I"/usr/include/R/" -DNDEBUG -I../../AMD/Include -I../../AMD/Source -I../../COLAMD/Include -I../Include -I../../SuiteSparse_config -DNPARTITION -DNPRINT -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c ../Core/cholmod_aat.c -o cholmod_aat.o #> ... #> gcc -I"/usr/include/R/" -DNDEBUG -I../../AMD/Include -I../../AMD/Source -I../../COLAMD/Include -I../Include -I../../SuiteSparse_config -DNPARTITION -DNPRINT -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -DDLONG -c ../Supernodal/cholmod_super_symbolic.c -o cholmod_l_super_symbolic.o #> ar -rucs ../../CHOLMOD.a cholmod_aat.o cholmod_add.o cholmod_band.o cholmod_change_factor.o cholmod_common.o cholmod_complex.o cholmod_copy.o cholmod_dense.o cholmod_error.o cholmod_factor.o cholmod_memory.o cholmod_sparse.o cholmod_transpose.o cholmod_triplet.o cholmod_version.o cholmod_check.o cholmod_read.o cholmod_write.o cholmod_amd.o cholmod_analyze.o cholmod_colamd.o cholmod_etree.o cholmod_factorize.o cholmod_postorder.o cholmod_rcond.o cholmod_resymbol.o cholmod_rowcolcounts.o cholmod_rowfac.o cholmod_solve.o cholmod_spsolve.o cholmod_drop.o cholmod_horzcat.o cholmod_norm.o cholmod_scale.o cholmod_sdmult.o cholmod_ssmult.o cholmod_submatrix.o cholmod_vertcat.o cholmod_symmetry.o cholmod_rowadd.o cholmod_rowdel.o cholmod_updown.o cholmod_super_numeric.o cholmod_super_solve.o cholmod_super_symbolic.o cholmod_l_aat.o cholmod_l_add.o cholmod_l_band.o cholmod_l_change_factor.o cholmod_l_common.o cholmod_l_complex.o cholmod_l_copy.o cholmod_l_dense.o cholmod_l_error.o cholmod_l_factor.o cholmod_l_memory.o cholmod_l_sparse.o cholmod_l_transpose.o cholmod_l_triplet.o cholmod_l_version.o cholmod_l_check.o cholmod_l_read.o cholmod_l_write.o cholmod_l_amd.o cholmod_l_analyze.o cholmod_l_colamd.o cholmod_l_etree.o cholmod_l_factorize.o cholmod_l_postorder.o cholmod_l_rcond.o cholmod_l_resymbol.o cholmod_l_rowcolcounts.o cholmod_l_rowfac.o cholmod_l_solve.o cholmod_l_spsolve.o cholmod_l_drop.o cholmod_l_horzcat.o cholmod_l_norm.o cholmod_l_scale.o cholmod_l_sdmult.o cholmod_l_ssmult.o cholmod_l_submatrix.o cholmod_l_vertcat.o cholmod_l_symmetry.o cholmod_l_rowadd.o cholmod_l_rowdel.o cholmod_l_updown.o cholmod_l_super_numeric.o cholmod_l_super_solve.o cholmod_l_super_symbolic.o #> ar: `u' modifier ignored since `D' is the default (see `U') #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD/Lib' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/CHOLMOD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD' #> ( cd Source ; make -f "/usr/lib64/R/etc/Makeconf" -f Makefile lib ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD/Source' #> gcc -I"/usr/include/R/" -DNDEBUG -I../Include -I../../SuiteSparse_config -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c colamd.c -o colamd.o #> gcc -I"/usr/include/R/" -DNDEBUG -I../Include -I../../SuiteSparse_config -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -I../Include -DDLONG -c colamd.c -o colamd_l.o #> ar -rucs ../../COLAMD.a colamd.o colamd_l.o #> ar: `u' modifier ignored since `D' is the default (see `U') #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD/Source' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/COLAMD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD' #> ( cd Source ; make -f "/usr/lib64/R/etc/Makeconf" -f Makefile lib ) #> make[2]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD/Source' #> gcc -I"/usr/include/R/" -DNDEBUG -I../Include -I../../SuiteSparse_config -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -I../Include -DDINT -c amd_aat.c -o amd_i_aat.o #> ... #> gcc -I"/usr/include/R/" -DNDEBUG -I../Include -I../../SuiteSparse_config -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -I../Include -DDLONG -c amd_dump.c -o amd_l_dump.o #> ar -rucs ../../AMD.a amd_i_aat.o amd_l_aat.o amd_i_1.o amd_l_1.o amd_i_2.o amd_l_2.o amd_i_postorder.o amd_l_postorder.o amd_i_post_tree.o amd_l_post_tree.o amd_i_defaults.o amd_l_defaults.o amd_i_order.o amd_l_order.o amd_i_control.o amd_l_control.o amd_i_info.o amd_l_info.o amd_i_valid.o amd_l_valid.o amd_i_preprocess.o amd_l_preprocess.o amd_i_dump.o amd_l_dump.o #> ar: `u' modifier ignored since `D' is the default (see `U') #> make[2]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD/Source' #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/AMD' #> make[1]: Entering directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/SuiteSparse_config' #> gcc -I"/usr/include/R/" -DNDEBUG -DNTIMER -I/usr/local/include -fpic -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects -c SuiteSparse_config.c -o SuiteSparse_config.o #> ar -rucs ../SuiteSparse_config.a SuiteSparse_config.o #> ar: `u' modifier ignored since `D' is the default (see `U') #> make[1]: Leaving directory '/tmp/RtmpCRdizz/R.INSTALL166d8168fc23d/Matrix/src/SuiteSparse_config' #> gcc -shared -L/usr/lib64/R/lib -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -o Matrix.so CHMfactor.o Csparse.o init.o Mutils.o chm_common.o cs.o cs_utils.o dense.o dgCMatrix.o dgeMatrix.o factorizations.o kappa.o sparseVector.o abIndex.o packedMatrix.o products.o unpackedMatrix.o sparse.o subscript.o validity.o CHOLMOD.a COLAMD.a AMD.a SuiteSparse_config.a -llapack -lblas -lgfortran -lm -lquadmath -L/usr/lib64/R/lib -lR #> installing to /home/brian/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-Matrix/00new/Matrix/libs #> ** R #> ** data #> ** inst #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> Creating a generic function for ‘zapsmall’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘unname’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘drop’ from package ‘base’ in package ‘Matrix’ #> in method for ‘coerce’ with signature ‘"matrix.csc","dgCMatrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csr","dgRMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.coo","dgTMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.csr","dgCMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.coo","dgCMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.csc","CsparseMatrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csc","RsparseMatrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csc","TsparseMatrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csr","CsparseMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.csr","RsparseMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.csr","TsparseMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.coo","CsparseMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.coo","RsparseMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.coo","TsparseMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.csc","sparseMatrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csr","sparseMatrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.coo","sparseMatrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"matrix.csc","Matrix"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"matrix.csr","Matrix"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"matrix.coo","Matrix"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"dgCMatrix","matrix.csc"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"dgRMatrix","matrix.csr"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"dgTMatrix","matrix.coo"’: no definition for class “matrix.coo” #> in method for ‘coerce’ with signature ‘"Matrix","matrix.csc"’: no definition for class “matrix.csc” #> in method for ‘coerce’ with signature ‘"Matrix","matrix.csr"’: no definition for class “matrix.csr” #> in method for ‘coerce’ with signature ‘"Matrix","matrix.coo"’: no definition for class “matrix.coo” #> Creating a generic function for ‘chol2inv’ from ‘base’ in package ‘Matrix’ #> (from the saved implicit definition) #> Creating a generic function for ‘chol2inv’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘diag’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘colSums’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘colMeans’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘rowSums’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘rowMeans’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘diag<-’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘crossprod’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘tcrossprod’ from package ‘base’ in package ‘Matrix’ #> in method for ‘coerce’ with signature ‘"graphAM","TsparseMatrix"’: no definition for class “graphAM” #> in method for ‘coerce’ with signature ‘"graphNEL","TsparseMatrix"’: no definition for class “graphNEL” #> in method for ‘coerce’ with signature ‘"graph","CsparseMatrix"’: no definition for class “graph” #> in method for ‘coerce’ with signature ‘"graph","RsparseMatrix"’: no definition for class “graph” #> in method for ‘coerce’ with signature ‘"graph","TsparseMatrix"’: no definition for class “graph” #> in method for ‘coerce’ with signature ‘"graph","sparseMatrix"’: no definition for class “graph” #> in method for ‘coerce’ with signature ‘"graph","Matrix"’: no definition for class “graph” #> in method for ‘coerce’ with signature ‘"TsparseMatrix","graphNEL"’: no definition for class “graphNEL” #> in method for ‘coerce’ with signature ‘"Matrix","graphNEL"’: no definition for class “graphNEL” #> in method for ‘coerce’ with signature ‘"Matrix","graph"’: no definition for class “graph” #> Creating a generic function for ‘norm’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘cov2cor’ from package ‘stats’ in package ‘Matrix’ #> Creating a generic function for ‘qr.Q’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.R’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.X’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.coef’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.fitted’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.resid’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.qty’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘qr.qy’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘rcond’ from ‘base’ in package ‘Matrix’ #> (from the saved implicit definition) #> Creating a generic function for ‘rcond’ from package ‘base’ in package ‘Matrix’ #> Creating a generic function for ‘toeplitz’ from ‘stats’ in package ‘Matrix’ #> (from the saved implicit definition) #> Creating a generic function for ‘toeplitz’ from package ‘stats’ in package ‘Matrix’ #> Creating a generic function for ‘which’ from package ‘base’ in package ‘Matrix’ #> ** help #> *** installing help indices #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** installing vignettes #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** checking absolute paths in shared objects and dynamic libraries #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (Matrix) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> * installing *source* package ‘ggmosaic’ ... #> ** package ‘ggmosaic’ successfully unpacked and MD5 sums checked #> ** using staged installation #> ** R #> ** data #> *** moving datasets to lazyload DB #> ** inst #> ** byte-compile and prepare package for lazy loading #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** help #> *** installing help indices #> *** copying figures #> ** building package indices #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** installing vignettes #> ** testing if installed package can be loaded from temporary location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package can be loaded from final location #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ** testing if installed package keeps a record of temporary installation path #> * DONE (ggmosaic) #> Loading required package: utils #> Tracing function "install.packages" in package "utils" #> ERROR: failed to lock directory ‘/home/brian/R/x86_64-pc-linux-gnu-library/4.3’ for modifying #> Try removing ‘/home/brian/R/x86_64-pc-linux-gnu-library/4.3/00LOCK-mgcv’ #> Warning in install.packages : #> installation of package ‘mgcv’ had non-zero exit status #> #> The downloaded source packages are in #> ‘/tmp/RtmpXyNtIZ/downloaded_packages’ ```

Created on 2023-07-13 with reprex v2.0.2

And this happens because inside the pkg_deps function, .Library.site is used to check the packages that are installed on the system:

https://github.com/Enchufa2/bspm/blob/10d2f4a941ddd3f5dcc61cd58af5be91267474c1/R/utils.R#L59

Inside of:

https://github.com/Enchufa2/bspm/blob/10d2f4a941ddd3f5dcc61cd58af5be91267474c1/R/utils.R#L57-L76

And although in Ubuntu I see that this contains information, in archlinux this is not so.

.Library.site
#> character(0)

Created on 2023-07-13 with reprex v2.0.2

It seems to me that this could be easily solved by using .libPaths() instead of .Library.site:

.libPaths()
#> [1] "/home/brian/R/x86_64-pc-linux-gnu-library/4.3"
#> [2] "/usr/lib/R/library"

Created on 2023-07-13 with reprex v2.0.2

When I modify the function:

bspm::enable()
#> Tracing function "install.packages" in package "utils"
pkg_deps_m <- function (pkgs, dependencies, db, ..., all = TRUE) {
  pkgs <- unique(pkgs)
  inst <- row.names(utils::installed.packages(.libPaths(), 
                                              ...))
  deps <- tools::package_dependencies(pkgs, db, c("Depends", 
                                                  "Imports"), recursive = TRUE)
  deps <- unlist(deps, use.names = FALSE)
  if (!all) {
    hard <- tools::package_dependencies(pkgs, db, "LinkingTo", 
                                        recursive = FALSE)
    deps <- c(deps, unlist(hard, use.names = FALSE))
  }
  if (isTRUE(dependencies) || "Suggests" %in% dependencies) {
    soft <- tools::package_dependencies(pkgs, db, "Suggests", 
                                        recursive = FALSE)
    deps <- c(deps, unlist(soft, use.names = FALSE))
  }
  if ("Enhances" %in% dependencies) {
    enha <- tools::package_dependencies(pkgs, db, "Enhances", 
                                        recursive = FALSE)
    deps <- c(deps, unlist(enha, use.names = FALSE))
  }
  pkgs <- unique(c(setdiff(deps, inst), if (all) pkgs))
  pkgs
}

environment(pkg_deps_m) <- asNamespace('bspm')
utils::assignInNamespace("pkg_deps", pkg_deps_m, ns = "bspm")

Created on 2023-07-13 with reprex v2.0.2

The installation is given directly to the package of interest if the rest of the dependencies are already installed:

install.packages("ggmosaic")
#> Available system packages...
#> 
#> Installing package into ‘/home/brian/R/x86_64-pc-linux-gnu-library/4.3’
#> (as ‘lib’ is unspecified)
#> trying URL 'https://cran.rstudio.com/src/contrib/ggmosaic_0.3.3.tar.gz'
#> Content type 'application/x-gzip' length 473641 bytes (462 KB)
#> ==================================================
#>   downloaded 462 KB
#> 
#> Loading required package: utils
#> Tracing function "install.packages" in package "utils"
#> * installing *source* package ‘ggmosaic’ ...
#> ** package ‘ggmosaic’ successfully unpacked and MD5 sums checked
#> ** using staged installation
#> ** R
#> ** data
#> *** moving datasets to lazyload DB
#> ** inst
#> ** byte-compile and prepare package for lazy loading
#> Loading required package: utils
#> Tracing function "install.packages" in package "utils"
#> ** help
#> *** installing help indices
#> *** copying figures
#> ** building package indices
#> Loading required package: utils
#> Tracing function "install.packages" in package "utils"
#> ** installing vignettes
#> ** testing if installed package can be loaded from temporary location
#> Loading required package: utils
#> Tracing function "install.packages" in package "utils"
#> ** testing if installed package can be loaded from final location
#> Loading required package: utils
#> Tracing function "install.packages" in package "utils"
#> ** testing if installed package keeps a record of temporary installation path
#> * DONE (ggmosaic)
#> 
#> The downloaded source packages are in
#> ‘/tmp/RtmplDEYMc/downloaded_packages’

Created on 2023-07-13 with reprex v2.0.2

Enchufa2 commented 1 year ago

Thanks for the report!

It seems to me that this could be easily solved by using .libPaths() instead of .Library.site:

It's not that simple, because we specifically want to exclude the user library there. We really want .Library.site, but it seems that it may be empty according to the documentation. In such a case, a better solution would probably be:

unique(c(.Library.site, .Library))

Could you please check what's the output of this for you?

brianmsm commented 1 year ago

That seems to work:

.Library.site
#> character(0)
.Library
#> [1] "/usr/lib64/R/library"
unique(c(.Library.site, .Library))
#> [1] "/usr/lib64/R/library"

Created on 2023-07-13 with reprex v2.0.2

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.3.1 (2023-06-16) #> os Garuda Linux #> system x86_64, linux-gnu #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz America/Lima #> date 2023-07-13 #> pandoc 3.1.2 @ /usr/lib/rstudio/bin/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> cli 3.6.1 2023-03-23 [2] CRAN (R 4.3.0) #> digest 0.6.33 2023-07-07 [1] CRAN (R 4.3.1) #> evaluate 0.21 2023-05-05 [2] CRAN (R 4.3.0) #> fastmap 1.1.1 2023-02-24 [2] CRAN (R 4.3.1) #> fs 1.6.2 2023-04-25 [2] CRAN (R 4.3.1) #> glue 1.6.2 2022-02-24 [2] CRAN (R 4.3.0) #> htmltools 0.5.5 2023-03-23 [2] CRAN (R 4.3.1) #> knitr 1.43 2023-05-25 [2] CRAN (R 4.3.1) #> lifecycle 1.0.3 2022-10-07 [2] CRAN (R 4.3.0) #> magrittr 2.0.3 2022-03-30 [2] CRAN (R 4.3.0) #> purrr 1.0.1 2023-01-10 [2] CRAN (R 4.3.0) #> R.cache 0.16.0 2022-07-21 [2] CRAN (R 4.3.0) #> R.methodsS3 1.8.2 2022-06-13 [2] CRAN (R 4.3.0) #> R.oo 1.25.0 2022-06-12 [2] CRAN (R 4.3.0) #> R.utils 2.12.2 2022-11-11 [2] CRAN (R 4.3.0) #> reprex 2.0.2 2022-08-17 [2] CRAN (R 4.3.1) #> rlang 1.1.1 2023-04-28 [2] CRAN (R 4.3.0) #> rmarkdown 2.23 2023-07-01 [2] CRAN (R 4.3.1) #> rstudioapi 0.15.0 2023-07-07 [2] CRAN (R 4.3.1) #> sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.3.0) #> styler 1.10.1 2023-06-05 [2] CRAN (R 4.3.0) #> vctrs 0.6.3 2023-06-14 [2] CRAN (R 4.3.0) #> withr 2.5.0 2022-03-03 [2] CRAN (R 4.3.0) #> xfun 0.39 2023-04-20 [2] CRAN (R 4.3.0) #> yaml 2.3.7 2023-01-23 [2] CRAN (R 4.3.0) #> #> [1] /home/brian/R/x86_64-pc-linux-gnu-library/4.3 #> [2] /usr/lib/R/library #> #> ────────────────────────────────────────────────────────────────────────────── ```