Errno::ENOENT: Нет такого файла или каталога @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf

Я попытался обновить через админ-панель, но не уверен, что произошло: административные страницы стали пустыми, хотя фронтенд работает нормально. Решил повторить обновление через командную строку и получил эту ошибку:

Errno::ENOENT: Нет такого файла или каталога @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf

cd /var/discourse; ./launcher rebuild app
x86_64 arch detected.
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
2.0.20240708-0023: Pulling from discourse/base
Digest: sha256:025e9c1f68
Status: Image is up to date for discourse/base:2.0.20240708-0023
docker.io/discourse/base:2.0.20240708-0023
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-06T20:57:43.044950 #1]  INFO -- : Reading from stdin
I, [2025-02-06T20:57:43.066724 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown: 
I, [2025-02-06T20:57:43.072432 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2025-02-06T20:57:43.077790 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2025-02-06T20:57:43.083299 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown: 
I, [2025-02-06T20:57:43.087962 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown: 


FAILED
--------------------
Errno::ENOENT: Нет такого файла или каталога @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/replace_command.rb:11:in `read'
replace failed with the params {"filename"=>"/etc/postgresql/15/main/postgresql.conf", "from"=>"data_directory = '/var/lib/postgresql/15/main'", "to"=>"data_directory = '/shared/postgres_data'"}
bootstrap failed with exit code 1
** 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.

Дополнительная информация:

cat containers/app.yml | grep postgres

- "templates/postgres.template.yml"

Как это исправить?

У меня есть Droplet от DigitalOcean с Ubuntu, если это поможет.

У меня только один контейнер.

Действительно ли там находятся эти *?

Должно быть

- "templates/postgres.template.yml"

Извините, это была ошибка копирования-вставки. Я исправил. Нет, их там нет.

Я только что попробовал обновить другой экземпляр на другом сервере, и всё прошло успешно. Оба сервера — это DO Droplets с одинаковыми характеристиками.
Не понимаю, что происходит.

Мой форум не работает уже 2 дня, не могу его запустить. Переместил тему в раздел Поддержка. Надеюсь на помощь.

Это гораздо более старый образ Docker, в котором не установлены пакеты PostgreSQL 15, поэтому возникает ошибка:

Ваш файл launcher, вероятно, был изменён и зафиксирован на использовании указанного выше старого образа Docker. Вы можете изменить его на последний образ, выделенный ниже, а затем попробовать снова выполнить сборку. (Заранее сделайте необходимые резервные копии.)

Спасибо за ответ. Я только что проверил, и в файле launcher базовый образ, похоже, уже самый свежий:

root@host:/var/discourse# cat launcher | grep "base:2.0"
image="discourse/base:2.0.20250129-0720"

Однако при пересборке всё равно используется старый образ. Откуда он берётся? Как это проверить?

Это также может быть определено как base_image в вашем файле app.yml. Если вы найдёте это, вы можете просто закомментировать (или удалить) эту строку.

Если это не поможет, вы можете попробовать рекурсивный поиск по части этой строки.

grep --exclude-dir shared -rI 20240708 /var/discourse

Сработало. Большое спасибо за помощь.