Online-Update erfolgreich, aber Neuerstellung schlägt fehl

Auf ein merkwürdiges Problem gestoßen, das möglicherweise einen weiteren Unterschied zwischen Online-Updates und Befehlszeilen-Updates hervorhebt.

Wenn ich ein Online-Update mit einem Plugin mit dem rmagick gem durchführe, ist es erfolgreich.

Es schlägt jedoch mit einem CLI-Rebuild fehl mit:

ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.

    current directory: /var/www/discourse/plugins/discourse-topic-previews-sidecar/gems/3.3.6/gems/rmagick-6.0.1/ext/RMagick
/usr/local/bin/ruby extconf.rb
checking for brew... no
checking for pacman... no
checking for Ruby version >= 3.0.0... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include=${opt-dir}/include
	--without-opt-include
	--with-opt-lib=${opt-dir}/lib
	--without-opt-lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/bin/$(RUBY_BASE_NAME)
	--with-pkg-config
	--without-pkg-config
	--with-override-variables
	--without-override-variables
/var/www/discourse/plugins/discourse-topic-previews-sidecar/gems/3.3.6/gems/pkg-config-1.5.6/lib/pkg-config.rb:504:in `parse_pc': .pc doesn't exist: <MagickCore> (PackageConfig::NotFoundError)

Werden Gems nur während eines vollständigen Builds erstellt? Oder könnte es sein, dass eine Ruby-Versionserhöhung stattgefunden hat, die nur bei einem vollständigen Rebuild durchgeführt wird? (was dann eine Neuerstellung des Gems erzwingt?)

1 „Gefällt mir“

@featheredtoast irgendeine Idee, ob dies den rmagick gem beeinträchtigt haben könnte?:

gab es gleichzeitig ein imagemagick version bump?

2 „Gefällt mir“

Wir haben unser Image aktualisiert, daher kompilieren wir ImageMagick separat und binden nur die endgültige ImageMagick-Binärdatei ein. Wir binden daher keine Compile-Zeit-Bibliotheken für ImageMagick mehr in das Image ein, um die Größe unserer Basis-Images zu reduzieren.

Sie könnten einfach ein Installationsskript hinzufügen, um die ImageMagick-Bibliotheken zu installieren, aber ich würde empfehlen, die Abhängigkeit des Plugins von der rmagick-Gem zu entfernen – ich bin mir nicht sicher, wo diese Gem aufgerufen wird, da sie die Kernaufrufe zur Bildoptimierung von Discourse zu erweitern scheint, die direkt die ImageMagick-Binärdatei aufrufen.

1 „Gefällt mir“

Ich verwende es zur Bildverarbeitung.

Selbst wenn ich eine Umgehung finden könnte, wäre es wirklich schade, die Verwendung des rmagick-Gems zu blockieren, da die Alternative darin besteht, mit Systemaufrufen an ImageMagick herumzuhantieren, was etwas … sperrig … und viel weniger entwicklerfreundlich ist, im Gegensatz zur Verwendung einer praktischen API in der Sprache.

Sie können beispielsweise die Compile-Zeit-Abhängigkeiten des Gems einbinden – so etwas wie das Folgende:

hooks:
  after_code:
    - exec: apt-get update && apt-get install -y libmagickwand-dev

Wir blockieren die Installation von nichts, wir nehmen nur die statischen Bibliotheken, von denen das Gem abhängt, nicht mehr in das Basis-Image auf.

1 „Gefällt mir“

Danke Jeff!!

Ich werde zuerst sehen, ob dies eliminiert werden kann, und dann das als Alternative versuchen.

Das richtige Formular benötigt cmd: usw. Aber leider geht das nicht. Ich kann nicht bestätigen, ob der Fehler derselbe ist. Ich habe tmux benutzt und es erlaubt mir kein Scrollen.

1 „Gefällt mir“

Um in tmux zu scrollen, drücken Sie Strg+b und dann [ (linke Klammer). Sie können dann scrollen und q drücken, um den Scrollmodus zu verlassen.

1 „Gefällt mir“

Ich habe dies letztendlich gelöst, indem ich zur eher unfreundlichen Kommandozeilen-API gewechselt bin. :sweat_smile:

Das Plugin ist nicht mehr auf das rmagick-Gem angewiesen. Das ist ein bisschen schade, aber Not macht erfinderisch.

3 „Gefällt mir“