Столкнулся с любопытной проблемой, которая может выявить ещё одно различие между онлайн-обновлениями и обновлениями через командную строку.
Если я выполняю онлайн-обновление с плагином, использующим gem rmagick, оно проходит успешно.
Однако при пересборке через CLI происходит сбой:
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)
Собираются ли gems только при полной сборке? Или возможно, что произошло увеличение версии Ruby, которое выполняется только при полной пересборке? (что затем вынуждает перекомпилировать gem?)
Мы обновили наш образ: теперь мы компилируем ImageMagick отдельно и включаем только финальный бинарный файл ImageMagick. Таким образом, в образ больше не входят библиотеки, необходимые для компиляции ImageMagick, что сделано для уменьшения размера наших базовых образов.
Вы можете просто добавить скрипт установки для подключения библиотек ImageMagick, но я рекомендую удалить зависимость плагина от gem-пакета rmagick. Мне неясно, где именно вызывается этот gem, так как, судя по всему, он расширяет вызовы оптимизации изображений в ядре Discourse, которые напрямую обращаются к бинарному файлу ImageMagick.
Даже если я смогу найти обходной путь, будет очень жаль блокировать использование гема rmagick, так как альтернатива — работа с системными вызовами ImageMagick, что немного… громоздко… и гораздо менее удобно для разработчика по сравнению с использованием удобного API на языке программирования.
Правильная форма требует cmd: и т. д. Но, к сожалению, не получится. Я не могу подтвердить, та же ли это ошибка, хотя. Я использовал tmux, и он не позволяет мне прокручивать.
Чтобы прокрутить tmux, нажмите Ctrl-b, затем [ (открывающая скобка). После этого можно прокручивать содержимое, а для выхода из режима прокрутки нажмите q.