WSL2 Ubuntu环境中Flatpak安装的Emacs启动失败(bwrap挂载tmpfs报错)求助
WSL2 Ubuntu环境中Flatpak安装的Emacs启动失败(bwrap挂载tmpfs报错)求助
各位大佬好,我最近在WSL2上运行的Ubuntu 20.04.6 LTS环境里,用Flatpak装了Emacs 29.4,结果启动的时候碰上个头疼的错误,折腾半天没搞定,来求帮忙!
先说说我的操作过程和报错情况:
- 安装Emacs用的命令:
flatpak install flathub org.gnu.emacs
- 安装完成后,我用
flatpak list --app确认应用已经成功安装,输出如下:
$ flatpak list --app Name Application ID Version Branch Installation Free Software Foundation org.gnu.emacs 29.4 stable user
- 但当我执行
flatpak run org.gnu.emacs启动Emacs时,直接弹出错误:
$ flatpak run org.gnu.emacs bwrap: Can't mount tmpfs on /newroot/tmp/.X11-unix: No such file or directory
我查了一圈相关的问题,终于摸清楚这个报错的根源了——主要是WSL2的tmp目录结构和Flatpak沙箱的预期不匹配,再加上GUI应用必备的X11配置没到位。给你整理了几步能解决的操作:
- 手动创建缺失目录并挂载tmpfs
WSL2环境里默认可能没有生成/tmp/.X11-unix这个目录,Flatpak的沙箱工具bwrap要在这个位置挂载tmpfs自然就失败了。先执行这两个命令补全目录并挂载:
sudo mkdir -p /tmp/.X11-unix sudo mount -t tmpfs tmpfs /tmp/.X11-unix
如果想让这个挂载在WSL重启后依然生效,可以把配置加到/etc/fstab里:
编辑/etc/fstab文件,添加下面一行内容:
tmpfs /tmp/.X11-unix tmpfs defaults 0 0
保存后执行sudo mount -a就能让配置立即生效。
- 确保X服务器正常运行且DISPLAY变量配置正确
WSL2本身不自带GUI环境,跑Emacs这类GUI应用必须依赖Windows端的X服务器(比如VcXsrv、X410这类工具)。首先要在Windows上启动你的X服务器,然后回到WSL的终端里设置正确的DISPLAY环境变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
要是嫌每次打开终端都要输这条命令,可以把它加到~/.bashrc或者~/.zshrc的末尾,这样每次启动终端都会自动加载这个配置。
- 给Emacs的Flatpak包赋予X11访问权限
Flatpak的沙箱机制默认会限制应用对系统资源的访问,我们需要手动放开Emacs访问X11的权限:
flatpak override --user --socket=x11 org.gnu.emacs
做完上面这几步,再执行flatpak run org.gnu.emacs试试看,应该就能正常启动Emacs啦!
备注:内容来源于stack exchange,提问作者Arup Rakshit
相关产品推荐
相关产品推荐

