Instalando versôes mais antigas de Ruby no Ubuntu 22.04





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/"

Postar um comentário

Postagem Anterior Próxima Postagem