Ho riscontrato un problema curioso che potrebbe evidenziare un’altra differenza tra gli aggiornamenti online e gli aggiornamenti da riga di comando.
Se eseguo un aggiornamento online con un plugin con la gem rmagick, ha successo.
Tuttavia, fallisce con una ricostruzione CLI con:
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)
Le gem vengono create solo durante una build completa? O potrebbe esserci stato un incremento della versione di Ruby che viene eseguito solo durante una ricostruzione completa? (che poi forza la ricreazione della gem?)
Abbiamo aggiornato la nostra immagine, quindi stiamo compilando imagemagick separatamente e includendo solo il binario finale di imagemagick, quindi non stiamo più includendo le librerie di compilazione per imagemagick nell’immagine nel tentativo di ridurre le dimensioni delle nostre immagini di base.
Potresti semplicemente aggiungere uno script di installazione per installare le librerie di imagemagick, ma ti consiglio di rimuovere la dipendenza del plugin dalla gemma rmagick - non sono sicuro di dove venga chiamata quella gemma poiché sembra che stia estendendo le chiamate di ottimizzazione delle immagini di Discourse core, che si collegano direttamente al binario imagemagick.
Anche se riuscissi a trovare una soluzione alternativa, sarebbe davvero un peccato bloccare l’uso della gemma rmagick poiché l’alternativa consiste nel manipolare le chiamate di sistema a ImageMagick, il che è un po’… goffo… e molto meno user-friendly per gli sviluppatori rispetto all’utilizzo di un’API conveniente nel linguaggio.
La forma corretta richiede cmd: ecc. Ma mi dispiace, non è possibile. Non posso confermare se l’errore è lo stesso, però. Ho usato tmux e non mi permette di scorrere.