Je suis tombé sur un problème curieux qui pourrait mettre en évidence une autre différence entre les mises à jour en ligne et les mises à jour en ligne de commande.
Si j’effectue une mise à jour en ligne avec un plugin utilisant la gem rmagick, cela réussit.
Cependant, cela échoue avec une reconstruction en ligne de commande avec :
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)
Les gems ne sont-elles construites que lors d’une reconstruction complète ? Ou se pourrait-il qu’il y ait eu une incrémentation de la version de Ruby qui n’est effectuée que lors d’une reconstruction complète ? (ce qui force alors une refonte de la gem ?)
Nous avons mis à jour notre image, nous compilons donc imagemagick séparément et n’incluons que le binaire final d’imagemagick. Par conséquent, nous n’incluons plus les bibliothèques de compilation pour imagemagick dans l’image afin de réduire la taille de nos images de base.
Vous pourriez simplement ajouter un script d’installation pour installer les bibliothèques imagemagick, mais je vous recommande de supprimer la dépendance du plugin à la gem rmagick. Je ne suis pas sûr de voir où cette gem est appelée, car il semble qu’elle étende les appels d’optimisation d’image de Discourse Core, qui appellent directement le binaire imagemagick.
Même si je parviens à trouver une solution de contournement, ce serait vraiment dommage de bloquer l’utilisation de la gem rmagick car l’alternative consiste à interférer avec les appels système d’ImageMagick, ce qui est un peu… maladroit… et beaucoup moins convivial pour le développeur que d’utiliser une API pratique dans le langage.
La forme correcte nécessite cmd: etc. Mais désolé, pas possible. Je ne peux pas confirmer si l’erreur est la même, cependant. J’ai utilisé tmux et il ne me permet pas de faire défiler.
Pour faire défiler dans tmux, vous appuyez sur control-b puis sur [ (crochet gauche). Vous pouvez ensuite faire défiler et utiliser q pour sortir du mode défilement.