vscode-R icon indicating copy to clipboard operation
vscode-R copied to clipboard

LD_LIBRARY_PATH is not properly exported

Open AmelZulji opened this issue 1 year ago • 6 comments

Describe the bug Attaching R doesn't properly sets LD_LIBRARY_PATH (it leads to errors when loading libraries). When I lunch R from system (the same one which I specify in r.path and r.term) has additional libraries on path as compared to attached R. I tried to update the LD_LIBRARY_PATH in .vscode-server/extensions/reditorsupport.r-2.8.2/R/session/init.R. when I attach R afterwards Sys.getenv("LD_LIBRARY_PATH") give updated LD_LIBRARY_PATH, however it seems like the libraries are still not accessible and the same error persist:

unable to load shared object 'proj/renv/library/R-4.3/x86_64-pc-linux-gnu/igraph/libs/igraph.so':
  /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /proj/renv/library/R-4.3/x86_64-pc-linux-gnu/igraph/libs/igraph.so)

loading libraries in manualy launched R works with no errors.

To Reproduce

Can you fix this issue by yourself? (We appreciate the help) No

Environment (please complete the following information):

  • OS: Linux
  • VSCode Version: 1.88.1
  • R Version: 4.3.3
  • vscode-R version: 2.8.2

Thank you and kind regards, Amel

AmelZulji avatar Apr 23 '24 12:04 AmelZulji

Can anybody please let me know if this is something that can be adressed?

AmelZulji avatar Apr 30 '24 10:04 AmelZulji

Have you seen https://github.com/REditorSupport/vscode-R/wiki/Working-with-renv-enabled-projects?

eitsupi avatar Apr 30 '24 10:04 eitsupi

Thank you for the reply @eitsupi.

I have a renv library /project/renv/library/R-4.2/x86_64-pc-linux-gnu. within that library languageserver and jsonlite are installed and that library is included within r.libPaths.

The problem that I have is that when I launch R from VSCode I cannot load any of the libraries which is within /project/renv/library/R-4.2/x86_64-pc-linux-gnu. I get the error mentioned above.

If i start the R terminal outside the VSCode I can normally load those libraries.

The problem in my opinion is how R is started within VSCode and outside.

Outside of VSCode:

> Sys.getenv("PATH")
[1] "/opt/bwhpc/common/compiler/gnu/12.1.0/bin:/opt/bwhpc/common/math/R/4.2.1-mkl-2022.2-gnu-12.1-cairo/bin:/home/hd/hd_hd/hd_ut239/.local/bin:/home/hd/hd_hd/hd_ut239/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hd/hd_hd/hd_ut239/bin/cmake-3.25.2-linux-x86_64/bin"

Within VSCode:

> Sys.getenv("PATH")
[1] "/gpfs/bwfor/home/hd/hd_hd/hd_ut239/.vscode-server/cli/servers/Stable-e170252f762678dec6ca2cc69aba1570769a5d39/server/bin/remote-cli:/home/hd/hd_hd/hd_ut239/.local/bin:/home/hd/hd_hd/hd_ut239/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hd/hd_hd/hd_ut239/bin/cmake-3.25.2-linux-x86_64/bin/:/home/hd/hd_hd/hd_ut239/bin/cmake-3.25.2-linux-x86_64/bin/"

I am using VSCode to connect remotly to HPC. Within HPC, R is available as module, when i module load R it loads R but in addition it also load compiler/gnu/12.1 and numlib/mkl/2022.2. I have an impression that those additional modules are causing problem in VScode.

Any help would be greatly appreciated. Regards, Amel

AmelZulji avatar Apr 30 '24 11:04 AmelZulji

@renkun-ken would you mind having a look into this?

AmelZulji avatar May 15 '24 13:05 AmelZulji

I have no idea what the "correct" solution is here but the following workaround seems to work for me:

  • Create the file in your project ./bin/loadR.sh
  • Populate the file with what ever commands are needed to load the correct module environment + environment variables e.g.
module load R
export LD_LIBRARY_PATH=<what ever you need>
R $@
  • Make the script executable chmod 755 ./bin/loadR.sh
  • Update your local project specific settings file (./.vscode/settings.json) to launch R using this script
{
    "r.rterm.linux": "${workspaceFolder}/bin/loadR.sh"
}

When you then attach R via the command pallete this should have the correct environment set up.

image

gowerc avatar May 17 '24 10:05 gowerc