谨慎使用:该方法只在docker下的容器linux系统操作,非界面或者服务器可使用。
概述
这个警告 XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
通常出现在 Linux 系统中,尤其是当以 root 用户运行某些应用程序时。它是与 XDG 规范相关的环境变量问题,XDG 是一个用于定义桌面环境和应用程序目录结构的标准。具体来说,XDG_RUNTIME_DIR
是指定一个存储应用程序的运行时文件(如 UNIX 套接字、临时文件等)的位置。
解决方法:
-
为
XDG_RUNTIME_DIR
设置值
通常,XDG_RUNTIME_DIR
应该指向一个属于当前用户的目录(而不是/tmp
),例如/run/user/1000
(1000
是用户的 UID)。如果你以 root 用户运行应用程序,可以尝试手动设置该环境变量。以下是设置该变量的示例:export XDG_RUNTIME_DIR=/run/user/$(id -u)
然后重新运行应用程序,看看是否解决了警告。
-
避免以 root 用户运行桌面应用程序
有时,这个问题发生是因为你以 root 用户运行桌面应用程序或图形化应用程序。建议尽量避免使用 root 用户启动 GUI 程序,改为使用普通用户。 -
检查目录权限
如果XDG_RUNTIME_DIR
已经设置正确,但仍然出现问题,可能是该目录没有足够的权限。可以检查目录/run/user/$(id -u)
是否存在并具有适当的权限。执行以下命令来查看:
ls -ld /run/user/$(id -u)
如果没有该目录,尝试创建它并设置适当的权限:
mkdir -p /run/user/$(id -u)
chown
(
w
h
o
a
m
i
)
:
(whoami):
(whoami):(whoami) /run/user/$(id -u)
- 使用 sudo 时设置
XDG_RUNTIME_DIR
如果你需要以 root 用户运行命令,可以使用sudo
时通过-E
参数保留环境变量:
sudo -E <command>
这会保留原始用户的环境变量设置。
技术点总结:
- 设置
XDG_RUNTIME_DIR
环境变量,确保它指向正确的目录。 - 避免以 root 用户运行桌面应用程序,尤其是图形界面应用。
- 确保目录的权限正确,如果需要的话,创建和设置它们。
警告: 对Linux不熟悉的人慎重使用,为了保险起见,你最好选择docker下的容器linux系统开发 。
警告: 对Linux不熟悉的人慎重使用,为了保险起见,你最好选择docker下的容器linux系统开发 。
警告: 对Linux不熟悉的人慎重使用,为了保险起见,你最好选择docker下的容器linux系统开发 。
警告: 对Linux不熟悉的人慎重使用,为了保险起见,你最好选择docker下的容器linux系统开发 ,如果在容器内也出现如下的问题,解决方法如下:
参考资料来源:
https://stackoverflow.com/questions/59790350/qstandardpaths-xdg-runtime-dir-not-set-defaulting-to-tmp-runtime-aadithyasb
https://stackoverflow.com/questions/71571296/can-i-silence-qstandardpaths-xdg-runtime-dir-not-set-defaulting-to-tmp-runti/71572857#71572857
https://blog.csdn.net/qq_45662588/article/details/122601945
https://www.cnblogs.com/liujiaxin2018/p/16197348.html
警告或报错问题:XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘
解决方法:
方法一:设置环境变量:终端输入export XDG_RUNTIME_DIR=/usr/lib/
方法二:在/etc/profile末尾增加两句
export XDG_RUNTIME_DIR=/usr/lib/
export RUNLEVEL=3
然后刷新全局变量
source /etc/profile
方法三:如果你的程序没有中断或严重BUG,那么该警告记录:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root’好像并不影响页面显示和程序的正常运行。
补充说明:
解决XDG_RUNTIME_DIR未设置的问题
当您遇到 XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’ 这个警告时,通常意味着您的系统缺少必要的环境变量来指定 XDG_RUNTIME_DIR 的位置。这个环境变量用于存放临时文件和运行时数据,对于许多图形界面应用程序来说是非常重要的。
以下是几种常见的解决方法:
方法一:设置环境变量
您可以通过在终端中输入以下命令来手动设置 XDG_RUNTIME_DIR 的值:
export XDG_RUNTIME_DIR=/your/custom/directory
请将 /your/custom/directory 替换为您希望的目录路径。
方法二:编辑配置文件
您可以在 /etc/profile 文件的末尾添加以下两行:
export XDG_RUNTIME_DIR=/your/custom/directory
export RUNLEVEL=3
然后,执行以下命令来刷新全局变量:
source /etc/profile
方法三:在个人home目录下设置
如果您不希望更改全局设置,可以在您的 home 目录下的 .bashrc 文件中添加以下行:
export XDG_RUNTIME_DIR=/your/custom/directory
export RUNLEVEL=3
之后,执行以下命令来应用更改:
source ~/.bashrc
请注意,上述方法可能不适用于所有情况,特别是在容器化环境中,例如 Docker。在这种情况下,您可能需要考虑其他解决方案,例如确保容器具有适当的权限来访问宿主机的 /run/user/$UID 目录,或者在容器内部创建一个合适的 XDG_RUNTIME_DIR。
如果您的程序没有因为这个警告而中断或出现严重问题,那么这个警告可能不会影响程序的正常运行。不过,最佳实践是解决这个问题,以避免潜在的兼容性问题或安全风险。
参考文献
https://www.cnblogs.com/liujiaxin2018/p/16197348.html
https://www.cnblogs.com/scandit/p/15032585.html
https://cloud.tencent.com/developer/ask/sof/108259051
https://blog.csdn.net/weixin_42130167/article/details/103962193