Итак, вот в чем дело, сейчас я работаю с конфигурацией docker-compose Api-Platform.
Мне нужно было добавить wkhtmltopdf
для генерации pdf (дух.), Но пакет, который я получил от alpine *В репо 1004 * есть ошибка, которая случайным образом вызывает segfault из-за qt5.
Эта проблема должна быть исправлена на qt5-qtbase-dev=5.12.2-r0
, а репо edge
содержит 5.12.3, которая может соответствоватьмне очень хорошо.
Эта версия qt5 требует icu-libs=64.x-r0
для запуска, что также удобно в пограничном репо (64.2
), но сборка затем завершается неудачно со следующим выводом:
ERROR: unsatisfiable constraints:
icu-libs-62.1-r0:
breaks: world[icu-libs=64.2-r0]
satisfies: .api-phpexts-rundeps-0[so:libicui18n.so.62]
.api-phpexts-rundeps-0[so:libicuio.so.62]
.api-phpexts-rundeps-0[so:libicuuc.so.62]
Скрипту, который запускает зависимости расширений php, нужны icu-libs=62.1-r0
:
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)";
apk add --no-cache --virtual .api-phpexts-rundeps $runDeps;
Но я не могу сказать, для чего нужны старые icu-libs здесь ... какие-либо предложения?
[Edit] Вот мой Dockerfile, какой он есть после моей последней попытки: https://gist.github.com/tsadiq/47582ea7d2f8b572cd360d6a9c9329b0
Строки 54-56 были попыткой обновить пакет icu-libs
после того, как он был использован для построения зависимостей php чуть выше.Я даже попробовал с опцией --force-broken-world
, но это, очевидно, не сработало ^^ '
Единственный другой diff с моим ранее работавшим Dockerfile - это =5.12.3-r0
в строке 70, это то, что мне нужно для работы.
[2nd Edit] В конце концов, я не смог заставить его работать, и мне посоветовали получить полный двоичный файл wkhtmltopdf из докера, используя исправленную версию QT.Проблема была решена, но рендеринг был полностью отключен, поэтому мне пришлось откатиться до версии с ошибками и удалить все внешние вызовы для библиотек CSS и вставить все CSS прямо в источник HTML, что решило проблему, вызвавшую вышеупомянутый segfault.
Это не совсем решение, но сейчас оно мне подходит.