루비 지엠 호환성 문제로 재빌드 실패

참고: 컨테이너 이름을 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 -- : bundler 2.4.4로 `bundle install --deployment --jobs 4 --retry 3 --verbose --without "test" "development"` 실행 중
동결 상태, 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 * 디스크에 DB 저장 완료
104:M 06 Apr 2023 09:50:57.036 # Redis는 이제 종료 준비가 되었습니다. 안녕...


실패
--------------------
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'
실행이 매개변수 {"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

./launcher가 재빌드 시 이미 해당 작업을 수행하고 있는데, git pull이 필요하다는 점은 다소 의외입니다:

다만, 현재 이전 git pull을 시도하고 있는데, 이 과정에서 일부 변경 사항(mods)이 가져와졌기 때문에 왜 launcher가 해당 변경 사항들을 가져왔는지 정확히 이해하지 못하겠습니다… 음, 일단 진행 상황을 지켜본 후 다시 말씀드리겠습니다.

Docker 컨테이너 내부의 Ruby 버전이 중요한 것 같고, 이미지가 제대로 업데이트되었다면 그렇게 되어야 마땅합니다. 테스트가 통과된 버전과 다른 버전을 실행 중이라면 이미지가 오래되었을 수 있으며, 이 경우 너무 새로운 플러그인과 호환되지 않는 문제가 원인일 수 있습니다. 그런 경우, 플러그인을 주석 처리하여 의도적으로 오래된 버전의 Discourse와 호환되지 않는 플러그인이 무엇인지 좁혀 나갈 수 있습니다.

아마도 git 상태가 더럽혀져 있거나,旧的 master 브랜치에 있는 것일 수 있습니다.

git pull을 실행한 후 재빌드가 순조롭게 완료되었습니다.

@Falco, 말씀하신 대로 저는 실제로 이전 master 브랜치에 있었습니다. 지금은 새로운 main 브랜치에 있네요… 정확히 언제 그렇게 되었는지는 잘 모르겠습니다. launcher를 반복 실행했을 때 내부적으로 브랜치를 전환해준 것 같습니다 (master 브랜치에 있을 경우 전환하는 코드가 실제로 존재하는 것을 확인했습니다).

음, 이번 업그레이드를 "마법"이라고 부르기로 하고 더 이상 신경 쓰지 않겠습니다. 지금은 제 discourse 인스턴스가 정상적으로 잘 작동하고 있으니까요.

(최소한 도덕적) 지원을 해주셔서 감사합니다, 여러분!

참고로, 나는 2.9.0.beta9 버전에서 업그레이드했습니다. 이게 영향을 미쳤을지도 모르겠네요…

이것은 git pull이 무엇에 관한 것인지 보여줍니다. 실행하기 전에 런처 자체를 업데이트하는 것입니다. 그걸 몰랐네요.

@JammyDodger, 감사합니다. 아직 “해결” 버튼을 발견하지 못했었네요.

[메모함]