J’ai également récemment rencontré un problème similaire à celui de @Sonosus, et j’ai découvert qu’il était causé par la dernière version d’Ubuntu (20.04) livrée avec OpenSSL 3.0.2 préinstallé. Cette situation peut également être présente avec d’autres versions d’Ubuntu/Debian qui livrent OpenSSL préinstallé. Si vous rencontrez ce problème, vous voudrez probablement compiler une version antérieure d’OpenSSL à partir des sources (j’ai utilisé OpenSSL-1.1.1n), puis relancer la commande bundle install. Essentiellement, ce message d’erreur concerne OpenSSL >= 1.0.1, < 3.0.0, et il s’avère que 1.1 est la seule alternative.
Vous voudrez également vérifier la version de Ruby que vous utilisez avec ruby --version. Discourse utilise toujours Ruby 2, donc si vous utilisez Ruby 3.x ou une version ultérieure, vous devrez utiliser une version antérieure. Selon la façon dont vous installez Ruby, vous risquez de rencontrer un problème similaire avec OpenSSL lors de l’installation d’une version antérieure, je recommanderais donc d’utiliser un gestionnaire de versions pour Ruby ici, et j’ai trouvé que Ruby 2.7.6 est actuellement la meilleure version à utiliser avec Discourse.
Après avoir installé une nouvelle instance d’Ubuntu 20.04, voici ce que j’ai fait pour que bundle install s’exécute correctement :
Installer les dépendances Discourse, asdf et cloner 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
Configurer la base de données
Créez un rôle avec le même nom que votre nom d’utilisateur système Ubuntu :
sudo -u postgres createuser -s "$USER"
Installer OpenSSL-1.1.1n à partir des sources
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
J’ai ensuite ajouté la ligne suivante à mon fichier .bashrc :
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"
Pendant que nous y sommes, j’ai également ajouté les lignes suivantes pour asdf :
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Enregistrez et quittez, puis :
source ~/.bashrc
Installer Ruby 2.7.6
asdf plugin add ruby
asdf install ruby 2.7.6
Vous pourriez être prêt à exécuter bundle install maintenant, cependant, j’ai rencontré quelques autres problèmes lors du processus d’installation de Discourse que je mentionnerai ici pour référence au cas où cela arriverait à quelqu’un d’autre.
Une erreur s’est produite lors de l’installation de mini_racer
En exécutant bundle install, j’ai continué à rencontrer après avoir installé OpenSSL-1.1.1n et Ruby 2.7.6 :
Une erreur s'est produite lors de l'installation de mini_racer (0.6.1), et Bundler ne peut pas continuer.
Ce qui peut être résolu en modifiant la ligne suivante dans votre version locale de discourse/Gemfile :
Et en la remplaçant par :
gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'
Après cette étape, j’ai pu exécuter bundle install avec succès.
Ceci est similaire à un problème survenant sur MacOS dont vous pouvez lire plus d’informations ici
Fichier ou répertoire inexistant - convert
Dans les étapes ultérieures de l’installation de Discourse, j’ai également rencontré le problème suivant lors de l’exécution de bundle exec rake autospec :
Échecs :
1. AboutController.index doit afficher la page à propos pour l'utilisateur connecté lorsque login_required est vrai
Échec/Erreur : expect(response.status).to eq(200)
attendu : 200
obtenu : 500
(comparé en utilisant ==)
#./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)>'
#---------------------
#---Causé par :---
# Errno::ENOENT
# Fichier ou répertoire inexistant - convert
# ./lib/letter_avatar.rb:105:in ``'
Cette erreur signifie que le package ImageMagick n’est pas installé (il fournit le binaire convert).
Supposément, ce script au début du processus d’installation de Discourse devrait contenir tous les packages nécessaires, mais il semble que celui-ci ait pu être exclu.
Enfin, après avoir installé ImageMagick avec sudo apt install imagemagick, j’ai pu faire fonctionner mon serveur Discourse avec succès !
J’espère que ces informations seront utiles à quiconque traverse ce processus et rencontre des difficultés. ![]()