Aggiornamento online riuscito, ma rebuild fallito

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?)

1 Mi Piace

@featheredtoast hai idea se questo possa aver influito sulla gemma rmagick?:

c’è stato un contemporaneo aumento della versione di imagemagick?

2 Mi Piace

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.

1 Mi Piace

Lo sto usando per l’elaborazione di un’immagine.

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.

Puoi fare qualcosa come importare le dipendenze compile-time della gemma, qualcosa del genere:

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

Non stiamo bloccando l’installazione di nulla, stiamo solo non includendo più le librerie statiche da cui dipende la gemma nell’immagine di base.

1 Mi Piace

Grazie Jeff!!

Vedrò prima se questo può essere eliminato, poi proverò quello come alternativa.

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.

1 Mi Piace

Per scorrere in tmux, premi Ctrl+b e poi [ (parentesi quadra sinistra). Puoi quindi scorrere e usare q per uscire dalla modalità di scorrimento.

1 Mi Piace

Alla fine ho risolto spostandomi sulla piuttosto ostica API della riga di comando. :sweat_smile:

Il plugin non si basa più sulla gemma rmagick. È un peccato, ma bisogna fare quello che si deve.

3 Mi Piace