Skip to content
This repository has been archived by the owner on Jul 23, 2022. It is now read-only.

Installation fails due to SSL error. #52

Closed
makzan opened this issue May 21, 2015 · 13 comments
Closed

Installation fails due to SSL error. #52

makzan opened this issue May 21, 2015 · 13 comments

Comments

@makzan
Copy link

makzan commented May 21, 2015

I was trying to install pollen and faced an error when the process tries to download the pollen from github over SSL.

I didn’t faced the same issue before when I was install in in another linux box. This seems to be a new issue on the installation.

$ /usr/racket/bin/raco pkg install pollen
Resolving "pollen" via http://download.racket-lang.org/releases/6.1.1/catalog/
Resolving "pollen" via http://pkgs.racket-lang.org
Downloading https://github.com/mbutterick/pollen/tarball/bb8805b16496ddc4d734f21d0864b0a0f0d0cdc3
ssl-connect: requested protocol not supported
  requested: 'sslv2-or-v3
  context...:
   /usr/racket/collects/openssl/mzssl.rkt:471:18
   /usr/racket/collects/racket/private/more-scheme.rkt:264:2: call-with-exception-handler
   /usr/racket/collects/net/http-client.rkt:220:0: http-conn-open46
   /usr/racket/collects/net/url.rkt:130:0: http://getpost-impure-port
   /usr/racket/collects/net/url.rkt:264:2: redirection-loop
   /usr/racket/collects/pkg/util.rkt:36:0: call/input-url+2007
   /usr/racket/collects/file/cache.rkt:63:2: fetch-and-continue
   /usr/racket/collects/pkg/lib.rkt:1171:14
   /usr/racket/collects/pkg/lib.rkt:1073:0: stage-package/info96
   /usr/racket/collects/pkg/lib.rkt:1073:0: stage-package/info96
   /usr/racket/collects/pkg/lib.rkt:1979:4: for-loop
   /usr/racket/collects/pkg/lib.rkt:1533:0: install-packages158
   /usr/racket/collects/racket/file.rkt:363:8
   /usr/racket/collects/racket/file.rkt:352:0: call-with-file-lock44
   /usr/racket/collects/pkg/main.rkt:169:14
   (submod /usr/racket/collects/pkg/main.rkt main): [running body]...
@mbutterick
Copy link
Owner

How can I reproduce this error? I just did raco pkg install pollen on OS X and it worked fine using the https:// URL (meaning, I wonder if it was a temporary glitch on the Github side)

@makzan
Copy link
Author

makzan commented May 21, 2015

I have checked the difference between my previous working installation and the new one. I chose the wrong platform in the racket download page. I am in x86_64 and installed the i386 version. Re-installing the right one solves the issue.

By the way, thanks a lot for open sourcing the Pollen. I agree with your idea of a book is a program. I’m now learning Racket in order to learn more about the behind-the-scenes of Pollen.

@makzan makzan closed this as completed May 21, 2015
@rbonvall
Copy link

rbonvall commented Jul 7, 2015

On a fresh Linux installation I compiled the latest Racket myself, then the first thing I did was raco pkg install pollen and I got almost exactly the same error as @makzan:

~$ raco pkg install pollen
Resolving "pollen" via http://download.racket-lang.org/releases/6.2/catalog/
Resolving "pollen" via http://pkgs.racket-lang.org
Downloading https://github.com/mbutterick/pollen/tarball/26814c08b058105a1893c2a426a4e33954f49463
ssl-connect: requested protocol not supported
  requested: 'auto
  context...:
   /home/rbonvall/codigo/racket-6.2/collects/openssl/mzssl.rkt:608:0: make-raw-context
   [...]

(The only difference is that the requested protocol is 'auto instead of 'sslv2-or-v3). The machine is x86_64 and the configure script recognized it as such. I wonder if this is an issue with Racket on Linux or with Pollen.

@mbutterick
Copy link
Owner

Sorry about the trouble. I’m pretty sure the problem isn’t Pollen, since it hasn’t been installed yet. The error is arising at an earlier stage, from ssl-connect.

One alternative is to try installing from a snapshot build (rather than compiling from scratch) and see if that makes a difference.

Beyond that, this looks like it might be related to racket/racket@933a71c, so maybe @rmculpepper will weigh in.

@rmculpepper
Copy link

@rbonvall: What is the version of Linux? Also, can you run the following at a racket repl and report what it prints in response?

(enter! openssl/mzssl)
SSLv23_client_method  ;; probably returns #f 
(define-crypto SSLeay_version (_fun _int -> _string))
(SSLeay_version 0)

It looks like the SSLv23_*_method functions were (recently?) deprecated; they may have been removed or replaced with macros in the version of openssl you have.

@rbonvall
Copy link

rbonvall commented Jul 7, 2015

@rmculpepper It's Fedora 21, kernel 3.17.4-301.fc21.x86_64.

~/codigo/racket-6.2/src/build$ racket
Welcome to Racket v6.2.
> (enter! openssl/mzssl)
> SSLv23_client_method
#f
> (define-crypto SSLeay_version (_fun _int -> _string))
> (SSLeay_version 0)
SSLeay_version: implementation not found; arguments: 0
  context...:
   /home/rbonvall/codigo/racket-6.2/collects/racket/private/misc.rkt:87:7

@rmculpepper
Copy link

@rbonvall, thanks. I'm surprised the last part didn't work. Can you find the version of openssl you have installed through the package manager? And one more thing to try:

(enter! openssl/mzssl)
(define-ssl TLS_client_method (_fun -> _pointer) #:fail (lambda () #f))
TLS_client_method

@rbonvall
Copy link

rbonvall commented Jul 7, 2015

@rmculpepper openssl package version is 1.0.1j:

~$ rpm -qa | grep -i ssl
openssl-1.0.1j-1.fc21.x86_64
openssl-libs-1.0.1j-1.fc21.x86_64

Your snippet returns false:

~$ racket
Welcome to Racket v6.2.
> (enter! openssl/mzssl)
> (define-ssl TLS_client_method (_fun -> _pointer) #:fail (lambda () #f))
> TLS_client_method
#f

@rmculpepper
Copy link

@rbonvall, thanks, I'm a bit baffled. I'll look at the openssl source and maybe make a VM to figure this out later when I get a chance. One more thing to try first:

(require openssl)
ssl-available?
ssl-load-fail-reason

@rbonvall
Copy link

rbonvall commented Jul 7, 2015

@rmculpepper It's clear now:

> (require openssl)
> ssl-available?
#f
> ssl-load-fail-reason
"ffi-lib: couldn't open \"libcrypto.so\" (libcrypto.so: cannot open shared object file: No such file or directory)"

I'll try installing libcrypto.so and see what happens.

@rmculpepper
Copy link

I suspect the problem is in openssl/libcrypto.rkt: it doesn't list "1.0.1j" in the library version search list---if that's even the right suffix. What does running locate libcrypto.so on your system turn up under /lib or /usr/lib?

A workaround is to install the development package ("openssl-devel", maybe), which will install a version-less symlink to the current version of the library, which Racket should find.

@rbonvall
Copy link

rbonvall commented Jul 8, 2015

@rmculpepper: Installing openssl-devel solved the problem. Thanks for your patience! libcrypto.so was not there neither under /lib nor /usr/lib.

@mbutterick: Sorry for hijacking the issue with my Racket problems :) Can't wait to start playing with pollen.

@rbonvall
Copy link

rbonvall commented Jul 8, 2015

(@rmculpepper: after installing openssl-devel, libcrypto.so was put under /usr/lib64.)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants