알 수 없는 로컬 변경 사항이 있는 v2.2.0.beta4 포럼 업그레이드

안녕하세요,

저는 한 포럼의 관리자 권한을 인수했습니다. 현재 Discourse 버전이 매우 오래되었습니다. [v2.2.0.beta4 +241]

ssh를 통해 업데이트해야 하는데, 이 작업 자체는 수행할 수 있지만 다음과 같은 문제가 있습니다:

  1. git pull을 실행하면 다음과 같은 오류가 표시됩니다: error: “Your local changes to the following files would be overwritten by merge: image/base/Dockerfile Please commit your changes or stash them before you merge. Aborting”
  2. 제 질문은 다음과 같습니다: 변경된 내용이 무엇일 가능성이 높으며, 이를 stash해야 하는지 commit해야 하는지 궁금합니다.
  3. ./launcher rebuild app 명령을 실행하면 "Your Docker installation is not using a supported storage driver. If we were to proceed you may have a broken install. aufs is the recommended storage driver, although zfs/btrfs/overlay and overlay2 may work as well. Other storage drivers are known to be problematic."라는 메시지가 나옵니다.

저장 시스템을 확인해 보니 overlay2로 설정되어 있습니다. 이 설정이 괜찮은지, 어떤 절차를 따르는 것이 좋은지, 아니면 aufs로 변경해야 하는지 알려주시면 감사하겠습니다.

감사합니다.

운영 체제도 이미 수명 종료(EOL)되었을 가능성이 높습니다.

새로운 VM을 생성하고 rsync를 사용하여 Discourse 사이트를 다른 VPS로 이동하는 것이 좋습니다.

이렇게 하면 문제가 발생하더라도 기존 사이트는 계속 실행될 수 있습니다.

해당 스레드가 꽤 오래되었고, 인용된 Ubuntu 버전이 14.04라는 것을 확인했습니다. 최신 버전의 Ubuntu를 사용하는 것이 괜찮을까요?

네, 아마 괜찮을 겁니다.

최근 LTS라고 수정했습니다.

24.04를 직접 사용해 본 적은 없지만, 작동할 것으로 예상됩니다.

자, 시작하겠습니다. "git diff"를 실행해 보니 변경된 부분은 Docker 파일이 위치하던 드라이브뿐이었습니다. 그래서 아래처럼 브랜치를 만들었습니다:

git checkout -b master_backup_01

그 다음 다음 명령을 실행했습니다:
git add .
git commit -m “changed root location of dockerfile”

git checkout master
git pull
./launcher rebuild app

그 후 앱이 성공적으로 다운로드되고 재빌드되었습니다. 하지만 무슨 일이 일어났는지 사이트가 다운되었습니다. 여기서 가장 좋은 선택지는 무엇일까요? 다음 게시물에 출력을 붙여넣을 예정입니다.

Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-32-generic x86_64)에 오신 것을 환영합니다

 * 문서:  https://help.ubuntu.com
 * 관리:     https://landscape.canonical.com
 * 지원:        https://ubuntu.com/advantage

  2024년 6월 4일 (화) 23:10:06 UTC 기준 시스템 정보

  시스템 부하:  0.01                프로세스:              178
  / 사용량:   157.24GB 중 33.1%   로그인한 사용자:        0
  메모리 사용량: 41%                 eth0의 IP 주소:    45.79.99.86
  스왑 사용량:   12%                 docker0의 IP 주소: 172.17.0.1

 * 엄격하게 격리된 Kubernetes는 엣지 및 IoT의 보안을 강화합니다. MicroK8s가
   얼마나 쉽게, 탄력적으로, 안전하게 K8s 클러스터를 배포할 수 있는지 알아보세요.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

 * Canonical Livepatch 설치 가능.
   - 시스템 재시작을 줄이고 커널 보안을 개선하세요. 활성화 방법:
     https://ubuntu.com/livepatch

327개의 패키지를 업데이트할 수 있습니다.
232개의 업데이트가 보안 업데이트입니다.


*** 시스템 재시작 필요 ***
마지막 로그인: 2024년 6월 2일 (일) 11:08:44, 1.145.60.141에서
root@idmforums:~# git diff
root@idmforums:~# cd /var/ idmforums
-bash: cd: too many arguments
root@idmforums:~# cd /var/idmforums
root@idmforums:/var/idmforums# git diff
diff --git a/image/base/Dockerfile b/image/base/Dockerfile
index 7ab5907..3f43ab8 100644
--- a/image/base/Dockerfile
+++ b/image/base/Dockerfile
@@ -10,6 +10,7 @@ ENV COMPRESS_BROTLI 1

 RUN echo 2.0.`date +%Y%m%d` > /VERSION

+RUN bundle config --global silence_root_warning 1
 RUN apt-get update && apt-get install -y lsb-release sudo curl
 RUN echo "debconf debconf/frontend select Teletype" | debconf-set-selections
 RUN echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main restricted universe" > /etc/apt/sources.list
root@idmforums:/var/idmforums# git status
On branch master
Your branch is behind 'origin/master' by 231 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes not staged for commit:
  (use "git add <file>..." to 커밋될 내용을 업데이트합니다)
  ("git checkout -- " 사용)<file>..." 작업 디렉터리에서 변경 사항을 폐기하려면)

        수정됨:   image/base/Dockerfile

추적되지 않는 파일:
  (커밋에 포함하려면 "git add <file>..." 사용)

        Gemfile

커밋에 추가된 변경 사항 없음 ("git add" 및/또는 "git commit -a" 사용)
root@idmforums:/var/idmforums# git checkout -b master_backup_01
M       image/base/Dockerfile
새 브랜치 'master_backup_01'으로 전환됨
root@idmforums:/var/idmforums# git add .
root@idmforums:/var/idmforums# git commit -m "changed root location of dockerfile"
[master_backup_01 3798d1a] changed root location of dockerfile
 Committer: root <root@mail.idmforums.com>
사용자 이름과 이메일 주소가 사용자 이름과 호스트 이름에 기반하여 자동으로 구성되었습니다. 정확성을 확인하십시오.
이 메시지를 억제하려면 명시적으로 설정하십시오. 다음 명령을 실행하고 편집기에서 지시에 따라 구성 파일을 편집하십시오:

    git config --global --edit

이 작업을 수행한 후, 다음을 사용하여 이 커밋에 사용된 신원을 수정할 수 있습니다:

    git commit --amend --reset-author

 2 files changed, 4 insertions(+)
 create mode 100644 Gemfile
root@idmforums:/var/idmforums# git checkout master
브랜치 'master'로 전환됨
브랜치가 'origin/master'보다 231개 커밋 뒤처져 있으며, fast-forward할 수 있습니다.
  (로컬 브랜치를 업데이트하려면 "git pull" 사용)
root@idmforums:/var/idmforums# git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 2 (delta 2), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/discourse/discourse_docker
   f4d4f8a..964236a  main       -> origin/main
Updating c786ffc..40169e8
Fast-forward
 .github/workflows/build.yml                                       |  81 +++++++
 LICENSE                                                           |  21 ++
 README.md                                                         |  55 +++--
 Vagrantfile                                                       |  38 ---
 discourse-doctor                                                  |  32 ++-
 discourse-setup                                                   | 578 +++++++++++++++++++++++++++++++---------------
 image/README.md                                                   |   2 +-
 image/auto_build.rb                                               |   3 +
 image/base/Dockerfile                                             |  91 ++++----
 image/base/boot                                                   |   2 +-
 image/base/install-gifsicle                                       |  11 -
 image/base/install-imagemagick                                    |  61 ++++-
 image/base/install-nginx                                          |  34 ++-
 image/base/install-pngcrush                                       |  11 -
 image/base/install-pngquant                                       |   8 -
 image/base/install-redis                                          |  36 +++
 image/base/rsyslog                                                |   1 +
 image/base/runit-1.d-00-fix-var-logs                              |   6 +-
 image/discourse_bench/Dockerfile                                  |   1 +
 image/discourse_dev/Dockerfile                                    |   8 +-
 image/discourse_dev/postgres_dev.template.yml                     |   9 +-
 image/discourse_fast_switch/Dockerfile                            |   4 +-
 image/discourse_fast_switch/create_switch.rb                      |   2 +-
 image/discourse_test/Dockerfile                                   |  17 +-
 launcher                                                          | 295 +++++++++++++----------
 samples/data.yml                                                  |   2 +
 samples/mail-receiver.yml                                         |  17 +-
 samples/redis.yml                                                 |   2 +
 samples/standalone.yml                                            |  12 +-
 samples/web_only.yml                                              |  13 +-
 scripts/docker-gc                                                 |   4 -
 templates/cache-dns.template.yml                                  |  19 ++
 templates/import/chrome-dep.template.yml                          |   6 +-
 templates/import/mbox.template.yml                                |   3 +-
 templates/import/mssql-dep.template.yml                           |   3 +-
 templates/import/mysql-dep.template.yml                           |   5 +-
 templates/import/phpbb3.template.yml                              |  25 +-
 templates/import/vanilla.template.yml                             | 116 ++++++++++
 templates/postgres.10.template.yml                                |  15 +-
 templates/{postgres.9.3.template.yml => postgres.12.template.yml} |  59 ++---
 templates/postgres.13.template.yml                                | 238 +++++++++++++++++++
 templates/postgres.9.2.template.yml                               |  97 --------
 templates/postgres.9.5.template.yml                               |  12 -
 templates/postgres.template.yml                                   | 100 +++-----
 templates/redis.template.yml                                      |  13 ++
 templates/sshd.template.yml                                       |  53 +----
 templates/web.letsencrypt.ssl.template.yml                        |  62 ++++-
 templates/web.ssl.template.yml                                    |  23 +-
 templates/web.template.yml                                        | 135 +++++++++--
 tests/README.md                                                   |  28 +++
 tests/run-all-tests                                               |  11 +
 tests/standalone                                                  |  88 +++++++
 tests/two-container                                               |  87 +++++++
 tests/update-old-templates                                        |  94 ++++++++
 54 files changed, 1898 insertions(+), 851 deletions(-)
 create mode 100644 .github/workflows/build.yml
 create mode 100644 LICENSE
 delete mode 100644 Vagrantfile
 delete mode 100755 image/base/install-gifsicle
 delete mode 100755 image/base/install-pngcrush
 delete mode 100755 image/base/install-pngquant
 create mode 100755 image/base/install-redis
 delete mode 100755 scripts/docker-gc
 create mode 100644 templates/cache-dns.template.yml
 create mode 100644 templates/import/vanilla.template.yml
 rename templates/{postgres.9.3.template.yml => postgres.12.template.yml} (72%)
 create mode 100644 templates/postgres.13.template.yml
 delete mode 100644 templates/postgres.9.2.template.yml
 create mode 100644 tests/README.md
 create mode 100755 tests/run-all-tests
 create mode 100755 tests/standalone
 create mode 100755 tests/two-container
 create mode 100755 tests/update-old-templates
root@idmforums:/var/idmforums# ./launcher rebuild app

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20210528-1735: Pulling from discourse/base
69692152171a: Pull complete
caccdbcee96e: Pull complete
Digest: sha256:b1890ab83b905ada5c9b7221264d62159bbf63bda706cdc652b0533bc90431c5
Status: Downloaded newer image for discourse/base:2.0.20210528-1735
docker.io/discourse/base:2.0.20210528-1735
Branch 'main' set up to track remote branch 'main' from 'origin'.
origin/HEAD set to main
Ensuring launcher is up to date
Fetching origin
Launcher has diverged source, this is only expected in Dev mode
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && git checkout v1.0.3 && /pups/bin/pups --stdin
From https://github.com/discourse/pups
   17f04ec..e0ff889  master        -> origin/master
 * [new branch]      main          -> origin/main
 * [new branch]      stream-stdout -> origin/stream-stdout
 * [new tag]         v1.1.1        -> v1.1.1
 * [new tag]         v1.1.0        -> v1.1.0
 * [new tag]         v1.2.0        -> v1.2.0
 * [new tag]         v1.2.1        -> v1.2.1
Updating 17f04ec..e0ff889
Fast-forward
 .github/workflows/ci.yml     |  29 ++++++
 .github/workflows/lint.yml   |  27 +++++
 .rubocop.yml                 |   3 +
 Gemfile                      |   2 +
 Guardfile                    |   4 +-
 README.md                    |  21 ++++
 Rakefile                     |  14 +--
 bin/pups                     |   8 +-
 lib/pups.rb                  |  32 ++++--
 lib/pups/cli.rb              |  92 ++++++++++-------
 lib/pups/command.rb          |  25 +++--
 lib/pups/config.rb           | 240 +++++++++++++++++++++++--------------------
 lib/pups/docker.rb           |  69 +++++++++++++
 lib/pups/exec_command.rb     | 182 ++++++++++++++++----------------
 lib/pups/file_command.rb     |  60 +++++------
 lib/pups/merge_command.rb    |  94 ++++++++---------
 lib/pups/replace_command.rb  |  70 +++++++------
 lib/pups/runit.rb            |  47 +++++----
 lib/pups/version.rb          |   4 +-
 pups.gemspec                 |  37 ++++---
 test/cli_test.rb             | 102 +++++++++++++++---
 test/config_test.rb          | 215 ++++++++++++++++++++++++++++----------
 test/docker_test.rb          | 157 ++++++++++++++++++++++++++++
 test/exec_command_test.rb    |  62 ++++++-----
 test/file_command_test.rb    |  17 ++-
 test/merge_command_test.rb   |  64 ++++++------
 test/replace_command_test.rb |  86 ++++++++--------
 test/test_helper.rb          |   2 +
 28 files changed, 1158 insertions(+), 607 deletions(-)
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 .github/workflows/lint.yml
 create mode 100644 .rubocop.yml
 create mode 100644 lib/pups/docker.rb
 create mode 100644 test/docker_test.rb
