Recentemente adquiri um novo computador fornecido pela empresa onde trabalho, este computador veio com o Windows 11 pré instalado. Quando fui preparar o computador com as ferramentas que preciso para o trabalho, escolhi instalar o Ubuntu na versão LTS atual que é Ubuntu 22.04.
Após a instalação do Ubuntu, instalei alguns programas e quando fui instalar o Ruby 2.7.2 que é a versão usada num projeto em que trabalho obtive o seguinte erro:
$ rvm install 2.7.2
ruby-2.7.2 - #removing src/ruby-2.7.2 - please wait
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/22.04/x86_64/ruby-2.7.2.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for ubuntu.
Requirements installation successful.
Installing Ruby from source to: /home/guilherme/.rvm/rubies/ruby-2.7.2, this may take a while depending on your cpu(s)...
ruby-2.7.2 - #downloading ruby-2.7.2, this may take a while depending on your connection...
ruby-2.7.2 - #extracting ruby-2.7.2 to /home/guilherme/.rvm/src/ruby-2.7.2 - please wait
ruby-2.7.2 - #configuring - please wait
ruby-2.7.2 - #post-configuration - please wait
ruby-2.7.2 - #compiling - please wait
Error running '__rvm_make -j8',
please read /home/guilherme/.rvm/log/1652046393_ruby-2.7.2/make.log
There has been an error while running make. Halting the installation.
Pesquisando sobre o erro que obtive, descobri que esta versão do Ubuntu que vem com o OpenSSL 3.0 e é suportado apenas pelo ruby 3.1. Então tive que instalar manualmente o OpenSSL 1.1.1 para conseguir instalar a versão do ruby que precisava. Mais informações nesse link de discussão no Github
Instalando o OpenSSL 1.1.1 e Ruby 2.7.2
Instale as dependências:
$ sudo apt install build-essential checkinstall zlib1g-dev
Baixe o OpenSSL 1.1.1:
$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
$ tar xf openssl-1.1.1n.tar.gz
Compile:
$ cd ~/Downloads/openssl-1.1.1n
$ ./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
$ make
$ make test
$ sudo make install
Vincule os certificados do sistema à pasta do openssl 1.1.1:
$ sudo rm -rf /opt/openssl-1.1.1n/certs
$ sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n
Ao instalar verões do ruby anteriores a 3.1, informa a versão do openssl que vai usar:
$ RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1n asdf install ruby 2.7.2
# ou se usa rbenv
$ RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1n rbenv install 2.7.2
Caso não queira ficar sempre informando o diretório do openssl quando for instalar algum ruby, adicione isso no seu .bashrc ou .zshrc:
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"
