Discourse für die Entwicklung auf Fedora Linux einrichten

Dieser Leitfaden wurde mit einer Neuinstallation von Fedora 31 und 33 getestet, funktioniert jedoch möglicherweise auch mit älteren Versionen, die dnf als Paketverwaltungswerkzeug verwenden. Dies ist keine offizielle Anleitung, kann aber für andere Entwickler, die Fedora verwenden, nützlich sein. Sie basiert weitgehend auf dem Ubuntu-Entwicklungsleitfaden, mit Anpassungen für die unterschiedlichen Pakete bei dnf. Es wird angenommen, dass keine der Pakete bereits installiert ist, obwohl die meisten von den Werkzeugen übersprungen werden, wenn sie bereits vorhanden sind.

Wenn Sie Discourse für eine Produktivumgebung installieren möchten, verwenden Sie bitte die Docker-Installationsanweisungen auf GitHub.

Installation der erforderlichen System- und Entwicklungspakete

sudo dnf update
sudo dnf install -y "@development-tools" git rpm-build zlib-devel ruby-devel readline-devel libpq-devel ImageMagick sqlite sqlite-devel nodejs npm curl gcc g++ bzip2 openssl-devel libyaml-devel libffi-devel zlib-devel gdbm-devel ncurses-devel optipng pngquant jhead jpegoptim gifsicle oxipng

Installation der erforderlichen npm-Pakete

sudo npm install -g svgo pnpm

Installation und Einrichtung von PostgreSQL

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres -i createuser -s $USER

Installation und Einrichtung von Redis

sudo dnf install redis
sudo systemctl enable redis
sudo systemctl start redis

Installation von rbenv, ruby-build und Ruby

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
~/.rbenv/bin/rbenv init
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# Installation überprüfen
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
rbenv install 2.7.1
rbenv global 2.7.1
rbenv rehash

Installation der Ruby-Abhängigkeiten

gem update --system
gem install bundler mailcatcher rails

Discourse-Code klonen

git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse

Installation der Discourse-Abhängigkeiten

bundle install
pnpm install

Erstellen der erforderlichen Datenbanken und Laden des Schemas

bundle exec rake db:create db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

Installation testen, indem Sie die Tests ausführen

bundle exec rake autospec

Anwendung ausführen

bundle exec rails server

Sie sollten nun die Discourse-Einrichtungsseite unter http://localhost:3000 sehen können.

Für weitere Einrichtungsschritte siehe die vorhandenen offiziellen Installationsleitfäden.


Dieses Dokument wird versioniert – schlagen Sie Änderungen auf GitHub vor.

27 „Gefällt mir“

In rbenv, ruby-build und ruby installieren, funktioniert die URL für das rbenv-doctor-Skript nicht mehr (anscheinend wurde der Branch von master in main umbenannt), der korrekte Befehl lautet jetzt:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2 „Gefällt mir“

Danke für die Infos @nicolas-jaussaud, ich habe den OP aktualisiert.

FWIW benutze ich jetzt lieber chruby und ruby-install anstelle von rbenv.

2 „Gefällt mir“

Ich bin auf ein Problem gestoßen, als ich versuchte, bundle install auszuführen, da Fedora jetzt standardmäßig den Dateitransport deaktiviert hat.

Der Fehler tritt bei der Installation des sprockets-Gems auf und endet mit der Meldung:

transport 'file' not allowed

Ich weiß nicht, wie der richtige Weg ist, dies zu tun, aber Sie können den unsicheren Transport vorübergehend zulassen:

git config --global protocol.file.allow always
# Führen Sie hier die Discourse-Einrichtung aus
git config --global protocol.file.allow never

Danach stieß ich auf einen Fehler wie diesen, als ich db:migrate ausführte:

