Recentemente, também me deparei com um problema semelhante ao do @Sonosus e descobri que ele estava sendo causado pela versão mais recente do Ubuntu (20.04) que vem pré-instalada com OpenSSL 3.0.2. Essa situação também pode estar presente com outras versões do Ubuntu/Debian que vêm pré-instaladas com OpenSSL. Se você estiver encontrando isso, provavelmente desejará compilar uma versão anterior do OpenSSL a partir do código-fonte (usei OpenSSL-1.1.1n) e, em seguida, executar novamente o comando bundle install. Essencialmente, esta mensagem de erro é sobre OpenSSL >= 1.0.1, < 3.0.0, e descobre-se que 1.1 é a única alternativa.
Você também vai querer verificar qual versão do Ruby você está usando com ruby --version. O Discourse ainda usa Ruby 2, então se você estiver usando Ruby 3.x ou posterior, precisará usar uma versão anterior. Dependendo de como você está instalando o Ruby, é provável que você encontre um problema semelhante de OpenSSL ao instalar uma versão anterior, então eu recomendaria usar um gerenciador de versão para Ruby aqui, e eu descobri que o Ruby 2.7.6 é atualmente a melhor versão para usar com o Discourse.
Após instalar uma nova instância do Ubuntu 20.04, aqui está o que fiz para que bundle install fosse executado corretamente:
Instalar Dependências do Discourse, asdf e Clonar o Discourse
bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
sudo apt install build-essential checkinstall zlib1g-dev
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
git clone https://github.com/discourse/discourse.git ~/discourse
Configurar Banco de Dados
Crie a role com o mesmo nome do seu nome de usuário do sistema Ubuntu:
sudo -u postgres createuser -s "$USER"
Instalar OpenSSL-1.1.1n a partir do Código-Fonte
wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar -zxf openssl-1.1.1n.tar.gz && cd openssl-1.1.1n
./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
make
make test
make install
sudo rm -rf /opt/openssl-1.1.1n/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n
Em seguida, adicionei a seguinte linha ao meu arquivo .bashrc
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"
Enquanto estamos aqui, também adicionei as seguintes linhas para asdf
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Salve e saia, e então
source ~/.bashrc
Instalar Ruby 2.7.6
asdf plugin add ruby
asdf install ruby 2.7.6
Você pode estar pronto para executar bundle install agora, no entanto, encontrei alguns outros problemas durante o processo de instalação do Discourse que mencionarei aqui para referência, caso isso aconteça com mais alguém.
Ocorreu um erro ao instalar mini_racer
Ao executar bundle install, continuei encontrando erros após instalar o OpenSSL-1.1.1n e o Ruby 2.7.6
Ocorreu um erro ao instalar mini_racer (0.6.1), e o Bundler não pode continuar.
O que pode ser resolvido editando a seguinte linha na sua versão local do discourse/Gemfile:
E substituindo-a por
gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'
Após esta etapa, consegui executar bundle install com sucesso.
Isso é semelhante a um problema que ocorre no MacOS sobre o qual você pode ler mais aqui
Arquivo ou diretório não encontrado - convert
Nas etapas posteriores da instalação do Discourse, também encontrei o seguinte problema ao executar bundle exec rake autospec
Falhas:
1. AboutController.index deve exibir a página sobre para o usuário logado quando login_required for true
Falha/Erro: expect(response.status).to eq(200)
esperado: 200
obtido: 500
(comparado usando ==)
#./spec/requests/about_controller_spec.rb:27:in 'block (3 levels) in <main>'
#./spec/rails_helper.rb:277:in 'block (2 levels) in <top (required)>'
#---------------------
#---Causado por:---
# Errno::ENOENT
# Arquivo ou diretório não encontrado - convert
# ./lib/letter_avatar.rb:105:in ``'
Este erro significa que o pacote ImageMagick não está instalado (ele fornece o binário convert)
Supostamente, este script no início do processo de instalação do Discourse deveria ter todos os pacotes necessários, mas parece que este pode ter sido excluído.
Finalmente, após instalar ImageMagick com sudo apt install imagemagick, consegui colocar meu servidor Discourse em funcionamento com sucesso!
Espero que esta informação seja útil para quem estiver passando por este processo e tendo alguns problemas. ![]()