Note: checking out 'v1.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d1db030 cut a new version
I, [2024-06-04T23:36:37.401202 #1]  INFO -- : Loading --stdin
I, [2024-06-04T23:36:37.425838 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2024-06-04T23:36:37.543893 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-06-04T23:36:37.544135 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2024-06-04T23:36:37.549756 #1]  INFO -- :
I, [2024-06-04T23:36:37.550707 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2024-06-04T23:36:37.554149 #1]  INFO -- :
I, [2024-06-04T23:36:37.554297 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2024-06-04T23:36:37.556363 #1]  INFO -- :
I, [2024-06-04T23:36:37.556586 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2024-06-04T23:36:37.559019 #1]  INFO -- :
I, [2024-06-04T23:36:37.559217 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2024-06-04T23:36:37.561244 #1]  INFO -- :
I, [2024-06-04T23:36:37.561365 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2024/06/04 23:36:37 socat[35] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2024-06-04T23:36:37.587416 #1]  INFO -- :
I, [2024-06-04T23:36:37.587759 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2024-06-04T23:36:37.591649 #1]  INFO -- :
I, [2024-06-04T23:36:37.591873 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2024-06-04T23:36:37.595295 #1]  INFO -- :
I, [2024-06-04T23:36:37.595477 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-04T23:36:37.597365 #1]  INFO -- :
I, [2024-06-04T23:36:37.597579 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-04T23:36:37.599742 #1]  INFO -- :
I, [2024-06-04T23:36:37.604002 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2024-06-04T23:36:37.608548 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2024-06-04T23:36:37.615415 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2024-06-04T23:36:37.623666 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2024-06-04T23:36:37.623939 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2024-06-04T23:36:39.151163 #1]  INFO -- :
I, [2024-06-04T23:36:39.152260 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2024-06-04T23:36:39.156524 #1]  INFO -- :
I, [2024-06-04T23:36:39.156616 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2024-06-04T23:36:39.198114 #1]  INFO -- :
I, [2024-06-04T23:36:39.198360 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2024-06-04T23:36:39.201422 #1]  INFO -- :
I, [2024-06-04T23:36:39.201963 #1]  INFO -- : > /root/upgrade_postgres
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
debconf: delaying package configuration, since apt-utils is not installed
./launcheI, [2024-06-04T23:37:27.208986 #1]  INFO -- : Upgrading PostgreSQL from version 10 to 13
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /shared/postgres_data_new ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok


Success. You can now start the database server using:

    /usr/lib/postgresql/13/bin/pg_ctl -D /shared/postgres_data_new -l logfile start

Get:1 http://security.debian.org/debian-security buster/updates InRelease [34.8 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [56.6 kB]
Get:4 https://deb.nodesource.com/node_15.x buster InRelease [4,584 B]
Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [598 kB]
Get:6 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [149 kB]
Get:7 http://deb.debian.org/debian buster/main amd64 Packages [7,909 kB]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages.diff/Index [12.1 kB]
Ign:8 http://deb.debian.org/debian buster-updates/main amd64 Packages.diff/Index
Get:9 http://deb.debian.org/debian buster-updates/main amd64 Packages [8,788 B]
Get:10 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [346 kB]
Fetched 9,241 kB in 2s (5,638 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  postgresql-client-10
Suggested packages:
  postgresql-doc-10
The following NEW packages will be installed:
  postgresql-10 postgresql-client-10
0 upgraded, 2 newly installed, 0 to remove and 160 not upgraded.
Need to get 6,423 kB of archives.
After this operation, 30.7 MB of additional disk space will be used.
Get:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-10 amd64 10.23-3.pgdg100+2 [1,444 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-10 amd64 10.23-3.pgdg100+2 [4,979 kB]
Fetched 6,423 kB in 2s (3,770 kB/s)
Selecting previously unselected package postgresql-client-10.
(Reading database ... 43021 files and directories currently installed.)
Preparing to unpack .../postgresql-client-10_10.23-3.pgdg100+2_amd64.deb ...
Unpacking postgresql-client-10 (10.23-3.pgdg100+2) ...
Selecting previously unselected package postgresql-10.
Preparing to unpack .../postgresql-10_10.23-3.pgdg100+2_amd64.deb ...
Unpacking postgresql-10 (10.23-3.pgdg100+2) ...
Setting up postgresql-client-10 (10.23-3.pgdg100+2) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/share/postgresql/13/man/man1/psql.1.gz because link group psql.1.gz is broken
Setting up postgresql-10 (10.23-3.pgdg100+2) ...
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/10/main ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Etc/UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctlcluster 10 main start

Warning: The selected stats_temp_directory /var/run/postgresql/10-main.pg_stat_tmp
is not writable for the cluster owner. Not adding this setting in
postgresql.conf.
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5433 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: warning: forcing reinstallation of alternative /usr/share/postgresql/13/man/man1/postmaster.1.gz because link group postmaster.1.gz is broken
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for postgresql-common (226.pgdg100+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
Stopping PostgreSQL 10 database server: main.
Stopping PostgreSQL 13 database server: main.
Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for tables WITH OIDS                               ok
Checking for invalid "sql_identifier" user columns          ok
Creating dump of global objects                             ok
Creating dump of database schemas
  discourse
  postgres
  template1
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok

If pg_upgrade fails after this point, you must re-initdb the
new cluster before continuing.

업그레이드 수행 중
------------------
새 클러스터의 모든 행 분석 중                       ok
새 클러스터의 모든 행 동결 중                        ok
새 pg_xact에서 파일 삭제 중                             ok
이전 pg_xact를 새 서버로 복사 중                           ok
새 클러스터의 다음 트랜잭션 ID 및 에포크 설정 중       ok
새 pg_multixact/offsets에서 파일 삭제 중                ok
이전 pg_multixact/offsets를 새 서버로 복사 중              ok
새 pg_multixact/members에서 파일 삭제 중                ok
이전 pg_multixact/members를 새 서버로 복사 중              ok
새 클러스터의 다음 멀티트랜잭션 ID 및 오프셋 설정 중        ok
WAL 아카이브 재설정 중                                      ok
새 클러스터의 frozenxid 및 minmxid 카운터 설정 중       ok
새 클러스터의 전역 객체 복원 중                 ok
새 클러스터의 데이터베이스 스키마 복원 중
  template1
  discourse
  postgres
                                                            ok
사용자 관계 파일 복사 중
  /shared/postgres_data/base/16384/2613
  /shared/postgres_data/base/16384/2683
  /shared/postgres_data/base/16384/16762
  /shared/postgres_data/base/16384/16762_fsm
  /shared/postgres_data/base/16384/16765
  /shared/postgres_data/base/16384/16767
  /shared/postgres_data/base/16384/16768
  /shared/postgres_data/base/16384/16770
  /shared/postgres_data/base/16384/16773
  /shared/postgres_data/base/16384/16775
  /shared/postgres_data/base/16384/16776
  /shared/postgres_data/base/16384/16780
  /shared/postgres_data/base/16384/16780_fsm
  /shared/postgres_data/base/16384/16784
  /shared/postgres_data/base/16384/16786
  /shared/postgres_data/base/16384/16787
  /shared/postgres_data/base/16384/16789
  /shared/postgres_data/base/16384/20635
  /shared/postgres_data/base/16384/20635_fsm
  /shared/postgres_data/base/16384/20635_vm
  /shared/postgres_data/base/16384/20641
  /shared/postgres_data/base/16384/19612
  /shared/postgres_data/base/16384/19612_fsm
  /shared/postgres_data/base/16384/19612_vm
  /shared/postgres_data/base/16384/19618
  /shared/postgres_data/base/16384/21104
  /shared/postgres_data/base/16384/21104_fsm
  /shared/postgres_data/base/16384/21104_vm
  /shared/postgres_data/base/16384/21110
  /shared/postgres_data/base/16384/19619
  /shared/postgres_data/base/16384/19619_fsm
  /shared/postgres_data/base/16384/19430
  /shared/postgres_data/base/16384/19430_fsm
  /shared/postgres_data/base/16384/18503
  /shared/postgres_data/base/16384/18503_fsm
  /shared/postgres_data/base/16384/18503_vm
  /shared/postgres_data/base/16384/18509
  /shared/postgres_data/base/16384/18510
  /shared/postgres_data/base/16384/19655
  /shared/postgres_data/base/16384/19655_fsm
  /shared/postgres_data/base/16384/19655_vm
  /shared/postgres_data/base/16384/19658
  /shared/postgres_data/base/16384/19284
  /shared/postgres_data/base/16384/19284_fsm
  /shared/postgres_data/base/16384/19284_vm
  /shared/postgres_data/base/16384/19290
  /shared/postgres_data/base/16384/19291
  /shared/postgres_data/base/16384/17019
  /shared/postgres_data/base/16384/17019_fsm
  /shared/postgres_data/base/16384/17019_vm
  /shared/postgres_data/base/16384/17029
  /shared/postgres_data/base/16384/17033
  /shared/postgres_data/base/16384/17035
  /shared/postgres_data/base/16384/17036
  /shared/postgres_data/base/16384/17039
  /shared/postgres_data/base/16384/17040
  /shared/postgres_data/base/16384/18337
  /shared/postgres_data/base/16384/18337_fsm
  /shared/postgres_data/base/16384/18337_vm
  /shared/postgres_data/base/16384/18343
  /shared/postgres_data/base/16384/18344
  /shared/postgres_data/base/16384/18344_fsm
  /shared/postgres_data/base/16384/17191
  /shared/postgres_data/base/16384/17191_fsm
  /shared/postgres_data/base/16384/17195
  /shared/postgres_data/base/16384/17197
  /shared/postgres_data/base/16384/17198
  /shared/postgres_data/base/16384/17201
  /shared/postgres_data/base/16384/17201_fsm
  /shared/postgres_data/base/16384/17204
  /shared/postgres_data/base/16384/21111
  /shared/postgres_data/base/16384/21111_fsm
  /shared/postgres_data/base/16384/21281
  /shared/postgres_data/base/16384/21281_fsm
  /shared/postgres_data/base/16384/21281_vm
  /shared/postgres_data/base/16384/21287
  /shared/postgres_data/base/16384/21288
  /shared/postgres_data/base/16384/18540
  /shared/postgres_data/base/16384/18540_fsm
  /shared/postgres_data/base/16384/18540_vm
  /shared/postgres_data/base/16384/18543
  /shared/postgres_data/base/16384/17293
  /shared/postgres_data/base/16384/17293_fsm
  /shared/postgres_data/base/16384/17293_vm
  /shared/postgres_data/base/16384/17297
  /shared/postgres_data/base/16384/17299
  /shared/postgres_data/base/16384/17300
  /shared/postgres_data/base/16384/17304
  /shared/postgres_data/base/16384/17308
  /shared/postgres_data/base/16384/17310
  /shared/postgres_data/base/16384/17311
  /shared/postgres_data/base/16384/17313
  /shared/postgres_data/base/16384/17370
  /shared/postgres_data/base/16384/17370_fsm
  /shared/postgres_data/base/16384/17374
  /shared/postgres_data/base/16384/17376
  /shared/postgres_data/base/16384/17377
  /shared/postgres_data/base/16384/18901
  /shared/postgres_data/base/16384/18901_fsm
  /shared/postgres_data/base/16384/18907
  /shared/postgres_data/base/16384/18908
  /shared/postgres_data/base/16384/18110
  /shared/postgres_data/base/16384/17402
  /shared/postgres_data/base/16384/17402_fsm
  /shared/postgres_data/base/16384/17406
  /shared/postgres_data/base/16384/17417
  /shared/postgres_data/base/16384/19292
  /shared/postgres_data/base/16384/17439
  /shared/postgres_data/base/16384/20642
  /shared/postgres_data/base/16384/18756
  /shared/postgres_data/base/16384/18762
  /shared/postgres_data/base/16384/18763
  /shared/postgres_data/base/16384/18113
  /shared/postgres_data/base/16384/21311
  /shared/postgres_data/base/16384/21311_fsm
  /shared/postgres_data/base/16384/21311_vm
  /shared/postgres_data/base/16384/21317
  /shared/postgres_data/base/16384/21317_fsm
  /shared/postgres_data/base/16384/21318
  /shared/postgres_data/base/16384/21318_fsm
  /shared/postgres_data/base/16384/17627
  /shared/postgres_data/base/16384/17627_fsm
  /shared/postgres_data/base/16384/17631
  /shared/postgres_data/base/16384/17633
  /shared/postgres_data/base/16384/17634
  /shared/postgres_data/base/16384/18345
  /shared/postgres_data/base/16384/18115
  /shared/postgres_data/base/16384/18121
  /shared/postgres_data/base/16384/18122
  /shared/postgres_data/base/16384/20585
  /shared/postgres_data/base/16384/20591
  /shared/postgres_data/base/16384/20592
  /shared/postgres_data/base/16384/17759
  /shared/postgres_data/base/16384/17763
  /shared/postgres_data/base/16384/17765
  /shared/postgres_data/base/16384/17766
  /shared/postgres_data/base/16384/21121
  /shared/postgres_data/base/16384/21121_fsm
  /shared/postgres_data/base/16384/21121_vm
  /shared/postgres_data/base/16384/21124
  /shared/postgres_data/base/16384/21125
  /shared/postgres_data/base/16384/17779
  /shared/postgres_data/base/16384/17779_fsm
  /shared/postgres_data/base/16384/17779_vm
  /shared/postgres_data/base/16384/17785
  /shared/postgres_data/base/16384/17787
  /shared/postgres_data/base/16384/17788
  /shared/postgres_data/base/16384/17790
  /shared/postgres_data/base/16384/20048
  /shared/postgres_data/base/16384/20048_fsm
  /shared/postgres_data/base/16384/20048_vm
  /shared/postgres_data/base/16384/20054
  /shared/postgres_data/base/16384/20055
  /shared/postgres_data/base/16384/21371
  /shared/postgres_data/base/16384/21377
  /shared/postgres_data/base/16384/17882
  /shared/postgres_data/base/16384/17882_fsm
  /shared/postgres_data/base/16384/17882_vm
  /shared/postgres_data/base/16384/17886
  /shared/postgres_data/base/16384/17888
  /shared/postgres_data/base/16384/17889
  /shared/postgres_data/base/16384/17891
  /shared/postgres_data/base/16384/21026
  /shared/postgres_data/base/16384/21026_fsm
  /shared/postgres_data/base/16384/21026_vm
  /shared/postgres_data/base/16384/21032
  /shared/postgres_data/base/16384/21053
  /shared/postgres_data/base/16384/21053_fsm
  /shared/postgres_data/base/16384/21053_vm
  /shared/postgres_data/base/16384/21059
  /shared/postgres_data/base/16384/21044
  /shared/postgres_data/base/16384/21050
  /shared/postgres_data/base/16384/21033
  /shared/postgres_data/base/16384/21033_fsm
  /shared/postgres_data/base/16384/21060
  /shared/postgres_data/base/16384/21060_fsm
  /shared/postgres_data/base/16384/21051
  /shared/postgres_data/base/16384/18123
  /shared/postgres_data/base/16384/18118
  /shared/postgres_data/base/16384/18120
  /shared/postgres_data/base/16384/18136
  /shared/postgres_data/base/16384/18140
  /shared/postgres_data/base/16384/18142
  /shared/postgres_data/base/16384/18143
  /shared/postgres_data/base/16384/18145
  /shared/postgres_data/base/16384/18146
  /shared/postgres_data/base/16384/18946
  /shared/postgres_data/base/16384/18946_fsm
  /shared/postgres_data/base/16384/18952
  /shared/postgres_data/base/16384/21072
  /shared/postgres_data/base/16384/21072_fsm
  /shared/postgres_data/base/16384/21072_vm
  /shared/postgres_data/base/16384/21078
  /shared/postgres_data/base/16384/20193
  /shared/postgres_data/base/16384/20193_fsm
  /shared/postgres_data/base/16384/20193_vm
  /shared/postgres_data/base/16384/20196
  /shared/postgres_data/base/16384/20197
  /shared/postgres_data/base/16384/18340
  /shared/postgres_data/base/16384/18342
  /shared/postgres_data/base/16384/18531
  /shared/postgres_data/base/16384/18531_fsm
  /shared/postgres_data/base/16384/18531_vm
  /shared/postgres_data/base/16384/18534
  /shared/postgres_data/base/16384/18366
  /shared/postgres_data/base/16384/18366_fsm
  /shared/postgres_data/base/16384/18370
  /shared/postgres_data/base/16384/18372
  /shared/postgres_data/base/16384/18373
  /shared/postgres_data/base/16384/21079
  /shared/postgres_data/base/16384/18544
  /shared/postgres_data/base/16384/18693
  /shared/postgres_data/base/16384/18693_fsm
  /shared/postgres_data/base/16384/18693_vm
  /shared/postgres_data/base/16384/18694
  /shared/postgres_data/base/16384/18695
  /shared/postgres_data/base/16384/18497
  /shared/postgres_data/base/16384/18497_fsm
  /shared/postgres_data/base/16384/18497_vm
  /shared/postgres_data/base/16384/18500
  /shared/postgres_data/base/16384/18501
  /shared/postgres_data/base/16384/18502
  /shared/postgres_data/base/16384/18506
  /shared/postgres_data/base/16384/18508
  /shared/postgres_data/base/16384/18511
  /shared/postgres_data/base/16384/18512
  /shared/postgres_data/base/16384/18513
  /shared/postgres_data/base/16384/18515
  /shared/postgres_data/base/16384/19431
  /shared/postgres_data/base/16384/19432
  /shared/postgres_data/base/16384/18545
  /shared/postgres_data/base/16384/19659
  /shared/postgres_data/base/16384/18558
  /shared/postgres_data/base/16384/18558_fsm
  /shared/postgres_data/base/16384/18558_vm
  /shared/postgres_data/base/16384/18563
  /shared/postgres_data/base/16384/18565
  /shared/postgres_data/base/16384/18566
  /shared/postgres_data/base/16384/18568
  /shared/postgres_data/base/16384/18569
  /shared/postgres_data/base/16384/18571
  /shared/postgres_data/base/16384/18572
  /shared/postgres_data/base/16384/18574
  /shared/postgres_data/base/16384/18953
  /shared/postgres_data/base/16384/18954
  /shared/postgres_data/base/16384/18593
  /shared/postgres_data/base/16384/18598
  /shared/postgres_data/base/16384/18600
  /shared/postgres_data/base/16384/18601
  /shared/postgres_data/base/16384/18603
  /shared/postgres_data/base/16384/18604
  /shared/postgres_data/base/16384/18607
  /shared/postgres_data/base/16384/18611
  /shared/postgres_data/base/16384/18613
  /shared/postgres_data/base/16384/18614
  /shared/postgres_data/base/16384/18616
  /shared/postgres_data/base/16384/18955
  /shared/postgres_data/base/16384/18621
  /shared/postgres_data/base/16384/18621_fsm
  /shared/postgres_data/base/16384/18625
  /shared/postgres_data/base/16384/18627
  /shared/postgres_data/base/16384/18628
  /shared/postgres_data/base/16384/18630
  /shared/postgres_data/base/16384/19620
  /shared/postgres_data/base/16384/19620_fsm
  /shared/postgres_data/base/16384/20643
  /shared/postgres_data/base/16384/18633
  /shared/postgres_data/base/16384/20644
  /shared/postgres_data/base/16384/21495
  /shared/postgres_data/base/16384/21495_fsm
  /shared/postgres_data/base/16384/21495_vm
  /shared/postgres_data/base/16384/21498
  /shared/postgres_data/base/16384/18956
  /shared/postgres_data/base/16384/18698
  /shared/postgres_data/base/16384/18702
  /shared/postgres_data/base/16384/18704
  /shared/postgres_data/base/16384/18705
  /shared/postgres_data/base/16384/18707
  /shared/postgres_data/base/16384/18720
  /shared/postgres_data/base/16384/18720_fsm
  /shared/postgres_data/base/16384/18720_vm
  /shared/postgres_data/base/16384/18725
  /shared/postgres_data/base/16384/18727
  /shared/postgres_data/base/16384/18728
  /shared/postgres_data/base/16384/18730
  /shared/postgres_data/base/16384/18731
  /shared/postgres_data/base/16384/19627
  /shared/postgres_data/base/16384/19633
  /shared/postgres_data/base/16384/19634
  /shared/postgres_data/base/16384/19635
  /shared/postgres_data/base/16384/18764
  /shared/postgres_data/base/16384/18759
  /shared/postgres_data/base/16384/18761
  /shared/postgres_data/base/16384/19602
  /shared/postgres_data/base/16384/19602_fsm
  /shared/postgres_data/base/16384/19608
  /shared/postgres_data/base/16384/19609
  /shared/postgres_data/base/16384/19610
  /shared/postgres_data/base/16384/19876
  /shared/postgres_data/base/16384/19882
  /shared/postgres_data/base/16384/20013
  /shared/postgres_data/base/16384/20013_fsm
  /shared/postgres_data/base/16384/20013_vm
  /shared/postgres_data/base/16384/20016
  /shared/postgres_data/base/16384/20017
  /shared/postgres_data/base/16384/20018
  /shared/postgres_data/base/16384/20018_fsm
  /shared/postgres_data/base/16384/20019
  /shared/postgres_data/base/16384/20019_fsm
  /shared/postgres_data/base/16384/20020
  /shared/postgres_data/base/16384/20020_fsm
  /shared/postgres_data/base/16384/20021
  /shared/postgres_data/base/16384/20021_fsm
  /shared/postgres_data/base/16384/20022
  /shared/postgres_data/base/16384/20022_fsm
  /shared/postgres_data/base/16384/20023
  /shared/postgres_data/base/16384/20023_fsm
  /shared/postgres_data/base/16384/20024
  /shared/postgres_data/base/16384/20024_fsm
  /shared/postgres_data/base/16384/20025
  /shared/postgres_data/base/16384/20025_fsm
  /shared/postgres_data/base/16384/20026
  /shared/postgres_data/base/16384/20026_fsm
  /shared/postgres_data/base/16384/20027
  /shared/postgres_data/base/16384/20027_fsm
  /shared/postgres_data/base/16384/20028
  /shared/postgres_data/base/16384/20028_fsm
  /shared/postgres_data/base/16384/20029
  /shared/postgres_data/base/16384/20029_fsm
  /shared/postgres_data/base/16384/18873
  /shared/postgres_data/base/16384/18877
  /shared/postgres_data/base/16384/18904
  /shared/postgres_data/base/16384/18906
  /shared/postgres_data/base/16384/20594
  /shared/postgres_data/base/16384/20600
  /shared/postgres_data/base/16384/20601
  /shared/postgres_data/base/16384/21289
  /shared/postgres_data/base/16384/18949
  /shared/postgres_data/base/16384/18949_fsm
  /shared/postgres_data/base/16384/18951
  /shared/postgres_data/base/16384/18959
  /shared/postgres_data/base/16384/18963
  /shared/postgres_data/base/16384/18965
  /shared/postgres_data/base/16384/18966
  /shared/postgres_data/base/16384/18968
  /shared/postgres_data/base/16384/19439
  /shared/postgres_data/base/16384/19439_fsm
  /shared/postgres_data/base/16384/19439_vm
  /shared/postgres_data/base/16384/19445
  /shared/postgres_data/base/16384/19446
  /shared/postgres_data/base/16384/19447
  /shared/postgres_data/base/16384/19462
  /shared/postgres_data/base/16384/19462_fsm
  /shared/postgres_data/base/16384/19462_vm
  /shared/postgres_data/base/16384/19465
  /shared/postgres_data/base/16384/19466
  /shared/postgres_data/base/16384/19466_fsm
  /shared/postgres_data/base/16384/19621
  /shared/postgres_data/base/16384/20645
  /shared/postgres_data/base/16384/20645_fsm
  /shared/postgres_data/base/16384/21113
  /shared/postgres_data/base/16384/21114
  /shared/postgres_data/base/16384/20577
  /shared/postgres_data/base/16384/20577_fsm
  /shared/postgres_data/base/16384/20577_vm
  /shared/postgres_data/base/16384/20583
  /shared/postgres_data/base/16384/19062
  /shared/postgres_data/base/16384/19067
  /shared/postgres_data/base/16384/19069
  /shared/postgres_data/base/16384/19070
  /shared/postgres_data/base/16384/19072
  /shared/postgres_data/base/16384/19075
  /shared/postgres_data/base/16384/19079
  /shared/postgres_data/base/16384/19081
  /shared/postgres_data/base/16384/19082
  /shared/postgres_data/base/16384/19084
  /shared/postgres_data/base/16384/19096
  /shared/postgres_data/base/16384/19100
  /shared/postgres_data/base/16384/19102
  /shared/postgres_data/base/16384/19103
  /shared/postgres_data/base/16384/19107
  /shared/postgres_data/base/16384/19111
  /shared/postgres_data/base/16384/19113
  /shared/postgres_data/base/16384/19114
  /shared/postgres_data/base/16384/19118
  /shared/postgres_data/base/16384/19118_fsm
  /shared/postgres_data/base/16384/19122
  /shared/postgres_data/base/16384/19124
  /shared/postgres_data/base/16384/19125
  /shared/postgres_data/base/16384/19127
  /shared/postgres_data/base/16384/19128
  /shared/postgres_data/base/16384/19129
  /shared/postgres_data/base/16384/19132
  /shared/postgres_data/base/16384/19136
  /shared/postgres_data/base/16384/19138
  /shared/postgres_data/base/16384/19139
  /shared/postgres_data/base/16384/19141
  /shared/postgres_data/base/16384/19155
  /shared/postgres_data/base/16384/19159
  /shared/postgres_data/base/16384/19467
  /shared/postgres_data/base/16384/19174
  /shared/postgres_data/base/16384/19178
  /shared/postgres_data/base/16384/19180
  /shared/postgres_data/base/16384/19181
  /shared/postgres_data/base/16384/19183
  /shared/postgres_data/base/16384/19184
  /shared/postgres_data/base/16384/19217
  /shared/postgres_data/base/16384/19217_fsm
  /shared/postgres_data/base/16384/19217_vm
  /shared/postgres_data/base/16384/19220
  /shared/postgres_data/base/16384/19221
  /shared/postgres_data/base/16384/20103
  /shared/postgres_data/base/16384/20103_fsm
  /shared/postgres_data/base/16384/20103_vm
  /shared/postgres_data/base/16384/20109
  /shared/postgres_data/base/16384/19293
  /shared/postgres_data/base/16384/21290
  /shared/postgres_data/base/16384/19468
  /shared/postgres_data/base/16384/19287
  /shared/postgres_data/base/16384/19289
  /shared/postgres_data/base/16384/19622
  /shared/postgres_data/base/16384/19322
  /shared/postgres_data/base/16384/19322_fsm
  /shared/postgres_data/base/16384/19322_vm
  /shared/postgres_data/base/16384/19326
  /shared/postgres_data/base/16384/19328
  /shared/postgres_data/base/16384/19329
  /shared/postgres_data/base/16384/19333
  /shared/postgres_data/base/16384/19337
  /shared/postgres_data/base/16384/19339
  /shared/postgres_data/base/16384/19340
  /shared/postgres_data/base/16384/20593
  /shared/postgres_data/base/16384/19390
  /shared/postgres_data/base/16384/19391
  /shared/postgres_data/base/16384/19394
  /shared/postgres_data/base/16384/19394_fsm
  /shared/postgres_data/base/16384/19398
  /shared/postgres_data/base/16384/19400
  /shared/postgres_data/base/16384/19401
  /shared/postgres_data/base/16384/19405
  /shared/postgres_data/base/16384/19405_fsm
  /shared/postgres_data/base/16384/19410
  /shared/postgres_data/base/16384/19412
  /shared/postgres_data/base/16384/19413
  /shared/postgres_data/base/16384/19435
  /shared/postgres_data/base/16384/19436
  /shared/postgres_data/base/16384/20110
  /shared/postgres_data/base/16384/19442
  /shared/postgres_data/base/16384/19444
  /shared/postgres_data/base/16384/21115
  /shared/postgres_data/base/16384/21035
  /shared/postgres_data/base/16384/21035_fsm
  /shared/postgres_data/base/16384/21035_vm
  /shared/postgres_data/base/16384/21041
  /shared/postgres_data/base/16384/21042
  /shared/postgres_data/base/16384/21042_fsm
  /shared/postgres_data/base/16384/19469
  /shared/postgres_data/base/16384/19475
  /shared/postgres_data/base/16384/19476
  /shared/postgres_data/base/16384/17038
  /shared/postgres_data/base/16384/19495
  /shared/postgres_data/base/16384/19501
  /shared/postgres_data/base/16384/19498
  /shared/postgres_data/base/16384/19500
  /shared/postgres_data/base/16384/19502
  /shared/postgres_data/base/16384/19503
  /shared/postgres_data/base/16384/19518
  /shared/postgres_data/base/16384/19522
  /shared/postgres_data/base/16384/19524
  /shared/postgres_data/base/16384/19525
  /shared/postgres_data/base/16384/19660
  /shared/postgres_data/base/16384/20344
  /shared/postgres_data/base/16384/20350
  /shared/postgres_data/base/16384/19605
  /shared/postgres_data/base/16384/19605_fsm
  /shared/postgres_data/base/16384/19605_vm
  /shared/postgres_data/base/16384/19607
  /shared/postgres_data/base/16384/19615
  /shared/postgres_data/base/16384/19615_fsm
  /shared/postgres_data/base/16384/19615_vm
  /shared/postgres_data/base/16384/19617
  /shared/postgres_data/base/16384/19630
  /shared/postgres_data/base/16384/19632
  /shared/postgres_data/base/16384/19638
  /shared/postgres_data/base/16384/19642
  /shared/postgres_data/base/16384/19644
  /shared/postgres_data/base/16384/19645
  /shared/postgres_data/base/16384/19671
  /shared/postgres_data/base/16384/19671_fsm
  /shared/postgres_data/base/16384/19702
  /shared/postgres_data/base/16384/19702_fsm
  /shared/postgres_data/base/16384/19702_vm
  /shared/postgres_data/base/16384/19703
  /shared/postgres_data/base/16384/19704
  /shared/postgres_data/base/16384/19705
  /shared/postgres_data/base/16384/19705_fsm
  /shared/postgres_data/base/16384/19705_vm
  /shared/postgres_data/base/16384/19708
  /shared/postgres_data/base/16384/19708_fsm
  /shared/postgres_data/base/16384/19710
  /shared/postgres_data/base/16384/19710_fsm
  /shared/postgres_data/base/16384/20646
  /shared/postgres_data/base/16384/20647
  /shared/postgres_data/base/16384/20648
  /shared/postgres_data/base/16384/20030
  /shared/postgres_data/base/16384/20030_fsm
  /shared/postgres_data/base/16384/20031
  /shared/postgres_data/base/16384/20031_fsm
  /shared/postgres_data/base/16384/20032
  /shared/postgres_data/base/16384/20032_fsm
  /shared/postgres_data/base/16384/20033
  /shared/postgres_data/base/16384/20033_fsm
  /shared/postgres_data/base/16384/20285
  /shared/postgres_data/base/16384/20285_fsm
  /shared/postgres_data/base/16384/20285_vm
  /shared/postgres_data/base/16384/20286
  /shared/postgres_data/base/16384/19834
  /shared/postgres_data/base/16384/19838
  /shared/postgres_data/base/16384/19840
  /shared/postgres_data/base/16384/19841
  /shared/postgres_data/base/16384/19856
  /shared/postgres_data/base/16384/19856_fsm
  /shared/postgres_data/base/16384/19856_vm
  /shared/postgres_data/base/16384/19860
  /shared/postgres_data/base/16384/19860_fsm
  /shared/postgres_data/base/16384/19862
  /shared/postgres_data/base/16384/19863
  /shared/postgres_data/base/16384/19865
  /shared/postgres_data/base/16384/19866
  /shared/postgres_data/base/16384/19879
  /shared/postgres_data/base/16384/19881
  /shared/postgres_data/base/16384/19883
  /shared/postgres_data/base/16384/19884
  /shared/postgres_data/base/16384/20830
  /shared/postgres_data/base/16384/20830_fsm
  /shared/postgres_data/base/16384/20836
  /shared/postgres_data/base/16384/20837
  /shared/postgres_data/base/16384/19897
  /shared/postgres_data/base/16384/19898
  /shared/postgres_data/base/16384/19898_fsm
  /shared/postgres_data/base/16384/19899
  /shared/postgres_data/base/16384/19900
  /shared/postgres_data/base/16384/19900_fsm
  /shared/postgres_data/base/16384/19901
  /shared/postgres_data/base/16384/21116
  /shared/postgres_data/base/16384/21117
  /shared/postgres_data/base/16384/21126
  /shared/postgres_data/base/16384/21126_fsm
  /shared/postgres_data/base/16384/19915
  /shared/postgres_data/base/16384/19919
  /shared/postgres_data/base/16384/19921
  /shared/postgres_data/base/16384/19922
  /shared/postgres_data/base/16384/20034
  /shared/postgres_data/base/16384/20034_fsm
  /shared/postgres_data/base/16384/20035
  /shared/postgres_data/base/16384/20035_fsm
  /shared/postgres_data/base/16384/20036
  /shared/postgres_data/base/16384/20036_fsm
  /shared/postgres_data/base/16384/20037
  /shared/postgres_data/base/16384/20037_fsm
  /shared/postgres_data/base/16384/20038
  /shared/postgres_data/base/16384/20051
  /shared/postgres_data/base/16384/20051_fsm
  /shared/postgres_data/base/16384/20051_vm
  /shared/postgres_data/base/16384/20053
  /shared/postgres_data/base/16384/20053_fsm
  /shared/postgres_data/base/16384/20058
  /shared/postgres_data/base/16384/20058_fsm
  /shared/postgres_data/base/16384/20062
  /shared/postgres_data/base/16384/20064
  /shared/postgres_data/base/16384/20067
  /shared/postgres_data/base/16384/20071
  /shared/postgres_data/base/16384/20073
  /shared/postgres_data/base/16384/20074
  /shared/postgres_data/base/16384/20089
  /shared/postgres_data/base/16384/20089_fsm
  /shared/postgres_data/base/16384/20093
  /shared/postgres_data/base/16384/20095
  /shared/postgres_data/base/16384/20096
  /shared/postgres_data/base/16384/20098
  /shared/postgres_data/base/16384/20099
  /shared/postgres_data/base/16384/20106
  /shared/postgres_data/base/16384/20106_fsm
  /shared/postgres_data/base/16384/20108
  /shared/postgres_data/base/16384/20111
  /shared/postgres_data/base/16384/20198
  /shared/postgres_data/base/16384/20649
  /shared/postgres_data/base/16384/20649_fsm
  /shared/postgres_data/base/16384/20144
  /shared/postgres_data/base/16384/20148
  /shared/postgres_data/base/16384/20150
  /shared/postgres_data/base/16384/20151
  /shared/postgres_data/base/16384/20153
  /shared/postgres_data/base/16384/20183
  /shared/postgres_data/base/16384/20187
  /shared/postgres_data/base/16384/20189
  /shared/postgres_data/base/16384/20190
  /shared/postgres_data/base/16384/21080
  /shared/postgres_data/base/16384/20199
  /shared/postgres_data/base/16384/20200
  /shared/postgres_data/base/16384/20213
  /shared/postgres_data/base/16384/20213_fsm
  /shared/postgres_data/base/16384/20217
  /shared/postgres_data/base/16384/20219
  /shared/postgres_data/base/16384/20222
  /shared/postgres_data/base/16384/20226
  /shared/postgres_data/base/16384/20228
  /shared/postgres_data/base/16384/20376
  /shared/postgres_data/base/16384/20382
  /shared/postgres_data/base/16384/20383
  /shared/postgres_data/base/16384/20384
  /shared/postgres_data/base/16384/20385
  /shared/postgres_data/base/16384/20245
  /shared/postgres_data/base/16384/20248
  /shared/postgres_data/base/16384/20252
  /shared/postgres_data/base/16384/20254
  /shared/postgres_data/base/16384/20255
  /shared/postgres_data/base/16384/21477
  /shared/postgres_data/base/16384/21477_fsm
  /shared/postgres_data/base/16384/21483
  /shared/postgres_data/base/16384/20288
  /shared/postgres_data/base/16384/20296
  /shared/postgres_data/base/16384/20300
  /shared/postgres_data/base/16384/20302
  /shared/postgres_data/base/16384/20303
  /shared/postgres_data/base/16384/20305
  /shared/postgres_data/base/16384/20311
  /shared/postgres_data/base/16384/20311_fsm
  /shared/postgres_data/base/16384/20311_vm
  /shared/postgres_data/base/16384/20315
  /shared/postgres_data/base/16384/20316
  /shared/postgres_data/base/16384/20333
  /shared/postgres_data/base/16384/20337
  /shared/postgres_data/base/16384/20339
  /shared/postgres_data/base/16384/20340
  /shared/postgres_data/base/16384/20342
  /shared/postgres_data/base/16384/20347
  /shared/postgres_data/base/16384/20349
  /shared/postgres_data/base/16384/20386
  /shared/postgres_data/base/16384/20379
  /shared/postgres_data/base/16384/20381
  /shared/postgres_data/base/16384/21259
  /shared/postgres_data/base/16384/21265
  /shared/postgres_data/base/16384/20406
  /shared/postgres_data/base/16384/20410
  /shared/postgres_data/base/16384/20414
  /shared/postgres_data/base/16384/20418
  /shared/postgres_data/base/16384/21266
  /shared/postgres_data/base/16384/20421
  /shared/postgres_data/base/16384/20422
  /shared/postgres_data/base/16384/20423
  /shared/postgres_data/base/16384/20424
  /shared/postgres_data/base/16384/20427
  /shared/postgres_data/base/16384/20431
  /shared/postgres_data/base/16384/20433
  /shared/postgres_data/base/16384/20434
  /shared/postgres_data/base/16384/20437
  /shared/postgres_data/base/16384/20437_fsm
  /shared/postgres_data/base/16384/20437_vm
  /shared/postgres_data/base/16384/20441
  /shared/postgres_data/base/16384/20443
  /shared/postgres_data/base/16384/20444
  /shared/postgres_data/base/16384/20444_fsm
  /shared/postgres_data/base/16384/21321
  /shared/postgres_data/base/16384/21321_fsm
  /shared/postgres_data/base/16384/20478
  /shared/postgres_data/base/16384/20484
  /shared/postgres_data/base/16384/20461
  /shared/postgres_data/base/16384/20465
  /shared/postgres_data/base/16384/20467
  /shared/postgres_data/base/16384/20470
  /shared/postgres_data/base/16384/20474
  /shared/postgres_data/base/16384/20476
  /shared/postgres_data/base/16384/20481
  /shared/postgres_data/base/16384/20483
  /shared/postgres_data/base/16384/20485
  /shared/postgres_data/base/16384/20487
  /shared/postgres_data/base/16384/20497
  /shared/postgres_data/base/16384/20500
  /shared/postgres_data/base/16384/20504
  /shared/postgres_data/base/16384/21360
  /shared/postgres_data/base/16384/21360_fsm
  /shared/postgres_data/base/16384/21360_vm
  /shared/postgres_data/base/16384/21366
  /shared/postgres_data/base/16384/21367
  /shared/postgres_data/base/16384/21368
  /shared/postgres_data/base/16384/21369
  /shared/postgres_data/base/16384/20523
  /shared/postgres_data/base/16384/20527
  /shared/postgres_data/base/16384/20529
  /shared/postgres_data/base/16384/20530
  /shared/postgres_data/base/16384/20534
  /shared/postgres_data/base/16384/20545
  /shared/postgres_data/base/16384/20547
  /shared/postgres_data/base/16384/20548
  /shared/postgres_data/base/16384/20552
  /shared/postgres_data/base/16384/20558
  /shared/postgres_data/base/16384/20560
  /shared/postgres_data/base/16384/20561
  /shared/postgres_data/base/16384/20563
  /shared/postgres_data/base/16384/20564
  /shared/postgres_data/base/16384/20567
  /shared/postgres_data/base/16384/20568
  /shared/postgres_data/base/16384/20571
  /shared/postgres_data/base/16384/20572
  /shared/postgres_data/base/16384/20575
  /shared/postgres_data/base/16384/20580
  /shared/postgres_data/base/16384/20582
  /shared/postgres_data/base/16384/20588
  /shared/postgres_data/base/16384/20590
  /shared/postgres_data/base/16384/20597
  /shared/postgres_data/base/16384/20599
  /shared/postgres_data/base/16384/20613
  /shared/postgres_data/base/16384/20614
  /shared/postgres_data/base/16384/20615
  /shared/postgres_data/base/16384/20616
  /shared/postgres_data/base/16384/20616_fsm
  /shared/postgres_data/base/16384/20617
  /shared/postgres_data/base/16384/20617_fsm
  /shared/postgres_data/base/16384/20618
  /shared/postgres_data/base/16384/20619
  /shared/postgres_data/base/16384/20619_fsm
  /shared/postgres_data/base/16384/20620
  /shared/postgres_data/base/16384/20621
  /shared/postgres_data/base/16384/21119
  /shared/postgres_data/base/16384/20623
  /shared/postgres_data/base/16384/20624
  /shared/postgres_data/base/16384/20625
  /shared/postgres_data/base/16384/20626
  /shared/postgres_data/base/16384/20629
  /shared/postgres_data/base/16384/20629_fsm
  /shared/postgres_data/base/16384/20630
  /shared/postgres_data/base/16384/20630_fsm
  /shared/postgres_data/base/16384/20631
  /shared/postgres_data/base/16384/20631_fsm
  /shared/postgres_data/base/16384/20632
  /shared/postgres_data/base/16384/20632_fsm
  /shared/postgres_data/base/16384/20633
  /shared/postgres_data/base/16384/20633_fsm
  /shared/postgres_data/base/16384/20638
  /shared/postgres_data/base/16384/20640
  /shared/postgres_data/base/16384/20662
  /shared/postgres_data/base/16384/20666
  /shared/postgres_data/base/16384/20668
  /shared/postgres_data/base/16384/20669
  /shared/postgres_data/base/16384/20671
  /shared/postgres_data/base/16384/20672
  /shared/postgres_data/base/16384/20673
  /shared/postgres_data/base/16384/20674
  /shared/postgres_data/base/16384/20713
  /shared/postgres_data/base/16384/20713_fsm
  /shared/postgres_data/base/16384/20713_vm
  /shared/postgres_data/base/16384/20719
  /shared/postgres_data/base/16384/20721
  /shared/postgres_data/base/16384/20722
  /shared/postgres_data/base/16384/20722_fsm
  /shared/postgres_data/base/16384/20728
  /shared/postgres_data/base/16384/20732
  /shared/postgres_data/base/16384/20734
  /shared/postgres_data/base/16384/20735
  /shared/postgres_data/base/16384/20737
  /shared/postgres_data/base/16384/20740
  /shared/postgres_data/base/16384/20740_fsm
  /shared/postgres_data/base/16384/20740_vm
  /shared/postgres_data/base/16384/20744
  /shared/postgres_data/base/16384/20746
  /shared/postgres_data/base/16384/20747
  /shared/postgres_data/base/16384/20747_fsm
  /shared/postgres_data/base/16384/20762
  /shared/postgres_data/base/16384/20763
  /shared/postgres_data/base/16384/20777
  /shared/postgres_data/base/16384/20811
  /shared/postgres_data/base/16384/20815
  /shared/postgres_data/base/16384/20817
  /shared/postgres_data/base/16384/20818
  /shared/postgres_data/base/16384/20936
  /shared/postgres_data/base/16384/20939
  /shared/postgres_data/base/16384/20940
  /shared/postgres_data/base/16384/20833
  /shared/postgres_data/base/16384/20833_fsm
  /shared/postgres_data/base/16384/20833_vm
  /shared/postgres_data/base/16384/20835
  /shared/postgres_data/base/16384/20903
  /shared/postgres_data/base/16384/20909
  /shared/postgres_data/base/16384/20875
  /shared/postgres_data/base/16384/20879
  /shared/postgres_data/base/16384/20881
  /shared/postgres_data/base/16384/20882
  /shared/postgres_data/base/16384/21379
  /shared/postgres_data/base/16384/20906
  /shared/postgres_data/base/16384/20908
  /shared/postgres_data/base/16384/20910
  /shared/postgres_data/base/16384/20942
  /shared/postgres_data/base/16384/20943
  /shared/postgres_data/base/16384/20946
  /shared/postgres_data/base/16384/20950
  /shared/postgres_data/base/16384/20952
  /shared/postgres_data/base/16384/20953
  /shared/postgres_data/base/16384/20955
  /shared/postgres_data/base/16384/20956
  /shared/postgres_data/base/16384/20979
  /shared/postgres_data/base/16384/20979_fsm
  /shared/postgres_data/base/16384/20979_vm
  /shared/postgres_data/base/16384/20983
  /shared/postgres_data/base/16384/20985
  /shared/postgres_data/base/16384/20986
  /shared/postgres_data/base/16384/20986_fsm
  /shared/postgres_data/base/16384/20990
  /shared/postgres_data/base/16384/20990_fsm
  /shared/postgres_data/base/16384/20995
  /shared/postgres_data/base/16384/20997
  /shared/postgres_data/base/16384/20998
  /shared/postgres_data/base/16384/21000
  /shared/postgres_data/base/16384/21002
  /shared/postgres_data/base/16384/21029
  /shared/postgres_data/base/16384/21029_fsm
  /shared/postgres_data/base/16384/21029_vm
  /shared/postgres_data/base/16384/21031
  /shared/postgres_data/base/16384/21038
  /shared/postgres_data/base/16384/21040
  /shared/postgres_data/base/16384/21047
  /shared/postgres_data/base/16384/21049
  /shared/postgres_data/base/16384/21056
  /shared/postgres_data/base/16384/21058
  /shared/postgres_data/base/16384/21075
  /shared/postgres_data/base/16384/21077
  /shared/postgres_data/base/16384/21083
  /shared/postgres_data/base/16384/21088
  /shared/postgres_data/base/16384/21090
  /shared/postgres_data/base/16384/21091
  /shared/postgres_data/base/16384/21093
  /shared/postgres_data/base/16384/21094
  /shared/postgres_data/base/16384/21094_fsm
  /shared/postgres_data/base/16384/21107
  /shared/postgres_data/base/16384/21107_fsm
  /shared/postgres_data/base/16384/21109
  /shared/postgres_data/base/16384/21127
  /shared/postgres_data/base/16384/21127_fsm
  /shared/postgres_data/base/16384/21141
  /shared/postgres_data/base/16384/21144
  /shared/postgres_data/base/16384/21149
  /shared/postgres_data/base/16384/21151
  /shared/postgres_data/base/16384/21152
  /shared/postgres_data/base/16384/21322
  /shared/postgres_data/base/16384/21322_fsm
  /shared/postgres_data/base/16384/21158
  /shared/postgres_data/base/16384/21162
  /shared/postgres_data/base/16384/21164
  /shared/postgres_data/base/16384/21165
  /shared/postgres_data/base/16384/21170
  /shared/postgres_data/base/16384/21175
  /shared/postgres_data/base/16384/21177
  /shared/postgres_data/base/16384/21178
  /shared/postgres_data/base/16384/21179
  /shared/postgres_data/base/16384/21180
  /shared/postgres_data/base/16384/21227
  /shared/postgres_data/base/16384/21230
  /shared/postgres_data/base/16384/21200
  /shared/postgres_data/base/16384/21200_fsm
  /shared/postgres_data/base/16384/21200_vm
  /shared/postgres_data/base/16384/21205
  /shared/postgres_data/base/16384/21207
  /shared/postgres_data/base/16384/21208
  /shared/postgres_data/base/16384/21208_fsm
  /shared/postgres_data/base/16384/21210
  /shared/postgres_data/base/16384/21210_fsm
  /shared/postgres_data/base/16384/21213
  /shared/postgres_data/base/16384/21218
  /shared/postgres_data/base/16384/21220
  /shared/postgres_data/base/16384/21221
  /shared/postgres_data/base/16384/21231
  /shared/postgres_data/base/16384/21232
  /shared/postgres_data/base/16384/21233
  /shared/postgres_data/base/16384/21249
  /shared/postgres_data/base/16384/21253
  /shared/postgres_data/base/16384/21255
  /shared/postgres_data/base/16384/21256
  /shared/postgres_data/base/16384/21262
  /shared/postgres_data/base/16384/21264
  /shared/postgres_data/base/16384/21268
  /shared/postgres_data/base/16384/21269
  /shared/postgres_data/base/16384/21269_fsm
  /shared/postgres_data/base/16384/21278
  /shared/postgres_data/base/16384/21279
  /shared/postgres_data/base/16384/21284
  /shared/postgres_data/base/16384/21286
  /shared/postgres_data/base/16384/21308
  /shared/postgres_data/base/16384/21314
  /shared/postgres_data/base/16384/21316
  /shared/postgres_data/base/16384/21328
  /shared/postgres_data/base/16384/21332
  /shared/postgres_data/base/16384/21334
  /shared/postgres_data/base/16384/21337
  /shared/postgres_data/base/16384/21338
  /shared/postgres_data/base/16384/21338_fsm
  /shared/postgres_data/base/16384/21342
  /shared/postgres_data/base/16384/21342_fsm
  /shared/postgres_data/base/16384/21342_vm
  /shared/postgres_data/base/16384/21346
  /shared/postgres_data/base/16384/21348
  /shared/postgres_data/base/16384/21349
  /shared/postgres_data/base/16384/21349_fsm
  /shared/postgres_data/base/16384/21351
  /shared/postgres_data/base/16384/21351_fsm
  /shared/postgres_data/base/16384/21352
  /shared/postgres_data/base/16384/21352_fsm
  /shared/postgres_data/base/16384/21353
  /shared/postgres_data/base/16384/21353_fsm
  /shared/postgres_data/base/16384/21354
  /shared/postgres_data/base/16384/21354_fsm
  /shared/postgres_data/base/16384/21358
  /shared/postgres_data/base/16384/21358_fsm
  /shared/postgres_data/base/16384/21363
  /shared/postgres_data/base/16384/21365
  /shared/postgres_data/base/16384/21374
  /shared/postgres_data/base/16384/21376
  /shared/postgres_data/base/16384/21382
  /shared/postgres_data/base/16384/21391
  /shared/postgres_data/base/16384/21393
  /shared/postgres_data/base/16384/21394
  /shared/postgres_data/base/16384/21401
  /shared/postgres_data/base/16384/21402
  /shared/postgres_data/base/16384/21405
  /shared/postgres_data/base/16384/21405_fsm
  /shared/postgres_data/base/16384/21409
  /shared/postgres_data/base/16384/21411
  /shared/postgres_data/base/16384/21412
  /shared/postgres_data/base/16384/21419
  /shared/postgres_data/base/16384/21420
  /shared/postgres_data/base/16384/21421
  /shared/postgres_data/base/16384/21421_fsm
  /shared/postgres_data/base/16384/21439
  /shared/postgres_data/base/16384/21440
  /shared/postgres_data/base/16384/21441
  /shared/postgres_data/base/16384/21442
  /shared/postgres_data/base/16384/21455
  /shared/postgres_data/base/16384/21455_fsm
  /shared/postgres_data/base/16384/21459
  /shared/postgres_data/base/16384/21461
  /shared/postgres_data/base/16384/21464
  /shared/postgres_data/base/16384/21468
  /shared/postgres_data/base/16384/21470
  /shared/postgres_data/base/16384/21471
  /shared/postgres_data/base/16384/21473
  /shared/postgres_data/base/16384/21474
  /shared/postgres_data/base/16384/21475
  /shared/postgres_data/base/16384/21480
  /shared/postgres_data/base/16384/21482
  /shared/postgres_data/base/13014/2613
  /shared/postgres_data/base/13014/2683
  /shared/postgres_data/base/1/2613
  /shared/postgres_data/base/1/2683
                                                            성공
새 클러스터의 다음 OID 설정                            성공
데이터 디렉토리를 디스크에 동기화                                 성공
새 클러스터 분석을 위한 스크립트 생성                      성공
오래된 클러스터 삭제 스크립트 생성                       성공

업그레이드 완료
----------------
optimizer 통계는 pg_upgrade에 의해 전송되지 않으므로,
새 서버를 시작하면 다음을 실행하는 것을 고려하십시오:
    ./analyze_new_cluster.sh

이 스크립트를 실행하면 오래된 클러스터의 데이터 파일이 삭제됩니다:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
POSTGRES 업그레이드 완료

오래된 10 데이터베이스는 /shared/postgres_data_old에 저장되어 있습니다

업그레이드를 완료하려면 다음을 사용하여 다시 빌드하십시오:

./launcher rebuild app
root@idmforums:/var/idmforums# ./launcher rebuild app
Ensuring launcher is up to date
Fetching origin
Launcher has diverged source, this is only expected in Dev mode
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && git checkout v1.0.3 && /pups/bin/pups --stdin
From https://github.com/discourse/pups
   17f04ec..e0ff889  master        -> origin/master
 * [new branch]      main          -> origin/main
 * [new branch]      stream-stdout -> origin/stream-stdout
 * [new tag]         v1.1.1        -> v1.1.1
 * [new tag]         v1.1.0        -> v1.1.0
 * [new tag]         v1.2.0        -> v1.2.0
 * [new tag]         v1.2.1        -> v1.2.1
Updating 17f04ec..e0ff889
Fast-forward
 .github/workflows/ci.yml     |  29 ++++++
 .github/workflows/lint.yml   |  27 +++++
 .rubocop.yml                 |   3 +
 Gemfile                      |   2 +
 Guardfile                    |   4 +-
 README.md                    |  21 ++++
 Rakefile                     |  14 +--
 bin/pups                     |   8 +-
 lib/pups.rb                  |  32 ++++--
 lib/pups/cli.rb              |  92 ++++++++++-------
 lib/pups/command.rb          |  25 +++--
 lib/pups/config.rb           | 240 +++++++++++++++++++++++--------------------
 lib/pups/docker.rb           |  69 +++++++++++++
 lib/pups/exec_command.rb     | 182 ++++++++++++++++----------------
 lib/pups/file_command.rb     |  60 +++++------
 lib/pups/merge_command.rb    |  94 ++++++++---------
 lib/pups/replace_command.rb  |  70 +++++++------
 lib/pups/runit.rb            |  47 +++++----
 lib/pups/version.rb          |   4 +-
 pups.gemspec                 |  37 ++++---
 test/cli_test.rb             | 102 +++++++++++++++---
 test/config_test.rb          | 215 ++++++++++++++++++++++++++++----------
 test/docker_test.rb          | 157 ++++++++++++++++++++++++++++
 test/exec_command_test.rb    |  62 ++++++-----
 test/file_command_test.rb    |  17 ++-
 test/merge_command_test.rb   |  64 ++++++------
 test/replace_command_test.rb |  86 ++++++++--------
 test/test_helper.rb          |   2 +
 28 files changed, 1158 insertions(+), 607 deletions(-)
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 .github/workflows/lint.yml
 create mode 100644 .rubocop.yml
 create mode 100644 lib/pups/docker.rb
 create mode 100644 test/docker_test.rb
Note: checking out 'v1.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d1db030 cut a new version
I, [2024-06-04T23:40:34.191210 #1]  INFO -- : Loading --stdin
I, [2024-06-04T23:40:34.198692 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2024-06-04T23:40:34.228020 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-06-04T23:40:34.228323 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2024-06-04T23:40:34.231055 #1]  INFO -- :
I, [2024-06-04T23:40:34.231294 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2024-06-04T23:40:34.233426 #1]  INFO -- :
I, [2024-06-04T23:40:34.233610 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2024-06-04T23:40:34.235052 #1]  INFO -- :
I, [2024-06-04T23:40:34.235243 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2024-06-04T23:40:34.237698 #1]  INFO -- :
I, [2024-06-04T23:40:34.237920 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2024-06-04T23:40:34.240767 #1]  INFO -- :
I, [2024-06-04T23:40:34.240960 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2024/06/04 23:40:34 socat[36] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2024-06-04T23:40:34.245832 #1]  INFO -- :
I, [2024-06-04T23:40:34.246035 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2024-06-04T23:40:34.248131 #1]  INFO -- :
I, [2024-06-04T23:40:34.248370 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2024-06-04T23:40:34.251004 #1]  INFO -- :
I, [2024-06-04T23:40:34.251248 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-04T23:40:34.253455 #1]  INFO -- :
I, [2024-06-04T23:40:34.253706 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-04T23:40:34.255925 #1]  INFO -- :
I, [2024-06-04T23:40:34.260253 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2024-06-04T23:40:34.264161 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2024-06-04T23:40:34.269057 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2024-06-04T23:40:34.273413 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2024-06-04T23:40:34.273704 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2024-06-04T23:40:34.805509 #1]  INFO -- :
I, [2024-06-04T23:40:34.805817 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2024-06-04T23:40:34.809381 #1]  INFO -- :
I, [2024-06-04T23:40:34.809593 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2024-06-04T23:40:34.822667 #1]  INFO -- :
I, [2024-06-04T23:40:34.823150 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2024-06-04T23:40:34.826082 #1]  INFO -- :
I, [2024-06-04T23:40:34.826302 #1]  INFO -- : > /root/upgrade_postgres
I, [2024-06-04T23:40:34.831326 #1]  INFO -- :
I, [2024-06-04T23:40:34.831545 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2024-06-04T23:40:34.833650 #1]  INFO -- :
I, [2024-06-04T23:40:34.834325 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.835208 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.835549 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.835907 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.836288 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.836619 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.836928 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2024-06-04T23:40:34.840929 #1]  INFO -- :
I, [2024-06-04T23:40:34.841468 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.841795 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.842153 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-04T23:40:34.842724 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-06-04T23:40:34.843021 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-06-04T23:40:34.843276 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-06-04T23:40:34.845795 #1]  INFO -- : > sleep 5
2024-06-04 23:40:34.941 UTC [59] LOG:  starting PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2024-06-04 23:40:34.941 UTC [59] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-06-04 23:40:34.941 UTC [59] LOG:  listening on IPv6 address "::", port 5432
2024-06-04 23:40:34.943 UTC [59] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-06-04 23:40:34.947 UTC [62] LOG:  database system was shut down at 2024-06-04 23:37:27 UTC
2024-06-04 23:40:34.954 UTC [59] LOG:  database system is ready to accept connections
I, [2024-06-04T23:40:39.849613 #1]  INFO -- :
I, [2024-06-04T23:40:39.850223 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2024-06-04 23:40:39.910 UTC [72] postgres@postgres ERROR:  database "discourse" already exists
2024-06-04 23:40:39.910 UTC [72] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2024-06-04T23:40:39.913167 #1]  INFO -- :
I, [2024-06-04T23:40:39.913480 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2024-06-04 23:40:39.968 UTC [83] postgres@discourse ERROR:  role "discourse" already exists
2024-06-04 23:40:39.968 UTC [83] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists
I, [2024-06-04T23:40:39.971330 #1]  INFO -- :
I, [2024-06-04T23:40:39.971638 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2024-06-04T23:40:40.022845 #1]  INFO -- : GRANT

I, [2024-06-04T23:40:40.023178 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2024-06-04T23:40:40.078407 #1]  INFO -- : ALTER SCHEMA

I, [2024-06-04T23:40:40.078622 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
NOTICE:  extension "hstore" already exists, skipping
I, [2024-06-04T23:40:40.136299 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-04T23:40:40.136815 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
NOTICE:  extension "pg_trgm" already exists, skipping
I, [2024-06-04T23:40:40.189922 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-04T23:40:40.190293 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
NOTICE:  extension "hstore" already exists, skipping
I, [2024-06-04T23:40:40.235506 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-04T23:40:40.236235 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
NOTICE:  extension "pg_trgm" already exists, skipping
I, [2024-06-04T23:40:40.285049 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-04T23:40:40.285412 #1]  INFO -- : > sudo -u postgres psql discourse
I, [2024-06-04T23:40:40.288461 #1]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');

I, [2024-06-04T23:40:40.346156 #1]  INFO -- : File > /var/lib/postgresql/take-database-backup  chmod: +x  chown: postgres:postgres
I, [2024-06-04T23:40:40.349320 #1]  INFO -- : File > /var/spool/cron/crontabs/postgres  chmod:   chown:
I, [2024-06-04T23:40:40.349444 #1]  INFO -- : > echo postgres installed!
I, [2024-06-04T23:40:40.352137 #1]  INFO -- : postgres installed!

I, [2024-06-04T23:40:40.357616 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown:
I, [2024-06-04T23:40:40.363179 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown:
I, [2024-06-04T23:40:40.368977 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown:
I, [2024-06-04T23:40:40.369997 #1]  INFO -- : Replacing daemonize yes with  in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.370654 #1]  INFO -- : Replacing (?-mix:^pidfile.*$) with  in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.370977 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2024-06-04T23:40:40.374785 #1]  INFO -- :
I, [2024-06-04T23:40:40.375165 #1]  INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.375742 #1]  INFO -- : Replacing (?-mix:^bind .*$) with  in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.376160 #1]  INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.376570 #1]  INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.377131 #1]  INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2024-06-04T23:40:40.377464 #1]  INFO -- : > echo redis installed
I, [2024-06-04T23:40:40.380055 #1]  INFO -- : redis installed

I, [2024-06-04T23:40:40.380270 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2024-06-04T23:40:40.384834 #1]  INFO -- : logfile ""

I, [2024-06-04T23:40:40.385077 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.confI, [2024-06-04T23:40:40.387343 #1]  INFO -- : > sleep 10
176:C 04 Jun 2024 23:40:40.395 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
176:C 04 Jun 2024 23:40:40.395 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=176, just started
176:C 04 Jun 2024 23:40:40.395 # Configuration loaded
176:M 04 Jun 2024 23:40:40.396 * monotonic clock: POSIX clock_gettime
176:M 04 Jun 2024 23:40:40.396 * Running mode=standalone, port=6379.
176:M 04 Jun 2024 23:40:40.397 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
176:M 04 Jun 2024 23:40:40.397 # Server initialized
176:M 04 Jun 2024 23:40:40.397 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
176:M 04 Jun 2024 23:40:40.486 * DB loaded from disk: 0.089 seconds
176:M 04 Jun 2024 23:40:40.486 * Ready to accept connections
I, [2024-06-04T23:40:50.390217 #1]  INFO -- :
I, [2024-06-04T23:40:50.390530 #1]  INFO -- : > thpoff echo "thpoff is installed!"
I, [2024-06-04T23:40:50.395538 #1]  INFO -- : thpoff is installed!

I, [2024-06-04T23:40:50.395943 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2024-06-04T23:40:50.651921 #1]  INFO -- :
I, [2024-06-04T23:40:50.652197 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2024-06-04T23:40:50.708634 #1]  INFO -- :
I, [2024-06-04T23:40:50.709087 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'
I, [2024-06-04T23:40:50.772151 #1]  INFO -- :
I, [2024-06-04T23:40:50.772293 #1]  INFO -- : > chown -R discourse /home/discourse
I, [2024-06-04T23:40:51.171567 #1]  INFO -- :
I, [2024-06-04T23:40:51.172282 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2024-06-04T23:40:51.176013 #1]  INFO -- :
I, [2024-06-04T23:40:51.179620 #1]  INFO -- : File > /etc/cron.d/anacron  chmod:   chown:
I, [2024-06-04T23:40:51.184170 #1]  INFO -- : File > /etc/runit/1.d/copy-env  chmod: +x  chown:
I, [2024-06-04T23:40:51.189593 #1]  INFO -- : File > /etc/service/unicorn/run  chmod: +x  chown:
I, [2024-06-04T23:40:51.193215 #1]  INFO -- : File > /etc/service/nginx/run  chmod: +x  chown:
I, [2024-06-04T23:40:51.196711 #1]  INFO -- : File > /etc/runit/3.d/01-nginx  chmod: +x  chown:
I, [2024-06-04T23:40:51.199735 #1]  INFO -- : File > /etc/runit/3.d/02-unicorn  chmod: +x  chown:
I, [2024-06-04T23:40:51.199839 #1]  INFO -- : Replacing # postgres with sv start postgres || exit 1 in /etc/service/unicorn/run
I, [2024-06-04T23:40:51.200122 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.confI, [2024-06-04T23:40:51.201788 #1]  INFO -- : > cd /var/www/discourse && git reset --hard
205:C 04 Jun 2024 23:40:51.204 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
205:C 04 Jun 2024 23:40:51.204 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=205, just started
205:C 04 Jun 2024 23:40:51.204 # Configuration loaded
205:M 04 Jun 2024 23:40:51.205 * monotonic clock: POSIX clock_gettime
205:M 04 Jun 2024 23:40:51.206 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
205:M 04 Jun 2024 23:40:51.206 # Failed listening on port 6379 (TCP), aborting.
Checking out files: 100% (28860/28860), done.
I, [2024-06-04T23:40:55.175162 #1]  INFO -- : HEAD is now at 74f71503 FEATURE: Automatically timed delete stub topics after entire topic is merged into another topic (#13187)

I, [2024-06-04T23:40:55.175641 #1]  INFO -- : > cd /var/www/discourse && git clean -f
I, [2024-06-04T23:40:55.313620 #1]  INFO -- :
I, [2024-06-04T23:40:55.314088 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches --add origin main
I, [2024-06-04T23:40:55.319546 #1]  INFO -- :
I, [2024-06-04T23:40:55.319970 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches origin tests-passed
I, [2024-06-04T23:40:55.326577 #1]  INFO -- :
I, [2024-06-04T23:40:55.326933 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth 1 origin tests-passed
From https://github.com/discourse/discourse
 * branch              tests-passed -> FETCH_HEAD
 * [new branch]        tests-passed -> origin/tests-passed
I, [2024-06-04T23:41:01.524833 #1]  INFO -- :
I, [2024-06-04T23:41:01.524965 #1]  INFO -- : > cd /var/www/discourse && git checkout tests-passed
Switched to a new branch 'tests-passed'
I, [2024-06-04T23:41:03.913062 #1]  INFO -- : Branch 'tests-passed' set up to track remote branch 'tests-passed' from 'origin'.

I, [2024-06-04T23:41:03.913255 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2024-06-04T23:41:03.918098 #1]  INFO -- :
I, [2024-06-04T23:41:03.918279 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2024-06-04T23:41:03.922201 #1]  INFO -- :
I, [2024-06-04T23:41:03.922414 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2024-06-04T23:41:03.924838 #1]  INFO -- :
I, [2024-06-04T23:41:03.924962 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2024-06-04T23:41:03.927107 #1]  INFO -- :
I, [2024-06-04T23:41:03.927222 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2024-06-04T23:41:03.929087 #1]  INFO -- :
I, [2024-06-04T23:41:03.929131 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2024-06-04T23:41:03.931092 #1]  INFO -- :
I, [2024-06-04T23:41:03.931136 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2024-06-04T23:41:03.934304 #1]  INFO -- :
I, [2024-06-04T23:41:03.934352 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2024-06-04T23:41:03.937279 #1]  INFO -- :
I, [2024-06-04T23:41:03.937327 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2024-06-04T23:41:03.940307 #1]  INFO -- :
I, [2024-06-04T23:41:03.940354 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2024-06-04T23:41:03.943514 #1]  INFO -- :
I, [2024-06-04T23:41:03.943666 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2024-06-04T23:41:03.949053 #1]  INFO -- :
I, [2024-06-04T23:41:03.949340 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2024-06-04T23:41:03.954231 #1]  INFO -- :
I, [2024-06-04T23:41:03.954282 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2024-06-04T23:41:04.627003 #1]  INFO -- :
I, [2024-06-04T23:41:04.627425 #1]  INFO -- : > cd /var/www/discourse && find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2024-06-04T23:41:04.635885 #1]  INFO -- :
I, [2024-06-04T23:41:04.636206 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2024-06-04T23:41:04.636576 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2024-06-04T23:41:05.492064 #1]  INFO -- :
I, [2024-06-04T23:41:05.492420 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2024-06-04T23:41:05.496362 #1]  INFO -- :
I, [2024-06-04T23:41:05.496605 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2024-06-04T23:41:05.499287 #1]  INFO -- :
I, [2024-06-04T23:41:05.499391 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2024-06-04T23:41:05.502196 #1]  INFO -- :
I, [2024-06-04T23:41:05.502884 #1]  INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2024-06-04T23:41:05.503420 #1]  INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2024-06-04T23:41:05.503648 #1]  INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2024-06-04T23:41:05.503940 #1]  INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2024-06-04T23:41:05.504150 #1]  INFO -- : > echo "done configuring web"
I, [2024-06-04T23:41:05.506905 #1]  INFO -- : done configuring web

I, [2024-06-04T23:41:05.507186 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
ERROR:  Error installing bundler:
        bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.
I, [2024-06-04T23:41:05.940817 #1]  INFO -- :
I, [2024-06-04T23:41:05.941641 #1]  INFO -- : Terminating async processes
I, [2024-06-04T23:41:05.941717 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 59
I, [2024-06-04T23:41:05.941810 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 176
2024-06-04 23:41:05.942 UTC [59] LOG:  received fast shutdown request
176:signal-handler (1717544465) Received SIGTERM scheduling shutdown...
2024-06-04 23:41:05.944 UTC [59] LOG:  aborting any active transactions
2024-06-04 23:41:05.946 UTC [59] LOG:  background worker "logical replication launcher" (PID 68) exited with exit code 12024-06-04 23:41:05.948 UTC [63] LOG:  shutting down
176:M 04 Jun 2024 23:41:05.977 # User requested shutdown...
176:M 04 Jun 2024 23:41:05.977 * Saving the final RDB snapshot before exiting.
2024-06-04 23:41:05.978 UTC [59] LOG:  database system is shut down
176:M 04 Jun 2024 23:41:06.088 * DB saved on disk
176:M 04 Jun 2024 23:41:06.088 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 314 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\"\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
2c1f8978c3a71905d6590121f0fd282697ece4b0485c25f9cc8fbdbac2a579a1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
root@idmforums:/var/idmforums# ./discourse-doctor
DISCOURSE DOCTOR Wed Jun 5 00:00:48 UTC 2024
OS: Linux idmforums.com 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


Found containers/app.yml



==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 24.0.2, build cb74dfc

DOCKER PROCESSES (docker ps -a)

CONTAINER ID   IMAGE                 COMMAND        CREATED       STATUS                      PORTS     NAMES
2983891adf1b   local_discourse/app   "/sbin/boot"   5 years ago   Exited (5) 24 minutes ago             app

==================== SERIOUS PROBLEM!!!! ====================
app not running!
Attempting to rebuild
==================== REBUILD LOG ====================
Ensuring launcher is up to date
Fetching origin
Launcher has diverged source, this is only expected in Dev mode
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && git checkout v1.0.3 && /pups/bin/pups --stdin
From https://github.com/discourse/pups
   17f04ec..e0ff889  master        -> origin/master
 * [new branch]      main          -> origin/main
 * [new branch]      stream-stdout -> origin/stream-stdout
 * [new tag]         v1.1.1        -> v1.1.1
 * [new tag]         v1.1.0        -> v1.1.0
 * [new tag]         v1.2.0        -> v1.2.0
 * [new tag]         v1.2.1        -> v1.2.1
Updating 17f04ec..e0ff889
Fast-forward
 .github/workflows/ci.yml     |  29 ++++++
 .github/workflows/lint.yml   |  27 +++++
 .rubocop.yml                 |   3 +
 Gemfile                      |   2 +
 Guardfile                    |   4 +-
 README.md                    |  21 ++++
 Rakefile                     |  14 +--
 bin/pups                     |   8 +-
 lib/pups.rb                  |  32 ++++--
 lib/pups/cli.rb              |  92 ++++++++++-------
 lib/pups/command.rb          |  25 +++--
 lib/pups/config.rb           | 240 +++++++++++++++++++++++--------------------
 lib/pups/docker.rb           |  69 +++++++++++++
 lib/pups/exec_command.rb     | 182 ++++++++++++++++----------------
 lib/pups/file_command.rb     |  60 +++++------
 lib/pups/merge_command.rb    |  94 ++++++++---------
 lib/pups/replace_command.rb  |  70 +++++++------
 lib/pups/runit.rb            |  47 +++++----
 lib/pups/version.rb          |   4 +-
 pups.gemspec                 |  37 ++++---
 test/cli_test.rb             | 102 +++++++++++++++---
 test/config_test.rb          | 215 ++++++++++++++++++++++++++++----------
 test/docker_test.rb          | 157 ++++++++++++++++++++++++++++
 test/exec_command_test.rb    |  62 ++++++-----
 test/file_command_test.rb    |  17 ++-
 test/merge_command_test.rb   |  64 ++++++------
 test/replace_command_test.rb |  86 ++++++++--------
 test/test_helper.rb          |   2 +
 28 files changed, 1158 insertions(+), 607 deletions(-)
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 .github/workflows/lint.yml
 create mode 100644 .rubocop.yml
 create mode 100644 lib/pups/docker.rb
 create mode 100644 test/docker_test.rb
Note: checking out 'v1.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d1db030 cut a new version
I, [2024-06-05T00:00:57.328836 #1]  INFO -- : Loading --stdin
I, [2024-06-05T00:00:57.353218 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2024-06-05T00:00:57.434023 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-06-05T00:00:57.434294 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2024-06-05T00:00:57.439272 #1]  INFO -- :
I, [2024-06-05T00:00:57.439537 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2024-06-05T00:00:57.444532 #1]  INFO -- :
I, [2024-06-05T00:00:57.444864 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2024-06-05T00:00:57.447574 #1]  INFO -- :
I, [2024-06-05T00:00:57.447837 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2024-06-05T00:00:57.450039 #1]  INFO -- :
I, [2024-06-05T00:00:57.450203 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2024-06-05T00:00:57.451803 #1]  INFO -- :
I, [2024-06-05T00:00:57.451909 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2024/06/05 00:00:57 socat[36] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2024-06-05T00:00:57.458930 #1]  INFO -- :
I, [2024-06-05T00:00:57.459220 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2024-06-05T00:00:57.462700 #1]  INFO -- :
I, [2024-06-05T00:00:57.462930 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2024-06-05T00:00:57.466208 #1]  INFO -- :
I, [2024-06-05T00:00:57.466430 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-05T00:00:57.469494 #1]  INFO -- :
I, [2024-06-05T00:00:57.470274 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2024-06-05T00:00:57.473224 #1]  INFO -- :
I, [2024-06-05T00:00:57.480446 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2024-06-05T00:00:57.486006 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2024-06-05T00:00:57.489527 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2024-06-05T00:00:57.492803 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2024-06-05T00:00:57.493015 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2024-06-05T00:00:59.462101 #1]  INFO -- :
I, [2024-06-05T00:00:59.463057 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2024-06-05T00:00:59.472204 #1]  INFO -- :
I, [2024-06-05T00:00:59.472399 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2024-06-05T00:00:59.525447 #1]  INFO -- :
I, [2024-06-05T00:00:59.525804 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2024-06-05T00:00:59.529442 #1]  INFO -- :
I, [2024-06-05T00:00:59.529868 #1]  INFO -- : > /root/upgrade_postgres
I, [2024-06-05T00:00:59.541565 #1]  INFO -- :
I, [2024-06-05T00:00:59.541671 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2024-06-05T00:00:59.544476 #1]  INFO -- :
I, [2024-06-05T00:00:59.545249 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.547238 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.553596 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.555430 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.557291 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.559120 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.560802 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2024-06-05T00:00:59.566660 #1]  INFO -- :
I, [2024-06-05T00:00:59.568041 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.568400 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.570171 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-06-05T00:00:59.572341 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-06-05T00:00:59.573673 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-06-05T00:00:59.574292 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-06-05T00:00:59.579227 #1]  INFO -- : > sleep 5
2024-06-05 00:01:01.152 UTC [59] LOG:  starting PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2024-06-05 00:01:01.154 UTC [59] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-06-05 00:01:01.154 UTC [59] LOG:  listening on IPv6 address "::", port 5432
2024-06-05 00:01:01.163 UTC [59] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-06-05 00:01:01.176 UTC [62] LOG:  database system was shut down at 2024-06-04 23:41:05 UTC
2024-06-05 00:01:01.194 UTC [59] LOG:  database system is ready to accept connections
I, [2024-06-05T00:01:04.586109 #1]  INFO -- :
I, [2024-06-05T00:01:04.587788 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2024-06-05 00:01:04.746 UTC [72] postgres@postgres ERROR:  database "discourse" already exists
2024-06-05 00:01:04.746 UTC [72] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2024-06-05T00:01:04.751960 #1]  INFO -- :
I, [2024-06-05T00:01:04.752761 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2024-06-05 00:01:04.839 UTC [83] postgres@discourse ERROR:  role "discourse" already exists
2024-06-05 00:01:04.839 UTC [83] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists
I, [2024-06-05T00:01:04.843132 #1]  INFO -- :
I, [2024-06-05T00:01:04.843717 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2024-06-05T00:01:04.917103 #1]  INFO -- : GRANT

I, [2024-06-05T00:01:04.917860 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2024-06-05T00:01:04.975469 #1]  INFO -- : ALTER SCHEMA

I, [2024-06-05T00:01:04.975754 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
NOTICE:  extension "hstore" already exists, skipping
I, [2024-06-05T00:01:05.035684 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-05T00:01:05.036028 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
NOTICE:  extension "pg_trgm" already exists, skipping
I, [2024-06-05T00:01:05.111516 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-05T00:01:05.111949 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
NOTICE:  extension "hstore" already exists, skipping
I, [2024-06-05T00:01:05.170419 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-05T00:01:05.171033 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
NOTICE:  extension "pg_trgm" already exists, skipping
I, [2024-06-05T00:01:05.230135 #1]  INFO -- : CREATE EXTENSION

I, [2024-06-05T00:01:05.230646 #1]  INFO -- : > sudo -u postgres psql discourse
I, [2024-06-05T00:01:05.233158 #1]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');

I, [2024-06-05T00:01:05.303077 #1]  INFO -- : File > /var/lib/postgresql/take-database-backup  chmod: +x  chown: postgres:postgres
I, [2024-06-05T00:01:05.308487 #1]  INFO -- : File > /var/spool/cron/crontabs/postgres  chmod:   chown:
I, [2024-06-05T00:01:05.308837 #1]  INFO -- : > echo postgres installed!
I, [2024-06-05T00:01:05.311334 #1]  INFO -- : postgres installed!

I, [2024-06-05T00:01:05.316004 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown:
I, [2024-06-05T00:01:05.322422 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown:
I, [2024-06-05T00:01:05.327354 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown:
I, [2024-06-05T00:01:05.327925 #1]  INFO -- : Replacing daemonize yes with  in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.329358 #1]  INFO -- : Replacing (?-mix:^pidfile.*$) with  in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.329888 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2024-06-05T00:01:05.333762 #1]  INFO -- :
I, [2024-06-05T00:01:05.334163 #1]  INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.334652 #1]  INFO -- : Replacing (?-mix:^bind .*$) with  in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.335132 #1]  INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.335627 #1]  INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.336004 #1]  INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2024-06-05T00:01:05.336339 #1]  INFO -- : > echo redis installed
I, [2024-06-05T00:01:05.338198 #1]  INFO -- : redis installed

I, [2024-06-05T00:01:05.338348 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2024-06-05T00:01:05.342171 #1]  INFO -- : logfile ""

I, [2024-06-05T00:01:05.342315 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2024-06-05T00:01:05.343675 #1]  INFO -- : > sleep 10
176:C 05 Jun 2024 00:01:05.349 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
176:C 05 Jun 2024 00:01:05.349 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=176, just started
176:C 05 Jun 2024 00:01:05.349 # Configuration loaded
176:M 05 Jun 2024 00:01:05.350 * monotonic clock: POSIX clock_gettime
176:M 05 Jun 2024 00:01:05.352 * Running mode=standalone, port=6379.
176:M 05 Jun 2024 00:01:05.352 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
176:M 05 Jun 2024 00:01:05.352 # Server initialized
176:M 05 Jun 2024 00:01:05.352 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
176:M 05 Jun 2024 00:01:05.353 * Loading RDB produced by version 6.2.3
176:M 05 Jun 2024 00:01:05.353 * RDB age 1200 seconds
176:M 05 Jun 2024 00:01:05.353 * RDB memory usage when created 19.09 Mb
176:M 05 Jun 2024 00:01:05.797 * DB loaded from disk: 0.445 seconds
176:M 05 Jun 2024 00:01:05.797 * Ready to accept connections
I, [2024-06-05T00:01:15.346994 #1]  INFO -- :
I, [2024-06-05T00:01:15.349025 #1]  INFO -- : > thpoff echo "thpoff is installed!"
I, [2024-06-05T00:01:15.361046 #1]  INFO -- : thpoff is installed!

I, [2024-06-05T00:01:15.361523 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2024-06-05T00:01:16.346114 #1]  INFO -- :
I, [2024-06-05T00:01:16.347959 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2024-06-05T00:01:16.442910 #1]  INFO -- :
I, [2024-06-05T00:01:16.443630 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'
I, [2024-06-05T00:01:16.509332 #1]  INFO -- :
I, [2024-06-05T00:01:16.510048 #1]  INFO -- : > chown -R discourse /home/discourse
I, [2024-06-05T00:01:16.819286 #1]  INFO -- :
I, [2024-06-05T00:01:16.819964 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2024-06-05T00:01:16.825836 #1]  INFO -- :
I, [2024-06-05T00:01:16.830100 #1]  INFO -- : File > /etc/cron.d/anacron  chmod:   chown:
I, [2024-06-05T00:01:16.835903 #1]  INFO -- : File > /etc/runit/1.d/copy-env  chmod: +x  chown:
I, [2024-06-05T00:01:16.842255 #1]  INFO -- : File > /etc/service/unicorn/run  chmod: +x  chown:
I, [2024-06-05T00:01:16.849165 #1]  INFO -- : File > /etc/service/nginx/run  chmod: +x  chown:
I, [2024-06-05T00:01:16.854937 #1]  INFO -- : File > /etc/runit/3.d/01-nginx  chmod: +x  chown:
I, [2024-06-05T00:01:16.859605 #1]  INFO -- : File > /etc/runit/3.d/02-unicorn  chmod: +x  chown:
I, [2024-06-05T00:01:16.859818 #1]  INFO -- : Replacing # postgres with sv start postgres || exit 1 in /etc/service/unicorn/run
I, [2024-06-05T00:01:16.860146 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2024-06-05T00:01:16.863691 #1]  INFO -- : > cd /var/www/discourse && git reset --hard
205:C 05 Jun 2024 00:01:16.868 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
205:C 05 Jun 2024 00:01:16.868 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=205, just started
205:C 05 Jun 2024 00:01:16.868 # Configuration loaded
205:M 05 Jun 2024 00:01:16.869 * monotonic clock: POSIX clock_gettime
205:M 05 Jun 2024 00:01:16.870 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
205:M 05 Jun 2024 00:01:16.870 # Failed listening on port 6379 (TCP), aborting.
Checking out files: 100% (28860/28860), done.
I, [2024-06-05T00:01:21.834261 #1]  INFO -- : HEAD is now at 74f71503 FEATURE: Automatically timed delete stub topics after entire topic is merged into another topic (#13187)

I, [2024-06-05T00:01:21.834977 #1]  INFO -- : > cd /var/www/discourse && git clean -f
I, [2024-06-05T00:01:22.023320 #1]  INFO -- :
I, [2024-06-05T00:01:22.023616 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches --add origin main
I, [2024-06-05T00:01:22.043353 #1]  INFO -- :
I, [2024-06-05T00:01:22.043499 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches origin tests-passed
I, [2024-06-05T00:01:22.067432 #1]  INFO -- :
I, [2024-06-05T00:01:22.067586 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth 1 origin tests-passed
From https://github.com/discourse/discourse
 * branch              tests-passed -> FETCH_HEAD
 * [new branch]        tests-passed -> origin/tests-passed
I, [2024-06-05T00:01:28.337837 #1]  INFO -- :
I, [2024-06-05T00:01:28.338598 #1]  INFO -- : > cd /var/www/discourse && git checkout tests-passed
Switched to a new branch 'tests-passed'
I, [2024-06-05T00:01:31.534502 #1]  INFO -- : Branch 'tests-passed' set up to track remote branch 'tests-passed' from 'origin'.

I, [2024-06-05T00:01:31.535226 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2024-06-05T00:01:31.540890 #1]  INFO -- :
I, [2024-06-05T00:01:31.540982 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2024-06-05T00:01:31.544674 #1]  INFO -- :
I, [2024-06-05T00:01:31.544787 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2024-06-05T00:01:31.549410 #1]  INFO -- :
I, [2024-06-05T00:01:31.549578 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2024-06-05T00:01:31.553124 #1]  INFO -- :
I, [2024-06-05T00:01:31.553284 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2024-06-05T00:01:31.557663 #1]  INFO -- :
I, [2024-06-05T00:01:31.557825 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2024-06-05T00:01:31.561174 #1]  INFO -- :
I, [2024-06-05T00:01:31.561325 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2024-06-05T00:01:31.569529 #1]  INFO -- :
I, [2024-06-05T00:01:31.570383 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2024-06-05T00:01:31.577627 #1]  INFO -- :
I, [2024-06-05T00:01:31.577843 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2024-06-05T00:01:31.583781 #1]  INFO -- :
I, [2024-06-05T00:01:31.583970 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2024-06-05T00:01:31.591764 #1]  INFO -- :
I, [2024-06-05T00:01:31.591954 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2024-06-05T00:01:31.598164 #1]  INFO -- :
I, [2024-06-05T00:01:31.598326 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2024-06-05T00:01:31.603561 #1]  INFO -- :
I, [2024-06-05T00:01:31.603737 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2024-06-05T00:01:32.101400 #1]  INFO -- :
I, [2024-06-05T00:01:32.102064 #1]  INFO -- : > cd /var/www/discourse && find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2024-06-05T00:01:32.111566 #1]  INFO -- :
I, [2024-06-05T00:01:32.112387 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2024-06-05T00:01:32.113094 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2024-06-05T00:01:33.452577 #1]  INFO -- :
I, [2024-06-05T00:01:33.454075 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2024-06-05T00:01:33.483225 #1]  INFO -- :
I, [2024-06-05T00:01:33.483456 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2024-06-05T00:01:33.486077 #1]  INFO -- :
I, [2024-06-05T00:01:33.486156 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2024-06-05T00:01:33.488912 #1]  INFO -- :
I, [2024-06-05T00:01:33.490137 #1]  INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2024-06-05T00:01:33.491232 #1]  INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2024-06-05T00:01:33.491544 #1]  INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2024-06-05T00:01:33.501000 #1]  INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2024-06-05T00:01:33.511360 #1]  INFO -- : > echo "done configuring web"
I, [2024-06-05T00:01:33.513903 #1]  INFO -- : done configuring web

I, [2024-06-05T00:01:33.514452 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
ERROR:  Error installing bundler:
        bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.
I, [2024-06-05T00:01:34.070583 #1]  INFO -- :
I, [2024-06-05T00:01:34.072163 #1]  INFO -- : Terminating async processes
I, [2024-06-05T00:01:34.072226 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 59
I, [2024-06-05T00:01:34.072309 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 176
2024-06-05 00:01:34.072 UTC [59] LOG:  received fast shutdown request
176:signal-handler (1717545694) Received SIGTERM scheduling shutdown...
2024-06-05 00:01:34.074 UTC [59] LOG:  aborting any active transactions
2024-06-05 00:01:34.080 UTC [59] LOG:  background worker "logical replication launcher" (PID 68) exited with exit code 1
2024-06-05 00:01:34.081 UTC [63] LOG:  shutting down
2024-06-05 00:01:34.123 UTC [59] LOG:  database system is shut down
176:M 05 Jun 2024 00:01:34.124 # User requested shutdown...
176:M 05 Jun 2024 00:01:34.125 * Saving the final RDB snapshot before exiting.
176:M 05 Jun 2024 00:01:34.249 * DB saved on disk
176:M 05 Jun 2024 00:01:34.249 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 314 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\"\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
7eb3a03475aef78c0e1752bc7845710a0ea739300bd8302356369f362d1bab6f
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
==================== END REBUILD LOG ====================
Failed to rebuild app.

Checking your domain name . . .

Connection to idmforums.com succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . .

starting up existing container
+ /usr/bin/docker start app
Error response from daemon: driver failed programming external connectivity on endpoint app (6a5f876fc5e37ebb76be4bc5ef4a80ef5679fce4f4ab547eb337cafb2b1d4619): Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use
Error: failed to start containers: app
Failed to restart the container.


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git

No non-official plugins detected.

See https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb for the official list.

========================================
Discourse version at idmforums.com: NOT FOUND
Discourse version at localhost: NOT FOUND


==================== MEMORY INFORMATION ====================
RAM (MB): 8167

              total        used        free      shared  buff/cache   available
Mem:           7976         775        2484           6        4716        6887
Swap:           255          31         224

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda        158G   56G   94G  38% /

==================== DISK INFORMATION ====================
Disk /dev/sda: 159.8 GiB, 171534450688 bytes, 335028224 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 260 MiB, 272629760 bytes, 532480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

==================== END DISK INFORMATION ====================

앱이 더 이상 실행되지 않는 것 같은데, 어떻게 시작해야 하나요?

discourse_docker가 latest가 아닌 다른 커밋에 있나요?

./launcher start app을 시도해 볼 수 있습니다.

하지만 작동하지 않을 것이라고 확신합니다.

제가 제안했듯이 운영체제를 업데이트해야 합니다. 여전히 그것이 제 추천 사항이지만, 이제 실행 중인 서버로 되돌릴 수 있는 옵션이 없습니다.

업데이트를 시도하기 전에 제가 만든 마스터 백업 브랜치에 있어야 합니다.

위와 같이 앱을 시작하려고 했지만, 502 Bad Gateway 오류만 나네요.

브랜치를 전환하고 앱을 시작해 보았지만, 스토리지 드라이버가 aufs가 아니라고 경고가 뜹니다(실제로는 overlay2입니다). 런처 소스 코드를 읽어보고 이 체크를 우회하는 방법을 찾아보라고 합니다.

요구사항을 어떻게 수행해야 하나요?

알겠습니다. 하지만 지금은 제 역량 밖의 일이었습니다.

Can’t run ./launcher rebuild app - Docker storage driver is unsupported - support - Discourse Meta

이 스레드를 읽었지만, 확인을 우회하는 방법에 대한 내용은 없고 저장 드라이버를 변경하는 방법만 나와 있습니다.

수정: 네, GitHub에서 코드를 읽고 마스터 백업 브랜치에서 런처를 실행했으며 “./launcher start app --skip-prereqs” 명령을 사용했습니다.

불행히도 여전히 502 bad gateway가 보고되고 있습니다

@pfaffman 님의 말씀에 동의합니다. 선택지가 있다면, 단순히 백업을 저장하고 클라우드에서 완전히 새로운 서버를 설정한 후 백업을 복원하는 것이 좋습니다.

이 작업은 30분 정도면 완료할 수 있습니다(이 토픽은 이미 3 일 전의 것입니다 :slight_smile: ).

이론적으로는 다 좋은데, 나는 그렇게 할 수 있는 권한이 없어요. 도메인에 대한 접근 권한이 없어서 도메인 이름을 새 서버로 지시할 수도 없고요.

나는 다른 사람이 운영하는 서버에서 일하고 있는데, 그 사람은 우리가 하려는 일에 시간도, 관심도 없어요(그래서 처음부터 이렇게 오래 방치된 거죠). 그래서 지금은 수리를 위해 문제를 해결해야 해요.

대신 IP를 다른 서버로 변경할 수 있나요?

그렇지 않다면, 알겠습니다. 그게 좀 제한적일 것 같네요!

그런 경우 다음을 수행할 수 있습니다.

apt dist-upgrade

OS를 업그레이드한 후 재빌드가 제대로 작동하는지 확인해 보세요.

하지만 해당 도메인을 소유한 사람이 신경을 쓰지 않을 것 같다면, 새 도메인을 등록하고 사이트를 자신이 제어할 수 있는 도메인으로 리다이렉트하는 것이 더 나을 것 같습니다.

감사합니다. dist-upgrade를 시도해 보았지만, Ruby 버전이 오래되어서인지 앱이 여전히 다시 빌드되지 않습니다. Ruby를 업데이트하려고 여러 번 시도해 보았지만 성공하지 못했습니다. Discourse가 Ubuntu에 설치된 Ruby가 아닌 자체 Ruby 버전을 사용하는 것 같습니다.

Ruby 문제를 해결하기 위해 수행한 단계는 다음과 같습니다:

1: 새 템플릿 생성 (containers 디렉터리에서) templates 디렉터리로 이동: cd ../templates 새 템플릿 파일을 생성하고 편집기를 엽니다: nano web.ruby.template.yml 파일에 다음 줄을 추가합니다

params:
  ruby_version: "3.0.0"

2: app.yml에 템플릿 추가 containers 디렉터리로 돌아가기: cd ../containers nano에서 app.yml을 엽니다: nano app.yml templates 목록에 새 템플릿 파일을 추가합니다 (마지막 줄을 확인하세요):

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.ruby.template.yml"  # 이 줄을 추가했습니다

3: 앱을 다시 빌드 실행: ./launcher rebuild app

하지만 여전히 Ruby를 3.0.0 버전으로 업데이트해야 한다는 동일한 오류 메시지가 표시됩니다.

클라우드 제공업체의 제어판에 접근 권한이 있다고 가정하고, 이렇게 진행하겠습니다. 그렇지 않다면 접근 권한을 요청하는 것이 좋습니다.

  • @pfaffman 님이 권장하는 방법(Move a Discourse site to another VPS with rsync)을 사용하여 다른 임시 서버로 이전하되, 임시 호스트 이름을 사용하세요. 호스트 이름 문제가 발생하겠지만, 이를 통해 모든 것이 정상적으로 작동하는지 테스트할 수 있습니다.
  • 안전을 위해 스냅샷을 찍은 후, 현재 서버를 Ubuntu 24.04 LTS에서 처음부터 다시 설치하세요. 대부분의 클라우드 제공업체는 IP 주소를 유지하면서 이 작업을 허용합니다.
  • 권장 방법을 다시 사용하여 임시 서버에서 기존 IP 주소를 가진 새로 설치된 서버로 동기화하세요.
  • 모든 것이 정상 작동하는 것을 확인한 후, 스냅샷과 임시 서버를 삭제하세요.

새로 설치하는 것은 좋은 생각이지만, Ruby 버전을 업그레이드할 수 있는지, 가능하다면 어떻게 해야 하는지 알고 싶습니다. 런처가 작동하지 않는 유일한 이유가 이 것인 것 같기 때문입니다.