At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
Deprecation notice: `SiteSetting.enable_personal_messages` has been deprecated. Please use `SiteSetting.personal_message_enabled_groups` instead. (removal in Discourse 3.0) 
At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
#<Thread:0x00007f94c3342600 /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:83 run> terminated with exception (report_on_exception is true):
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management/rails_61_compat.rb:8:in `current'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:115:in `current_db_hostnames'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:111:in `current_hostname'
	from /home/hhyyrylainen/Projects/discourse/lib/discourse.rb:232:in `handle_job_exception'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:114:in `rescue in do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:113:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:79:in `with_connection'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:96:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'

Es scheint, dass dies nach Abschluss der Migration geschah, also habe ich es ignoriert, da ich keine Lösung finden konnte. Glücklicherweise scheint meine Entwicklungsumgebung zu funktionieren.

Für die Testumgebung erhielt ich nicht denselben Fehler, aber einen Fehler bezüglich des fehlenden oxipng, das anscheinend nicht als Fedora-Paket verfügbar ist.

Danach stieß ich auf keine weiteren Probleme, alles funktionierte auf Fedora 38 mehr oder weniger gut. Allerdings hatte ich zuvor rbenv mit anderen Einrichtungsanweisungen installiert.

Beim Ausführen von bundle exec rake autospec erhielt ich einige fehlgeschlagene Tests (135), aber es scheint, dass ich eine weitgehend funktionierende Entwicklungsumgebung habe.

2 „Gefällt mir“

Ich habe die Entwicklerversion vor einiger Zeit zum Laufen gebracht, aber die Produktionsversion war mir zu schwierig. .

Ich habe dieser Anleitung zur Installation auf Fedora 40 Workstation gefolgt und musste oxipng zu den Distro-Installationen hinzufügen.
sudo dnf install oxipng

3 „Gefällt mir“

Danke für die Information, ich habe die Dokumentation in diesem Commit aktualisiert: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1 „Gefällt mir“

Ich stecke heute nach der Installation auf Fedora 41 mit folgendem Problem fest, wenn ich mich mit localhost:3000 verbinde und auf Registrieren klicke:
„Bei der Einrichtung wurden keine Administrator-E-Mails definiert“; die Nachricht erklärt, wie eine Administrator-E-Mail hinzugefügt wird.

Ich konnte kein Admin-Konto erfolgreich hinzufügen, indem ich dieser Vorgehensweise gefolgt bin, da es 2 Fehler gab, als ich ./launcher enter app verwendete:
1° Der erste gelöste Fehler war: Es ist keine app.yml-Datei vorhanden – Ich habe die sampleapp.yml aus dem Beispielordner in den Containerordner kopiert, dann geändert, um E-Mail-Adressen hinzuzufügen, und dann mit /var/discourse/launcher rebuild app neu erstellt.
2° Der zweite Fehler ist nicht gelöst:
Fehlerantwort vom Daemon: Kein solcher Container: app
Wenn ich die Rake-Befehle verwende, um einen Admin zu erstellen, wird mir mitgeteilt, dass keine Rakefile gefunden wurde.

Kann mir bitte jemand helfen?

Diese Installation verwendet kein Docker, daher können Sie keinen Container betreten.

Versuchen Sie, einen Administrator aus dem Discourse-Ordner mit diesem Befehl zu erstellen:

bin/rails admin:create
1 „Gefällt mir“

Hallo Kokosnuss, du antwortest schnell und effizient, vielen Dank!
Der Befehl gibt zurück, dass bundler fehlt, was ich mit gem install bundler -v 2.6.2 installiert habe und dann konnte ich deine Lösung erfolgreich anwenden!

2 „Gefällt mir“

Ich habe gerade versucht, eine lokale Installation auszuführen und bin auf Probleme mit pgvector gestoßen. Dies ist auf Fedora 42 und Postgres16. Die paketierte Version von pgvector ist 0.6.2 und es scheint, dass ich aus dem Quellcode kompilieren muss, um eine neuere Version zu erhalten.

Dann gab es Konflikte beim Versuch, pgvector zu kompilieren, was das Paket postgresql-private-devel erfordert, das widersprüchliche Anforderungen mit libpq-devel hatte.

Gelöst durch:

  • sudo dnf install postgresql-server-devel --allowerasing
    
  • pgvector kompilieren
  • Installierte Version prüfen
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  • sudo systemctl restart postgresql
    
3 „Gefällt mir“

image

Also… ist das offiziell? (Dieser Satz sollte wahrscheinlich entfernt werden, oder?)

Entschuldigung, aber ist diese Version veraltet? Die neueste auf rbenv install -l aufgeführte Ruby-Version ist meiner Erinnerung nach 4.0.5 (ebenso wie die neueste Version auf ruby-lang.org).

1 „Gefällt mir“

Beim Ausführen von bundle exec rails server startet eine ganze Reihe von Migrationen. Es läuft seit etwa einer Stunde und ist immer noch nicht abgeschlossen. Mein Laptop verfügt über genügend RAM und CPU-Leistung dafür. Liegt das einfach an der schieren Anzahl der auszuführenden Migrationen?

EDIT: 3 Stunden und immer noch voll im Gange.