Сборка не удалась из-за несовместимости ruby gem

Примечание: Я назвал свой контейнер containers/polyf.yml
discourse-doctor вообще не обрабатывает это…

$ ./launcher rebuild polyf
...
I, [2023-04-06T09:50:45.464717 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'
[DEPRECATED] Флаг `--deployment` устарел, так как он зависит от сохранения настроек между вызовами bundler, что bundler в будущих версиях делать больше не будет. Вместо этого используйте `bundle config set --local deployment 'true'` и прекратите использовать этот флаг.
[DEPRECATED] Флаг `--without` устарел, так как он зависит от сохранения настроек между вызовами bundler, что bundler в будущих версиях делать больше не будет. Вместо этого используйте `bundle config set --local without 'test development'` и прекратите использовать этот флаг.
Bundler::PathError: Путь `/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/sprockets-f4d3dae71ef2` не существует.
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/source/path.rb:209:in `load_spec_files'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/source/git.rb:205:in `load_spec_files'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/source/path.rb:107:in `local_specs'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/source/git.rb:172:in `specs'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/lazy_specification.rb:82:in `materialize_for_installation'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:195:in `map!'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:195:in `specs_for_dependency'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:33:in `block in for'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:22:in `loop'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:22:in `for'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:79:in `materialize'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/definition.rb:209:in `missing_specs'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/definition.rb:213:in `missing_specs?'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:255:in `resolve_if_needed'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:82:in `block in run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:12:in `block in lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:9:in `open'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:9:in `lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:71:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:23:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli/install.rb:62:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:260:in `block in install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/settings.rb:131:in `temporary'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:259:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:34:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:28:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/exe/bundle:45:in `block in <top (required)>'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/exe/bundle:33:in `<top (required)>'
  /usr/local/bin/bundle:25:in `load'
  /usr/local/bin/bundle:25:in `<main>'
Bundler::InstallError: sass-embedded-1.60.0-x86_64-linux требует версию rubygems >= 3.3.22, что несовместимо с текущей версией 3.3.20.
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:237:in `block in ensure_specs_are_compatible!'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:155:in `each'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/spec_set.rb:155:in `each'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:231:in `ensure_specs_are_compatible!'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:83:in `block in run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:12:in `block in lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:9:in `open'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/process_lock.rb:9:in `lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:71:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/installer.rb:23:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli/install.rb:62:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:260:in `block in install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/settings.rb:131:in `temporary'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:259:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:34:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/cli.rb:28:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/exe/bundle:45:in `block in <top (required)>'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.4.4/exe/bundle:33:in `<top (required)>'
  /usr/local/bin/bundle:25:in `load'
  /usr/local/bin/bundle:25:in `<main>'
I, [2023-04-06T09:50:56.916061 #1]  INFO -- : Запуск `bundle install --deployment --jobs 4 --retry 3 --verbose --without "test" "development"` с помощью bundler 2.4.4
Заморожено, используется разрешение из lockfile
Определение не хватает зависимостей, не удалось разрешить и материализовать локально (https://github.com/rails/sprockets (at 3.x@f4d3dae) ещё не проверено. Сначала выполните `bundle install`.)
Заморожено, используется разрешение из lockfile
...
2023-04-06 09:50:56.935 UTC [47] LOG:  завершение работы
2023-04-06 09:50:56.970 UTC [43] LOG:  система баз данных завершена
104:M 06 Apr 2023 09:50:57.012 # Пользователь запросил завершение работы...
104:M 06 Apr 2023 09:50:57.012 * Сохранение финального снимка RDB перед выходом.
104:M 06 Apr 2023 09:50:57.036 * БД сохранена на диск
104:M 06 Apr 2023 09:50:57.036 # Redis готов к выходу, пока...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' завершился с ошибкой, код возврата #<Process::Status: pid 367 exit 5>
Место ошибки: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec завершился с ошибкой с параметрами {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}
Инициализация завершилась с кодом выхода 5
** ИНИЦИАЛИЗАЦИЯ НЕ УДАЛАСЬ ** пожалуйста, прокрутите вверх и найдите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.
82f1cada0a0c138a0834f1682f3475590d0e28f179b243c4f0d54ae7043515bb

Непонятно, почему у вас Ruby 2.7.0, а у меня Ruby 3.2.0. Возможно, вам стоит показать полный лог — что-то не обновилось. Обычная последовательность действий:

cd /var/discourse
git pull
./launcher rebuild app

(хотя в вашем случае не app, а polyf)

В соседней теме:

Я использую Debian [stable] (в настоящее время это версия 11 с кодовым названием bullseye), для которой стандартный пакет ruby имеет версию 2.7.0: I Challenge Thee

Меня немного удивляет необходимость выполнения git pull, учитывая, что ./launcher уже делает это при пересборке:

Однако я сейчас пробую выполнить предыдущий git pull, который принёс некоторые изменения, поэтому я не совсем понимаю, почему launcher получил их… Ну ладно, посмотрим, как всё пойдёт, и я вернусь к вам.

Я думаю, что имеет значение версия Ruby внутри контейнера Docker, и она должна быть корректной, если образ был обновлён, как и следовало. Если вы используете образ, отличный от tests-passed, возможно, он устарел. В таком случае проблема может заключаться в несовместимости с плагином, который слишком новый. В этом случае закомментирование ваших плагинов поможет определить, какой из них несовместим с вашим намеренно устаревшим Discourse.

Возможно, у вас как-то «грязное» состояние git или вы находитесь на старой ветке master?

После выполнения команды git pull пересборка прошла как по маслу.

@Falco, я действительно находился в старой ветке master. Теперь я в новой ветке main… Точно сказать, когда это произошло, не могу. Возможно, это сделала повторная запуск launcher в фоновом режиме (я видел в коде, что он переключает ветку, если вы находитесь в master).

Ну что ж, назову это обновление «магией» и больше не буду об этом беспокоиться, ведь теперь мой экземпляр Discourse успешно запущен и работает.

Спасибо вам, ребята, за поддержку (хотя бы моральную)!

Кстати, один момент: я обновился с версии 2.9.0.beta9. Возможно, это имеет значение…

Думаю, это объясняет, что такое git pull — он обновляет сам лаунчер перед его запуском. Я этого не знал.

@JammyDodger, спасибо. Я ещё не нашёл кнопку «Решение».

[запоминает]