Могу ли я отключить QStandardPaths: XDG_RUNTIME_DIR не установлен, по умолчанию используется «/tmp/runtime-»

У меня появляется это предупреждение каждый раз, когда я запускаю скрипт в своем контейнере Docker на основе Ubuntu focus:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'

Как это исправить или хотя бы заглушить?

Я знаю это проблемы, в котором говорится, что это не то, что нужно пытаться исправить. Тем не менее, это немного портит мои результаты.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите избавиться от предупреждения, поскольку вы находитесь в контейнере, и у вас вряд ли возникнет проблема с тем, что у нескольких пользователей будет проблема с правами доступа к файлам, как указано в вопросе, который вы связываете, тогда вы можете просто определить среду переменную и сделайте так, чтобы она указывала на каталог /tmp.

Вот пример использования pandoc и wkhtmltopdf, который обычно дает эту ошибку:

FROM ubuntu:focal

ARG DEBIAN_FRONTEND=noninteractive 

RUN apt-get update -qq \
    && apt-get install --yes pandoc wkhtmltopdf \
    && echo "# Hello world!" > demo.md


ENV XDG_RUNTIME_DIR=/tmp
## ^-- This is the interesting line for you

CMD [ \
    "pandoc", \
    "demo.md", \
    "--output", "demo.pdf", \
    "--pdf-engine", "wkhtmltopdf", \
    "--metadata", "pagetitle='Demo'" \
]

Без ENV это даст:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loading page (1/2)
Printing pages (2/2)                                               
Done  

С ним тогда было бы:

Loading page (1/2)
Printing pages (2/2)                                               
Done  

Если вы хотите сделать это, как советуется, с папкой /run/user/<UID>, вам нужно сначала создать папку и назначить ей правильное право.

Для контейнеров, работающих как root:

FROM ubuntu:focal

ARG DEBIAN_FRONTEND=noninteractive 

RUN apt-get update -qq \
    && apt-get install --yes pandoc wkhtmltopdf \
    && echo "# Hello world!" > demo.md \ 
    && mkdir -p -m 0700 /run/user/0
##       ^-- now you also have this last line

ENV XDG_RUNTIME_DIR=/run/user/0
## ^-- And still that one

CMD [ \
    "pandoc", \
    "demo.md", \
    "--output", "demo.pdf", \
    "--pdf-engine", "wkhtmltopdf", \
    "--metadata", "pagetitle='Demo'" \
]

Для контейнеров, работающих от имени другого пользователя:

FROM ubuntu:focal

ARG DEBIAN_FRONTEND=noninteractive 
ARG UID=1000

WORKDIR /tmp

RUN apt-get update -qq \
    && apt-get install --yes pandoc wkhtmltopdf \
    && echo "# Hello world!" > demo.md \ 
    && chmod 766 demo.md \
    && useradd --uid "${UID}" user \
    && mkdir -p -m 0700 /run/user/"${UID}" \
    && chown user:user /run/user/"${UID}"
##       ^-- and, now, you have those three last lines

USER user
ENV XDG_RUNTIME_DIR=/run/user/"${UID}"
## ^-- And still that one, plus the user definition, of course

CMD [ \
    "pandoc", \
    "demo.md", \
    "--output", "demo.pdf", \
    "--pdf-engine", "wkhtmltopdf", \
    "--metadata", "pagetitle='Demo'" \
]

Другие вопросы по теме