Не удалось пересобрать: файл не найден /usr/local/etc/ImageMagick-6/policy.xml

Привет,

Я попытался обновить Discourse, выполнив ./launcher rebuild app, следуя инструкции с Manually update Discourse and Docker image to latest
Но получил ошибку ENOENT.

Чтобы исправить ситуацию, я выполнил следующие команды:
dpkg-reconfigure -plow unattended-upgrades

apt-get update
apt-get dist-upgrade

wget -qO- https://get.docker.com/ | sh

Однако ошибка осталась.
Я не могу её исправить. :sob:

Логи здесь.

dstest:/var/discourse$ sudo ./launcher rebuild app
Обеспечение актуальности лаунчера
Получение origin
Лаунчер актуален
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Уже актуально.
I, [2020-11-13T07:34:54.569773 #1]  INFO -- : Загрузка --stdin
I, [2020-11-13T07:34:54.576058 #1]  INFO -- : 
> locale-gen $LANG && update-locale
I, [2020-11-13T07:34:54.676810 #1]  INFO -- : Генерация локалей (это может занять время)...
Генерация завершена.

I, [2020-11-13T07:34:54.677475 #1]  INFO -- : 
> mkdir -p /shared/postgres_run
I, [2020-11-13T07:34:54.702215 #1]  INFO -- : 
> chown postgres:postgres /shared/postgres_run
I, [2020-11-13T07:34:54.712895 #1]  INFO -- : 
> chmod 775 /shared/postgres_run
I, [2020-11-13T07:34:54.717105 #1]  INFO -- : 
> rm -fr /var/run/postgresql
I, [2020-11-13T07:34:54.719943 #1]  INFO -- : 
> ln -s /shared/postgres_run /var/run/postgresql
I, [2020-11-13T07:34:54.723863 #1]  INFO -- : 
> socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/11/13 07:34:54 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Нет такого файла или каталога
I, [2020-11-13T07:34:54.791451 #1]  INFO -- : 
> rm -fr /shared/postgres_run/.s*
I, [2020-11-13T07:34:54.795116 #1]  INFO -- : 
> rm -fr /shared/postgres_run/*.pid
I, [2020-11-13T07:34:54.798154 #1]  INFO -- : 
> mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-11-13T07:34:54.800772 #1]  INFO -- : 
> chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-11-13T07:34:54.803400 #1]  INFO -- : 
> File > /etc/service/postgres/run  chmod: +x  chown: 
I, [2020-11-13T07:34:54.811426 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2020-11-13T07:34:54.815457 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2020-11-13T07:34:54.819414 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown: 
I, [2020-11-13T07:34:54.820021 #1]  INFO -- : 
> chown -R root /var/lib/postgresql/12/main
I, [2020-11-13T07:34:58.099992 #1]  INFO -- : 
> [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-11-13T07:34:58.103259 #1]  INFO -- : 
> chown -R postgres:postgres /shared/postgres_data
I, [2020-11-13T07:34:58.125185 #1]  INFO -- : 
> chown -R postgres:postgres /var/run/postgresql
I, [2020-11-13T07:34:58.128600 #1]  INFO -- : 
> /root/upgrade_postgres
I, [2020-11-13T07:34:58.133295 #1]  INFO -- : 
> rm /root/upgrade_postgres
I, [2020-11-13T07:34:58.135503 #1]  INFO -- : 
> Замена data_directory = '/var/lib/postgresql/12/main' на data_directory = '/shared/postgres_data' в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.136723 #1]  INFO -- : Замена (?-mix:#?listen_addresses *=.*) на listen_addresses = '*' в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.137998 #1]  INFO -- : Замена (?-mix:#?synchronous_commit *=.*) на synchronous_commit = $db_synchronous_commit в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.138960 #1]  INFO -- : Замена (?-mix:#?shared_buffers *=.*) на shared_buffers = $db_shared_buffers в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.139939 #1]  INFO -- : Замена (?-mix:#?work_mem *=.*) на work_mem = $db_work_mem в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.140867 #1]  INFO -- : Замена (?-mix:#?default_text_search_config *=.*) на default_text_search_config = '$db_default_text_search_config' в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.141833 #1]  INFO -- : 
> install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-11-13T07:34:58.144916 #1]  INFO -- : 
> Замена (?-mix:#?checkpoint_segments *=.*) на checkpoint_segments = $db_checkpoint_segments в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.146076 #1]  INFO -- : Замена (?-mix:#?logging_collector *=.*) на logging_collector = $db_logging_collector в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.147118 #1]  INFO -- : Замена (?-mix:#?log_min_duration_statement *=.*) на log_min_duration_statement = $db_log_min_duration_statement в /etc/postgresql/12/main/postgresql.conf
I, [2020-11-13T07:34:58.162784 #1]  INFO -- : Замена (?-mix:^#local +replication +postgres +peer$) на local replication postgres  peer в /etc/postgresql/12/main/pg_hba.conf
I, [2020-11-13T07:34:58.163691 #1]  INFO -- : Замена (?-mix:^host.*all.*all.*127.*$) на host all all 0.0.0.0/0 md5 в /etc/postgresql/12/main/pg_hba.conf
I, [2020-11-13T07:34:58.164784 #1]  INFO -- : 
> HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
I, [2020-11-13T07:34:58.166947 #1]  INFO -- : 
> sleep 5
2020-11-13 07:34:58.208 UTC [50] LOG:  запуск PostgreSQL 12.4 (Debian 12.4-1.pgdg100+1) на x86_64-pc-linux-gnu, скомпилирован gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2020-11-13 07:34:58.208 UTC [50] LOG:  прослушивание IPv4 адреса "0.0.0.0", порт 5432
2020-11-13 07:34:58.209 UTC [50] LOG:  прослушивание IPv6 адреса "::", порт 5432
2020-11-13 07:34:58.218 UTC [50] LOG:  прослушивание Unix сокета "/var/run/postgresql/.s.PGSQL.5432"
2020-11-13 07:34:58.302 UTC [53] LOG:  система баз данных была выключена в 2020-11-13 07:23:18 UTC
2020-11-13 07:34:58.321 UTC [50] LOG:  система баз данных готова к принятию подключений
I, [2020-11-13T07:35:03.209924 #1]  INFO -- : 
> su postgres -c 'createdb discourse' || true
2020-11-13 07:35:03.575 UTC [63] postgres@postgres ERROR:  база данных "discourse" уже существует
2020-11-13 07:35:03.575 UTC [63] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: ошибка: создание базы данных не удалось: ERROR:  база данных "discourse" уже существует
I, [2020-11-13T07:35:03.578465 #1]  INFO -- : 
> su postgres -c 'psql discourse -c "create user discourse;"' || true
2020-11-13 07:35:03.644 UTC [74] postgres@discourse ERROR:  роль "discourse" уже существует
2020-11-13 07:35:03.644 UTC [74] postgres@discourse STATEMENT:  create user discourse;
ERROR:  роль "discourse" уже существует
I, [2020-11-13T07:35:03.646897 #1]  INFO -- : 
> su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2020-11-13T07:35:03.711432 #1]  INFO -- : GRANT

I, [2020-11-13T07:35:03.712171 #1]  INFO -- : 
> su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2020-11-13T07:35:03.782199 #1]  INFO -- : ALTER SCHEMA

I, [2020-11-13T07:35:03.782901 #1]  INFO -- : 
> su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
NOTICE:  расширение "hstore" уже существует, пропускаем
I, [2020-11-13T07:35:03.847761 #1]  INFO -- : CREATE EXTENSION

I, [2020-11-13T07:35:03.848327 #1]  INFO -- : 
> su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
NOTICE:  расширение "pg_trgm" уже существует, пропускаем
I, [2020-11-13T07:35:03.909805 #1]  INFO -- : CREATE EXTENSION

I, [2020-11-13T07:35:03.910376 #1]  INFO -- : 
> su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
NOTICE:  расширение "hstore" уже существует, пропускаем
I, [2020-11-13T07:35:03.972494 #1]  INFO -- : CREATE EXTENSION

I, [2020-11-13T07:35:03.973165 #1]  INFO -- : 
> su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
NOTICE:  расширение "pg_trgm" уже существует, пропускаем
I, [2020-11-13T07:35:04.035738 #1]  INFO -- : CREATE EXTENSION

I, [2020-11-13T07:35:04.036418 #1]  INFO -- : 
> sudo -u postgres psql discourse
I, [2020-11-13T07:35:04.055691 #1]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');

I, [2020-11-13T07:35:04.147941 #1]  INFO -- : File > /var/lib/postgresql/take-database-backup  chmod: +x  chown: postgres:postgres
I, [2020-11-13T07:35:04.150956 #1]  INFO -- : File > /var/spool/cron/crontabs/postgres  chmod:   chown: 
I, [2020-11-13T07:35:04.151502 #1]  INFO -- : 
> echo postgres установлен!
I, [2020-11-13T07:35:04.167002 #1]  INFO -- : postgres установлен!

I, [2020-11-13T07:35:04.172330 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown: 
I, [2020-11-13T07:35:04.176723 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown: 
I, [2020-11-13T07:35:04.181121 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown: 
I, [2020-11-13T07:35:04.182910 #1]  INFO -- : Замена daemonize yes на пустое значение в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.183837 #1]  INFO -- : Замена (?-mix:^pidfile.*$) на пустое значение в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.185609 #1]  INFO -- : 
> install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2020-11-13T07:35:04.225330 #1]  INFO -- : 
> Замена (?-mix:^logfile.*$) на logfile "" в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.227109 #1]  INFO -- : Замена (?-mix:^bind .*$) на пустое значение в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.229259 #1]  INFO -- : Замена (?-mix:^dir .*$) на dir /shared/redis_data в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.230796 #1]  INFO -- : Замена (?-mix:^protected-mode yes) на protected-mode no в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.232306 #1]  INFO -- : Замена # io-threads 4 на io-threads $redis_io_threads в /etc/redis/redis.conf
I, [2020-11-13T07:35:04.233981 #1]  INFO -- : 
> echo redis установлен
I, [2020-11-13T07:35:04.236684 #1]  INFO -- : redis установлен

I, [2020-11-13T07:35:04.237270 #1]  INFO -- : 
> cat /etc/redis/redis.conf | grep logfile
I, [2020-11-13T07:35:04.263966 #1]  INFO -- : logfile ""

I, [2020-11-13T07:35:04.264740 #1]  INFO -- : 
> exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2020-11-13T07:35:04.266909 #1]  INFO -- : 
> sleep 10
167:C 13 Nov 2020 07:35:04.374 # oO0OoO0OoO0Oo Redis запускается oO0OoO0OoO0Oo
167:C 13 Nov 2020 07:35:04.375 # Версия Redis=5.0.9, бит=64, commit=00000000, modified=0, pid=167, только что запущен
167:C 13 Nov 2020 07:35:04.375 # Конфигурация загружена
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Запущен в автономном режиме
 |`-._`-...-` __...-.``-._|'` _.-'|     Порт: 6379
 |    `-._   `._    /     _.-'    |     PID: 167
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

167:M 13 Nov 2020 07:35:04.379 # WARNING: Настройка TCP backlog 511 не может быть применена, так как /proc/sys/net/core/somaxconn установлено в меньшее значение 128.
167:M 13 Nov 2020 07:35:04.379 # Сервер инициализирован
167:M 13 Nov 2020 07:35:04.379 # WARNING: В вашем ядре включена поддержка Transparent Huge Pages (THP). Это создаст проблемы с задержками и использованием памяти в Redis. Чтобы исправить это, выполните команду 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' от имени root и добавьте её в /etc/rc.local, чтобы сохранить настройку после перезагрузки. Redis необходимо перезапустить после отключения THP.
167:M 13 Nov 2020 07:35:04.498 * База данных загружена с диска: 0.118 секунд
167:M 13 Nov 2020 07:35:04.498 * Готов к принятию подключений
I, [2020-11-13T07:35:14.270726 #1]  INFO -- : 
I, [2020-11-13T07:35:14.271660 #1]  INFO -- : Завершение асинхронных процессов
I, [2020-11-13T07:35:14.271971 #1]  INFO -- : Отправка INT процессу HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main pid: 50
I, [2020-11-13T07:35:14.272236 #1]  INFO -- : Отправка TERM процессу exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 167
2020-11-13 07:35:14.272 UTC [50] LOG:  получен запрос на быстрое завершение работы
167:signal-handler (1605252914) Получен SIGTERM, планирование завершения работы...
2020-11-13 07:35:14.276 UTC [50] LOG:  прерывание любых активных транзакций
2020-11-13 07:35:14.278 UTC [50] LOG:  фоновый рабочий "logical replication launcher" (PID 59) завершился с кодом выхода 1
2020-11-13 07:35:14.283 UTC [54] LOG:  завершение работы
2020-11-13 07:35:14.312 UTC [50] LOG:  система баз данных завершена
167:M 13 Nov 2020 07:35:14.331 # Пользователь запросил завершение работы...
167:M 13 Nov 2020 07:35:14.331 * Сохранение финального снимка RDB перед выходом.
167:M 13 Nov 2020 07:35:14.369 * База данных сохранена на диск
167:M 13 Nov 2020 07:35:14.370 # Redis теперь готов к выходу, пока...

FAILED
--------------------
Errno::ENOENT: Нет такого файла или каталога @ rb_sysopen - /usr/local/etc/ImageMagick-6/policy.xml
Место ошибки: /pups/lib/pups/replace_command.rb:8:in `read'
replace failed с параметрами {"filename"=>"/usr/local/etc/ImageMagick-6/policy.xml", "from"=>"<policymap>", "to"=>"<policymap>\n  <policy domain=\"coder\" rights=\"none\" pattern=\"EPHEMERAL\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"URL\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"HTTPS\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"MVG\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"MSL\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"TEXT\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"SHOW\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"WIN\" />\n  <policy domain=\"coder\" rights=\"none\" pattern=\"PLT\" />\n"}
8a2b7a84ea2ce73e8438d1a8ba1209227b633c0797880d18ca3b5e49d60f1007
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.

Можете ли вы поделиться здесь файлом app.yml? Не забудьте скрыть пароли после вставки содержимого.

Спасибо за ваш ответ.

Это app.yml, в котором были заменены некоторые слова.

# это шаблон контейнера Docker Discourse "всё в одном", автономный
##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## посещайте http://www.yamllint.com/ для проверки этого файла при необходимости

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.custom.yml"
  - "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал один порт с другим веб-сервером, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Установите db_shared_buffers максимум на 25% от общего объема памяти.
  ## будет установлено автоматически при загрузке на основе обнаруженного объема ОЗУ, или вы можете переопределить
  db_shared_buffers: "768MB"

  ## может улучшить производительность сортировки, но увеличивает использование памяти на подключение
  #db_work_mem: "40MB"

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  version: stable

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Сколько одновременных веб-запросов поддерживается? Зависит от памяти и количества ядер CPU.
  ## будет установлено автоматически при загрузке на основе обнаруженного количества CPU, или вы можете переопределить
  UNICORN_WORKERS: 2

  ## TODO: Доменное имя, на которое будет отвечать этот экземпляр Discourse
  DISCOURSE_HOSTNAME: bbs.tmp_name.jp

  ## Раскомментируйте, если хотите, чтобы контейнер запускался с тем же
  ## именем хоста (-h опция), что указано выше (по умолчанию "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Список email-адресов через запятую, которые станут администраторами и разработчиками
  ## при первоначальной регистрации, например 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'tmp_name@gmail.com'

  ## TODO: SMTP-сервер для проверки новых учетных записей и отправки уведомлений
  DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: tmp_name
  DISCOURSE_SMTP_PASSWORD: "*********"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (опционально, по умолчанию true)

  ## Если вы добавили шаблон Lets Encrypt, раскомментируйте ниже, чтобы получить бесплатный SSL-сертификат
  LETSENCRYPT_ACCOUNT_EMAIL: tmp_name@gmail.com

  ## Адрес CDN для этого экземпляра Discourse (настроен на извлечение)
  ## см. https://meta.discourse.org/t/14857 для деталей
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Контейнер Docker не сохраняет состояние; все данные хранятся в /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Плагины размещаются здесь
## см. https://meta.discourse.org/t/19157 для деталей
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Любые пользовательские команды для запуска после сборки
run:
  - exec: echo "Начало пользовательских команд"
  ## Если вы хотите установить адрес электронной почты "От" для первой регистрации, раскомментируйте и измените:
  ## После получения первого email регистрации закомментируйте строку снова. Это нужно выполнить только один раз.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Конец пользовательских команд"

Благодаря расследованию @jamie.wilson, похоже, что вы используете устаревшую версию скрипта установки. Попробуйте выполнить:

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

Это всё ещё приведёт к ошибке в данный момент, но из-за другой несовместимости stable, которую мы отслеживаем. Если вам необходимо обновиться, удалите блокировку stable, так как она в настоящее время не работает, и мы не тестируем её часто.