Bug 2265000 - raco pkg install fails with: SSL not available; check `ssl-load-fail-reason'
Summary: raco pkg install fails with: SSL not available; check `ssl-load-fail-reason'
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: racket
Version: 39
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Jens Petersen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-02-19 21:32 UTC by Trevor Cook
Modified: 2024-06-02 03:37 UTC (History)
1 user (show)

Fixed In Version: racket-8.12-1.fc41 racket-8.12-2.fc39
Clone Of:
Environment:
Last Closed: 2024-06-02 03:37:03 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Trevor Cook 2024-02-19 21:32:34 UTC
The openssl module fails to load, giving an `ssl-load-fail-reason` of `ffi-lib: couldn't open "libcrypto.so" (libcrypto.so: cannot open shared object file: No such file or directory)`. This also has the effect of causing package installations through `raco` to fail with the following message:

"ssl-make-client-context: requested protocol not supported; SSL not available; check `ssl-load-fail-reason'"

Reproducible: Always

Steps to Reproduce:
1. Launch the racket REPL.
2. Enter (require openssl) into the REPL.
3. Type ssl-load-fail-reason into the REPL.
Actual Results:  
The REPL returns `"ffi-lib: couldn't open "libcrypto.so" (libcrypto.so: cannot open shared object file: No such file or directory)"`.

Expected Results:  
The module should load and ssl-load-fail-reason should not return a message.

Comment 1 Jens Petersen 2024-04-29 15:10:03 UTC
I just tried on an up-to-date F39 system and I can't reproduce actually.

racket-minimal-7.9-1.fc39.x86_64
openssl-3.1.1-4.fc39.x86_64

What package versions do you have?

Comment 2 Trevor Cook 2024-04-30 01:15:31 UTC
(In reply to Jens Petersen from comment #1)
> I just tried on an up-to-date F39 system and I can't reproduce actually.
> 
> racket-minimal-7.9-1.fc39.x86_64
> openssl-3.1.1-4.fc39.x86_64
> 
> What package versions do you have?

I can still reproduce on a fresh, fully-updated install of Fedora 39. I have the same package versions. I can also reproduce on Fedora 40.

Comment 3 Jens Petersen 2024-04-30 05:13:23 UTC
Could you please copy the exact full output you see in a terminal here? that would be helpful

eg this is what I am seeing:

fedora:~$ racket
bash: racket: command not found...
Install package 'racket-minimal' to provide command 'racket'? [N/y] y

 * Waiting in queue... 
 * Loading list of packages.... 
The following packages have to be installed:
 racket-collects-7.9-1.fc40.noarch	Racket's core collections libraries
 racket-minimal-7.9-1.fc40.x86_64	A minimal Racket installation
Proceed with changes? [N/y] y

 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 
Welcome to Racket v7.9 [bc].
> (require openssl)
> 

So I don't know how to reproduce.

Could it be something related with the openssl for your system?

Comment 4 Jens Petersen 2024-04-30 05:15:40 UTC
Oh, I can reproduce with raco but not in the repl (perhaps your repl env is different?)

fedora:~$ raco pkg install pandoc
Resolving "pandoc" via https://download.racket-lang.org/releases/7.9/catalog/
ssl-make-client-context: requested protocol not supported;
 SSL not available; check `ssl-load-fail-reason'
  requested: 'auto
  context...:
   /usr/share/racket/collects/openssl/mzssl.rkt:717:0: make-raw-context
   /usr/share/racket/collects/openssl/mzssl.rkt:734:0: ssl-make-client-context
   /usr/share/racket/collects/openssl/mzssl.rkt:1031:0: ssl-secure-client-context
   /usr/share/racket/collects/openssl/mzssl.rkt:586:18
   /usr/share/racket/collects/racket/private/more-scheme.rkt:266:2: call-with-exception-handler
   /usr/share/racket/collects/openssl/mzssl.rkt:1520:0: wrap-ports
   /usr/share/racket/collects/net/http-client.rkt:67:0: http-conn-open!
   /usr/share/racket/collects/net/http-client.rkt:274:0
   /usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /usr/share/racket/collects/net/url.rkt:201:0: http://getpost-impure-port
   /usr/share/racket/collects/net/url.rkt:309:2: redirection-loop
   /usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /usr/share/racket/collects/pkg/private/network.rkt:59:3
   /usr/share/racket/collects/pkg/private/catalog.rkt:218:0: read-from-server
   /usr/share/racket/collects/pkg/private/catalog.rkt:138:9: for-loop
   /usr/share/racket/collects/pkg/private/catalog.rkt:135:2: lookup-normally
   ...

Hmm

Comment 5 Jens Petersen 2024-04-30 05:20:17 UTC
I just built racket-8.12 for Rawhide - the version 7.9 in current releases is very old...
Maybe racket 7 does not support openssl v3?

So this might be sufficient reason to backport 8.12 to F40 and possibly earlier releases even.

I can reproduce the raco problem even for epel9 :-(

Comment 6 Trevor Cook 2024-04-30 06:14:56 UTC
(In reply to Jens Petersen from comment #3)
> Could you please copy the exact full output you see in a terminal here? that
> would be helpful
> 
> eg this is what I am seeing:
> 
> fedora:~$ racket
> bash: racket: command not found...
> Install package 'racket-minimal' to provide command 'racket'? [N/y] y
> 
>  * Waiting in queue... 
>  * Loading list of packages.... 
> The following packages have to be installed:
>  racket-collects-7.9-1.fc40.noarch	Racket's core collections libraries
>  racket-minimal-7.9-1.fc40.x86_64	A minimal Racket installation
> Proceed with changes? [N/y] y
> 
>  * Waiting in queue... 
>  * Waiting for authentication... 
>  * Waiting in queue... 
>  * Downloading packages... 
>  * Requesting data... 
>  * Testing changes... 
>  * Installing packages... 
> Welcome to Racket v7.9 [bc].
> > (require openssl)
> > 
> 
> So I don't know how to reproduce.
> 
> Could it be something related with the openssl for your system?

(require openssl) will not produce any output. Afterwards you have to enter "ssl-load-fail-reason" to see the failure. The raco failure you saw is how I first found the problem.

Comment 7 Jens Petersen 2024-04-30 06:23:31 UTC
Okay you are right - when I tested yesterday I got '#f' for ssl-load-fail-reason, but I see it now in my F40 VM.
I guess I had openssl-devel installed where I had tested. ;-)

So that is the workaround: install openssl-devel, which provides libcrypto.so .
I will add it as a Requires.

Thanks for reporting and nice bug number btw. :-)

Comment 8 Jens Petersen 2024-04-30 06:41:08 UTC
(Though I also feel it is kind of an upstream bug that openssl-devel is needed.)

Comment 9 Jens Petersen 2024-04-30 06:42:34 UTC
(In reply to Jens Petersen from comment #8)
> (Though I also feel it is kind of an upstream bug that openssl-devel is
> needed.)

Looks fixed in racket 8.12 at least.

Comment 10 Fedora Update System 2024-05-27 07:55:05 UTC
FEDORA-2024-1c898aa44f (racket-8.12-2.fc39) has been submitted as an update to Fedora 39.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-1c898aa44f

Comment 11 Fedora Update System 2024-06-02 03:37:03 UTC
FEDORA-2024-1c898aa44f (racket-8.12-2.fc39) has been pushed to the Fedora 39 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.