Я выяснил, что многие установки пакетов вызывают systemd для запуска своего программного обеспечения. Проблема в том, что если вы хотите установить программное обеспечение внутри докера, это приведет к сбою установки. Потому что по умолчанию Debian завершает установку неудачно, если происходит сбой в сценарии после установки.
Команда Elasticsearch сделал обходной путь для этого (я не уверен, что они понимают, что это исправляет для пользователей докеров). Но это проблема для многих пакетов.
Есть ли способ заставить их работать в докере debian / ubuntu?
Это не ответ, насколько я понимаю, хорошего ответа нет.
Но вот что делать:
systemctl daemon-reload || true
# instead of
systemctl daemon-reload
Все, что называется после systemctl
, вы должны предложить добавить || true
на случай, если есть такой вызов в сценарии после установки вашего пакета. Это исправляет 2 случая:
systemctl
замаскирован.systemctl
не работает (потому что запускается не как 1-й pid) как в докерах.