rvm / rvm

Ruby enVironment Manager (RVM)
https://rvm.io
Other
5.1k stars 1.03k forks source link

Ubuntu, ruby 1.8.7-head #4515

Open jadrevenge opened 5 years ago

jadrevenge commented 5 years ago

Description

We cannot install ruby 1.8.7 on any recent Ubuntu version. We have some legacy projects that need to be migrated, but while this is going on we need to be able to run them.

Steps to reproduce

  1. install the latest rvm
  2. try to install 1.8.7-head

Error running '__rvm_make -j1', please read /home/cls/.rvm/log/1544444736_ruby-1.8.7-p374/make.log There has been an error while running make. Halting the installation.

To proceed rvm requires a ruby-1.8.7-p374 compatible ruby is installed. We attempted to install it automatically but it failed with status 2. Please install it manually (or a compatible alternative) to proceed.

Expected behavior

Ruby 1.8.7 installed

Actual behavior

ruby installation fails

Environment info

system:

system: uname: "Linux asmanapps 4.15.0-42-generic #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux" name: "Ubuntu" version: "18.04" architecture: "x86_64" bash: "/bin/bash => GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)" zsh: " => not installed" remote_path: "ubuntu/18.04/x86_64"

rvm: version: "1.29.4 (latest)" updated: "34 minutes 43 seconds ago" path: "/home/cls/.rvm" autolibs: "[read-only] Allow RVM to use package manager if found but do not install or fail if dependencies are missing."

homes: gem: "not set" ruby: "not set"

binaries: ruby: "" irb: "" gem: "" rake: ""

environment: PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/cls/.rvm/bin:/home/cls/.rvm/bin" GEM_HOME: "" GEM_PATH: "" MY_RUBY_HOME: "" IRBRC: "" RUBYOPT: "" gemset: ""

jadrevenge commented 5 years ago

I can get it to work, by :

  1. setting autolibs to read-only
  2. installing openssl1.0 and libssl1.0-dev

cls@asmanapps:~$ rvm autolibs read-only root@asmanapps:~# apt install libssl1.0-dev openssl1.0 Reading package lists... Done Building dependency tree
Reading state information... Done The following packages will be REMOVED libssl-dev The following NEW packages will be installed libssl1.0-dev openssl1.0 0 to upgrade, 2 to newly install, 1 to remove and 0 not to upgrade. Need to get 1,573 kB of archives. After this operation, 1,221 kB of additional disk space will be used. Do you want to continue? [Y/n]

msg7086 commented 5 years ago

Thanks for the hint. However I'm using Debian buster (testing) and I hit more issues with OpenSSL.

ossl_ssl.c:113:27: error: ‘SSLv3_method’ undeclared here (not in a function); did you mean ‘SSLv23_method’?
ossl_ssl.c:114:27: error: ‘SSLv3_server_method’ undeclared here (not in a function); did you mean ‘SSLv23_server_method’?
ossl_ssl.c:115:27: error: ‘SSLv3_client_method’ undeclared here (not in a function); did you mean ‘SSLv23_client_method’?

I have to hack /usr/include/openssl/ssl.h and add #undef OPENSSL_NO_SSL3_METHOD to get around this. However the result binary does not link with system libssl binary.

jadrevenge commented 5 years ago

Which version of Ruby are you trying to install? Which version of ssl do you have currently on your system?

msg7086 commented 5 years ago

At least 1.8.7-p374, probably 1.8.7-head.

=> ruby-1.8.7-head [ x86_64 ]
 * ruby-1.8.7-p374 [ x86_64 ]

hi  libssl1.0-dev:amd64             1.0.2q-1~deb9u1
ii  libssl1.0.2:amd64               1.0.2q-1~deb9u1

Finally I made a workaround by modifying /usr/include/openssl/ssl.h and making methods as aliases.

# ifndef OPENSSL_NO_SSL3_METHOD
const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */
const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */
# else
  #define SSLv3_method SSLv23_method
  #define SSLv3_server_method SSLv23_server_method
  #define SSLv3_client_method SSLv23_client_method
# endif

Very ugly hack but seems to work for me.

roramirez commented 3 years ago

This should be fixed with the PR https://github.com/rvm/rvm/pull/4920