Recentemente ho riscontrato un problema simile a quello di @Sonosus e ho scoperto che era causato dall’ultima versione di Ubuntu (20.04) che viene preinstallata con OpenSSL 3.0.2. Questa situazione potrebbe essere presente anche con altre versioni di Ubuntu/Debian che vengono preinstallate con OpenSSL. Se riscontri questo problema, probabilmente vorrai compilare una versione precedente di OpenSSL da sorgente (ho usato OpenSSL-1.1.1n) e quindi rieseguire il comando bundle install. Essenzialmente, questo messaggio di errore riguarda OpenSSL >= 1.0.1, < 3.0.0, e si scopre che 1.1 è l’unica alternativa.
Dovrai anche controllare quale versione di Ruby stai usando con ruby --version. Discourse utilizza ancora Ruby 2, quindi se stai usando Ruby 3.x o versioni successive, dovrai utilizzare una versione precedente. A seconda di come stai installando Ruby, è probabile che incontrerai un problema simile con OpenSSL nell’installazione di una versione precedente, quindi ti consiglio di utilizzare un gestore di versioni per Ruby qui, e ho scoperto che Ruby 2.7.6 è attualmente la versione migliore da utilizzare con Discourse.
Dopo aver installato una nuova istanza di Ubuntu 20.04, ecco cosa ho fatto per far funzionare correttamente bundle install:
Installa le dipendenze di Discourse, asdf e Clona Discourse
<(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
Imposta il database
Crea un ruolo con lo stesso nome del tuo nome utente di sistema Ubuntu:
sudo -u postgres createuser -s "$USER"
Installa OpenSSL-1.1.1n da sorgente
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
Ho quindi aggiunto la seguente riga al mio file .bashrc
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"
Mentre ci siamo, ho anche aggiunto le seguenti righe per asdf
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Salva ed esci, e poi
source ~/.bashrc
Installa Ruby 2.7.6
asdf plugin add ruby
asdf install ruby 2.7.6
Potresti essere in grado di eseguire bundle install ora, tuttavia, ho riscontrato un paio di altri problemi durante il processo di installazione di Discourse che menzionerò qui per riferimento nel caso in cui questi accadano a qualcun altro.
Si è verificato un errore durante l’installazione di mini_racer
Durante l’esecuzione di bundle install ho continuato a riscontrare questo problema dopo aver installato OpenSSL-1.1.1n e Ruby 2.7.6
Si è verificato un errore durante l'installazione di mini_racer (0.6.1) e Bundler non può continuare.
Che può essere risolto modificando la seguente riga nella tua versione locale di discourse/Gemfile:
E sostituendola con
gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'
Dopo questo passaggio sono stato in grado di eseguire bundle install con successo.
Questo è simile a un problema che si verifica su MacOS di cui puoi leggere di più qui
File o directory non trovati - convert
Nei passaggi successivi dell’installazione di Discourse, ho anche riscontrato il seguente problema durante l’esecuzione di bundle exec rake autospec
Fallimenti:
1. AboutController.index dovrebbe visualizzare la pagina about per l'utente connesso quando login_required è true
Fallimento/Errore: expect(response.status).to eq(200)
atteso: 200
ottenuto: 500
(confrontato 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)>'
#---------------------
#---Causato da:---
# Errno::ENOENT
# File o directory non trovati - convert
# ./lib/letter_avatar.rb:105:in ``'
Questo errore significa che il pacchetto ImageMagick non è installato (fornisce l’eseguibile convert)
Presumibilmente questo script all’inizio del processo di installazione di Discourse dovrebbe avere tutti i pacchetti necessari, ma sembra che questo possa essere stato escluso.
Infine, dopo aver installato ImageMagick con sudo apt install imagemagick, sono stato in grado di far funzionare correttamente il mio server Discourse!
Spero che queste informazioni siano utili a chiunque stia attraversando questo processo e abbia qualche difficoltà. ![]()