libcrypto.so.10 issues in RStudio 1.2.x even after link libcrypto.so.1.0.0

Hi,

normally I use RStudio 1.1.44x as R (and more IDE) from https://www.rstudio.com/products/rstudio/download/
that is the release version which runs fine under Leap 42.3 and TW.
There is also a rolling development release (at this moment Fedora 1.2.565) found at https://dailies.rstudio.com/
To get it going in the past the typical links:


ln -s -f /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10
ln -s -f /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10

were sufficient.

now it fails when trying to start RStudio, stating:


This site can’t be reached

127.0.0.1 refused to connect.
Try:
Checking the connection
Checking the proxy and the firewall
ERR_CONNECTION_REFUSED

generally understandable, because RStudio Desktop is an embedded client/server app.
But a bit misleading this screen message is anyhow.

real diag:

rstudio --run-diagnostics

Using R script: /usr/bin/R

Attempting to launch R session...
  R_HOME=/usr/lib64/R
  R_DOC_DIR=/usr/lib64/R/doc
  R_INCLUDE_DIR=/usr/lib64/R/include
  R_SHARE_DIR=/usr/lib64/R/share
  LD_LIBRARY_PATH=/usr/lib64/R/lib::/lib:/usr/local/lib64
  PATH=/home/gsd/bin:/usr/local/bin:/usr/bin:/bin:/usr/lib/mit/sbin
  HOME=/home/gsd

R session launched, attempting to connect on port 13892...
/usr/lib/rstudio/bin/rsession: /usr/lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /usr/lib/rstudio/bin/rsession)

Connected to R session, attempting to initialize...


Checking with ldd:


ldd /usr/lib/rstudio/bin/rsession
/usr/lib/rstudio/bin/rsession: /usr/lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /usr/lib/rstudio/bin/rsession)
...
        libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f6e9adcf000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f6e9a964000)
...

This is a hard failure.

I had tried to install the libopenssl_1_0_0-steam and use these for a link target,

ls -la `locate libcrypto.so.10`
lrwxrwxrwx 1 root root 39 Apr 18 20:32 /usr/lib64/libcrypto.so.10 -> /usr/lib/steam/lib64/libcrypto.so.1.0.0

but same failure.

ldconfig states:

ldconfig
ldconfig: /usr/lib64/libcrypto.so.1.0.0 is not a symbolic link
ldconfig: /usr/lib64/libssl.so.1.0.0 is not a symbolic link

which I do not understand at all. This warning disappears when I remove the links ref .10.

On Leap 42.3 the same RStudio 1.2.565 runs okay when the lib links are in place. ldd just gives a warning:

/usr/lib/rstudio/bin/rsession: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/lib/rstudio/bin/rsession)

which is just a warning/soft fail.

Any hints?

That version is from the new openssl packages. Try installing libgcrypt11, then create a symlink. AFAIK that should work

Thanks Knurpht.

Tried it by downloading your TW community edition libgcrypt11 lib and extracted it to

/usr/local/lib64/

Then created a link to it within /usr/lib64/ as libcrypto.so.10:

# ls -la /usr/local/lib64/libgcrypt*
lrwxrwxrwx 1 root root     36 Apr 19 18:31 /usr/local/lib64/libgcrypt.so.11 -> /usr/local/lib64/libgcrypt.so.11.8.3
-rwxr-xr-x 1 root root 587960 Apr 17 16:50 /usr/local/lib64/libgcrypt.so.11.8.3

# ln -s -f /usr/local/lib64/libgcrypt.so.11 libcrypto.so.10

# ldconfig

but I get the same problem:


# ldd /usr/lib/rstudio/bin/rsession
/usr/lib/rstudio/bin/rsession: /usr/lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /usr/lib/rstudio/bin/rsession)
...
        libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007ff2bcb09000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007ff2bc888000)
...

so no progress so far.

So far I only had tried several different versions of libopenssl1_0_0.rpm because according to Yast software installer only these are providers of libcrypto.so.1.0.x.
Never had considered that libgcrypt could be a variant of libcrypto.

I had tried to manually compile RStudio on my TW system hoping this might help. Compiling fails. I will open another thread for that issue.

Any hints for thinks I should further try?

