首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以沉默QStandardPaths: XDG_RUNTIME_DIR not设置,默认为‘/tmp/运行时-’

我可以沉默QStandardPaths: XDG_RUNTIME_DIR not设置,默认为‘/tmp/运行时-’
EN

Stack Overflow用户
提问于 2022-03-22 11:28:51
回答 1查看 2.4K关注 0票数 2

每次在基于Ubuntu焦点的Docker容器中运行脚本时,我都会收到这样的警告:

代码语言:javascript
运行
复制
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'

我怎样才能修好它,或者至少让它安静下来?

我知道this issues说它不是一个人应该试图修复的东西。不过,这有点影响了我的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 13:25:22

如果您想消除警告,因为您位于容器中,并且不太可能像链接的问题中所指出的那样,出现多个用户将有文件权限问题的问题,那么您可以简单地定义一个环境变量并使其指向/tmp目录。

下面是一个使用pandocwkhtmltopdf的示例,通常会出现此错误:

代码语言:javascript
运行
复制
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,它将产生:

代码语言:javascript
运行
复制
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loading page (1/2)
Printing pages (2/2)                                               
Done  

这样,它就会是:

代码语言:javascript
运行
复制
Loading page (1/2)
Printing pages (2/2)                                               
Done  

如果您想按建议使用一个文件夹/run/user/<UID>,那么您必须首先创建该文件夹并分配正确的权限。

对于以root形式运行的容器

代码语言:javascript
运行
复制
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'" \
]

对于以其他用户身份运行的容器:

代码语言:javascript
运行
复制
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'" \
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71571296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档