# Note sull'installazione di Discourse su Ubuntu 20.04

**URL:** https://meta.discourse.org/t/notes-about-installing-discourse-on-ubuntu-20-04/226363
**Category:** Development
**Created:** [30 Aprile 2022, 2:11pm UTC](https://meta.discourse.org/t/notes-about-installing-discourse-on-ubuntu-20-04/226363 "2022-04-30T14:11:01Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![s-o-n-o-s-u-s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/s-o-n-o-s-u-s/32/244957_2.png) [@s-o-n-o-s-u-s](https://meta.discourse.org/u/s-o-n-o-s-u-s)
#### Post date: [30 Aprile 2022, 2:11pm UTC](https://meta.discourse.org/t/notes-about-installing-discourse-on-ubuntu-20-04/226363/1 "2022-04-30T14:11:01Z")

</div>

Ho problemi con il passaggio `bundle install`. Questo errore continua a comparire.

```plaintext
(... )
Installazione di sassc-rails 2.1.2
Installazione di discourse-ember-rails 0.18.6
Gem::Ext::BuildError: ERRORE: Impossibile creare la gemma nativa.

    directory corrente: /home/archie/gems/gems/openssl-2.2.1/ext/openssl
/usr/bin/ruby3.0 -I /usr/lib/ruby/vendor_ruby -r
./siteconf20220430-16096-soaves.rb extconf.rb
controllo per t_open() in -lnsl... no
controllo per socket() in -lsocket... no
controllo per openssl/ssl.h... sì
controllo per CRYPTO_malloc() in -lcrypto... sì
controllo per SSL_new() in -lssl... sì
controllo per LIBRESSL_VERSION_NUMBER in openssl/opensslv.h... no
controllo per OpenSSL version >= 1.0.1 and < 3.0.0... no
***extconf.rb fallito***
Impossibile creare Makefile per qualche motivo, probabilmente per mancanza delle librerie e/o degli header necessari. Controllare il file mkmf.log per maggiori dettagli. Potrebbero essere necessarie opzioni di configurazione.

Opzioni di configurazione fornite:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/bin/$(RUBY_BASE_NAME)3.0
	--with-openssl-dir
	--without-openssl-dir
	--with-openssl-include
	--without-openssl-include=${openssl-dir}/include
	--with-openssl-lib
	--without-openssl-lib=${openssl-dir}/lib
	--with-kerberos-dir
	--without-kerberos-dir
	--with-kerberos-include
	--without-kerberos-include=${kerberos-dir}/include
	--with-kerberos-lib
	--without-kerberos-lib=${kerberos-dir}/lib
	--with-debug
	--without-debug
	--enable-debug
	--disable-debug
	--with-nsl-dir
	--without-nsl-dir
	--with-nsl-include
	--without-nsl-include=${nsl-dir}/include
	--with-nsl-lib
	--without-nsl-lib=${nsl-dir}/lib
	--with-nsllib
	--without-nsllib
	--with-socket-dir
	--without-socket-dir
	--with-socket-include
	--without-socket-include=${socket-dir}/include
	--with-socket-lib
	--without-socket-lib=${socket-dir}/lib
	--with-socketlib
	--without-socketlib
	--with-openssl-config
	--without-openssl-config
	--with-pkg-config
	--without-pkg-config
	--with-crypto-dir
	--without-crypto-dir
	--with-crypto-include
	--without-crypto-include=${crypto-dir}/include
	--with-crypto-lib
	--without-crypto-lib=${crypto-dir}/lib
	--with-cryptolib
	--without-cryptolib
	--with-ssl-dir
	--without-ssl-dir
	--with-ssl-include
	--without-ssl-include=${ssl-dir}/include
	--with-ssl-lib
	--without-ssl-lib=${ssl-dir}/lib
	--with-ssllib
	--without-ssllib
extconf.rb:113:in `<main>': OpenSSL >= 1.0.1, < 3.0.0 or LibreSSL >= 2.5.0 is
required (RuntimeError)

Per vedere perché questa estensione non è riuscita a compilare, controllare il file mkmf.log che si trova qui:

  /home/archie/gems/extensions/x86_64-linux/3.0.0/openssl-2.2.1/mkmf.log
extconf fallito, codice di uscita 1

I file delle gemme rimarranno installati in /home/archie/gems/gems/openssl-2.2.1 per l'ispezione.
Risultati registrati in
/home/archie/gems/extensions/x86_64-linux/3.0.0/openssl-2.2.1/gem_make.out

  /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:95:in `run'
/usr/lib/ruby/vendor_ruby/rubygems/ext/ext_conf_builder.rb:47:in `block in
build'
  /usr/lib/ruby/3.0.0/tempfile.rb:317:in `open'
  /usr/lib/ruby/vendor_ruby/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:161:in `build_extension'
/usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:195:in `block in
build_extensions'
  /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:192:in `each'
  /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:192:in `build_extensions'
  /usr/lib/ruby/vendor_ruby/rubygems/installer.rb:847:in `build_extensions'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/rubygems_gem_installer.rb:71:in
`build_extensions'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/rubygems_gem_installer.rb:28:in
`install'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/source/rubygems.rb:204:in
`install'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/installer/gem_installer.rb:54:in
`install'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/installer/parallel_installer.rb:186:in
`do_install'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/installer/parallel_installer.rb:177:in
`block in worker_pool'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/worker.rb:62:in
`apply_func'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/worker.rb:57:in
`block in process_queue'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/worker.rb:54:in
`loop'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/worker.rb:54:in
`process_queue'
/usr/share/rubygems-integration/all/gems/bundler-2.3.5/lib/bundler/worker.rb:91:in
`block (2 levels) in create_threads'

Si è verificato un errore durante l'installazione di openssl (2.2.1) e Bundler non può
continuare.

In Gemfile:
  cose è stato risolto a 1.2.0, che dipende da
    openssl-signature_algorithm è stato risolto a 1.1.1, che dipende da
      openssl

```

---

<div class="post-metadata">

### Author: ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)
#### Post date: [6 Maggio 2022, 6:15pm UTC](https://meta.discourse.org/t/notes-about-installing-discourse-on-ubuntu-20-04/226363/2 "2022-05-06T18:15:14Z")

</div>

> [@s-o-n-o-s-u-s](#):
>
> Ho problemi con il passaggio `bundle install`.

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

```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

```

### Imposta il database

Crea un ruolo **con lo stesso nome del tuo nome utente di sistema Ubuntu** :

```bash
sudo -u postgres createuser -s "$USER"

```

### Installa OpenSSL-1.1.1n da sorgente

```bash
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`

```bash
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"

```

Mentre ci siamo, ho anche aggiunto le seguenti righe per `asdf`

```bash
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

```

Salva ed esci, e poi

```bash
source ~/.bashrc

```

### Installa Ruby 2.7.6

```bash
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

```plaintext
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:

> <https://github.com/discourse/discourse/blob/main/Gemfile#L124>

E sostituendola con

```ruby
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](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-macos-for-development/15772/302)

### 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`

```plaintext
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à. 😄

---

<div class="post-metadata">

### Author: ![s-o-n-o-s-u-s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/s-o-n-o-s-u-s/32/244957_2.png) [@s-o-n-o-s-u-s](https://meta.discourse.org/u/s-o-n-o-s-u-s)
#### Post date: [6 Maggio 2022, 6:55pm UTC](https://meta.discourse.org/t/notes-about-installing-discourse-on-ubuntu-20-04/226363/5 "2022-05-06T18:55:38Z")

</div>

Grazie per questo, ci proverò qualche volta e vedrò come va.