I start to understand.
In the past the libopenssl 1.0.x libs did not contain any version info. See e.g. https://askubuntu.com/questions/830466/libcrypto-so-1-0-0-no-version-information-available-required-by-ssh In Leap 42.3 libopenssl this is still the case. That is the reason I get the ldd warning

/usr/lib64/libcrypto.so.10: no version information available (required by /usr/lib/rstudio/bin/rsession)

see my first post.

Probably on TW the libs have been compiled with symbol version included - those versions are not those expected and result in the failure.

So how to get a libopenssl package 1.0.x without symbol versions?

Banging my head against the wall for not asking this before: Why don’t you use the openSUSE package for Rstudio ? See https://software.opensuse.org/package/rstudio .

That is too old. Current on the RStudio site is the release version 1.1.447, the opensuse build is 1.1.423 at this moment. And as said, 1.1.x rpm from RStudio is technically fine so far if I am developing R only.

The daily builds of 1.2.x are failing nowdays with that libcrypto issue.

And 1.2.x is important for me now, as that is the only way to get the experimental option to have one environment where R scripts and Python scripts can share their data in a way.

Try to build a package yourself in OBS? You can use the credentials you created here, and start by branching the existing package then unlink it, adjust the .spec file etc.

Yeah had considered that too, but have no clue at all how to do it. I will look for a OBS Howto.

In between I have tried to compile libopenssl from the bare source tar. And use the libcrypto from that compile. But no luck either:

rstudio --run-diagnostics
rstudio: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/lib64/libssl.so.10)
rstudio: relocation error: /usr/lib64/libssl.so.10: symbol OPENSSL_init_library version OPENSSL_1.0.0 not defined in file libcrypto.so.1.0.0 with link time reference


whatever that error code means …

It is only trial and error.

My method to start understanding OBS was branching a simple package ( dog ) and try to understand the spec file, In the end that file is what;s telling OBS how to build the package, It;s a bit of a learning curve, but let me assure you: it’s worth the time.

Gave it a try - step by step cloned 1:1 the rstudio 1.1.423 official repo:

https://build.opensuse.org/package/show/devel:languages:R:released/rstudio?rev=6#

into my home build space:

https://build.opensuse.org/package/show/home:gsgx/RStud1_1_423#

but that does not build - stays unresolvable: BuildRequires: R-rsconnect

So probably I would have to clone that package from the devel:languages:R:released area as well. And probably many more. May be I will give it another try later on.

Thanks Knurpth.

Or include the repo where the requirents live.

I have read the OBS tutorial. Found that I should add a file named _link containg the repository to include. Tried to define a link file and add it to my project. No good.

 Error while creating '_link' file: devel:languages:R:released/RStud1_1_423.  

I do not understand that error code. My link file just contained:

<link project='devel:languages:R:released'/> 

That is to include all R packages from there. But the error looks like my trial package RStud1_1_423 is linked somewhere. That is not my intention.

Searched the forums for “_link”. Only 8 threads containing that word, none really any help. A mention of a subforum for OBS. But where - I do not see it?

Can you point me to a more elaborate tutorial or example?

Here’s an example of including other repos ( in this case devel:languages:python ) to fulfil deps, found under the Advanced, then Meta links. The _link file is the link for a branched package BTW.


<project name="home:ComputerSmurf:Extras">
  <title/>
  <description/>
  <person userid="ComputerSmurf" role="maintainer"/>
  <person userid="Knurpht" role="maintainer"/>
  <repository name="openSUSE_Tumbleweed">
**    <path project="devel:languages:python" repository="openSUSE_Tumbleweed"/>**
    <path project="openSUSE:Factory" repository="snapshot"/>
    <arch>i586</arch>
    <arch>x86_64</arch>
  </repository>
  <repository name="openSUSE_Leap_42.3">
**    <path project="devel:languages:python" repository="openSUSE_Leap_42.3"/>**
    <path project="openSUSE:Leap:42.3" repository="standard"/>
    <arch>x86_64</arch>
  </repository>
  <repository name="openSUSE_Leap_15.0">
**    <path project="devel:languages:python" repository="openSUSE_Leap_15.0"/>**
    <path project="openSUSE:Leap:15.0" repository="standard"/>
    <arch>x86_64</arch>
  </repository>
</project>