每次在基于 Ubuntu 焦點的 Docker 容器中運行腳本時,我都會收到此警告:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'
我該如何解決它或至少讓它靜音?
我知道這個問題表明這不是一個應該嘗試解決的問題。但是,這有點弄亂我的輸出。
uj5u.com熱心網友回復:
如果您想擺脫警告,因為您在一個容器中并且您不太可能遇到多個用戶將具有檔案權限問題的問題,如您正在鏈接的問題中所述,那么您可以簡單地定義一個環境變數并使其指向/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'" \
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/446956.html
