![如何使用已运行的配置文件启动 Firefox snap](https://linux22.com/image/1030108/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%B7%B2%E8%BF%90%E8%A1%8C%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%90%AF%E5%8A%A8%20Firefox%20snap.png)
在全新安装的 Ubuntu 22.04 LTS(Xubuntu)上,使用现在的默认方法从 Snap 安装 Firefox 113.0.2,但 Firefox 出现故障。
当我尝试使用已在运行的配置文件启动 Firefox 时,出现错误:
“Firefox 已在运行,但无响应。要使用 Firefox,您必须先关闭现有的 Firefox 进程、重启设备或使用其他配置文件。”
Ubuntu 20.04(默认安装通过 apt 管理)不存在此问题。
使用 20.04 版 Firefox,作为一名知识工作者,我每天的工作流程包括使用已在其他工作区上运行的配置文件启动新的 Firefox 实例。
现在,当我从终端运行 Firefox 时,出现以下错误:
._. firefox -P default "https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1951491"
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
关于此事的许多其他报告表明,问题有时可能是环境变量$DBUS_SESSION_BUS_ADDRESS
未设置,而修复方法可能只需将此 envar 设置为 即可unix:path=/run/user/$DBUS_SESSION_BUS_ADDRESS/bus
。例如,请参阅这里,这里和这里。
我的 $DBUS_SESSION_BUS_ADDRESS 似乎已设置。
._. echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1000/bus
._. echo $XDG_RUNTIME_DIR
/run/user/1000
但 systemd 认为不是。
._. sudo systemd --user
Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.
有关该问题的报告表明 systemd 可能应对此负责。
但是当调用 Firefox 时,syslog 似乎没有报告任何问题。它以 uid 1000 运行。
当我运行时SNAPD_DEBUG=1 snap run firefox --profile-manager
,Snap 还报告它正在使用 uid 1000,但似乎有错误:
ATTENTION: default value of option mesa_glthread overridden by environment.
我该怎么做才能让 Firefox 在 Ubuntu 22.04 LTS 上的默认 Snap 安装中正常工作,并使用已经在运行的配置文件启动新窗口/实例?
我不能简单地关闭其他正在运行的 Firefox 窗口/实例,因为这会破坏我的工作流程。事实上,我通常会在多个工作区中使用相同的配置文件打开多个窗口。
关闭另一个实例将使我试图实现的目标落空使用已经打开的配置文件启动 Firefox(感谢@raffa 的建议)。
我以前习惯使用已经在运行的配置文件多次启动 Firefox,无论是在同一个正在运行的实例的新窗口中启动,还是在新窗口和新实例中启动,对我来说都没有区别:以前它可以工作;现在却不行了。
答案1
sudo systemd --user
以用户身份调用root
(不是你当前的用户调用sudo
)没有实际root
登录,因此,这样调用时,没有现有的用户运行时环境(包括运行时目录)...因此,您看到的错误即:
Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.
是完全正常的,并不反映您当前正在运行的调用用户...什么反映了您当前正在运行的调用用户的当前状态,虽然在我看来,仅仅测试用户运行时目录的可用性是一个奇怪且糟糕的想法(准备重新启动系统,否则不要尝试此操作,因为您的系统将变得不稳定), 是:
systemd --user
在您的情况下,这应该可以很好地启动,从而排除您对用户运行时目录或运行时环境的可用性的担忧。
请参见这个相关答案了解更多信息。
也就是说,您看到的消息是:
“Firefox 已在运行,但无响应。要使用 Firefox,您必须先关闭现有的 Firefox 进程、重启设备或使用其他配置文件。”
实际上就是它的意思,应该按照它建议的那样解决......不仅限于 Firefox,系统和用户服务如果响应则需要时间退出,并且快速/立即尝试启动另一个实例可能会导致这样的错误......对于安装了 SNAP 的应用程序,从这个意义上说,它甚至更加复杂。
否则,您可以强制终止所有正在运行的 Firefox 进程,例如:
pkill -9 firefox
如果您的 SNAP Firefox 安装没有问题,那么您应该可以立即启动一个新的 Firefox 实例,或者尝试修复您的 SNAP Firefox 安装。
我该怎么做才能让 Firefox 在 Ubuntu 22.04 LTS 上的默认 Snap 安装中正常运行,并使用已经在运行的配置文件启动新实例?
据我所知,不幸的是,没有什么...... Firefox 配置文件已被锁定(两个文件lock
(符号链接),.parentlock
并将被放置在配置文件的目录中以用于此目的),以便其他 Firefox 进程无法使用它,从而避免不可避免的配置文件数据损坏......没有简单的(或者其他) 解决这个问题... Mozilla 规则... Mozilla 支持上看到的那些锁定文件是罪魁祸首,它们将阻止新的 Firefox 实例使用在其主目录中包含它们的配置文件运行,即使它们是在 Firefox 非正常关闭事件后留在那里的,即使该配置文件被移动到另一台机器...请参见例如:
然而,我可能误解了您的要求,事实上 SNAP 应用程序确实与通过 APT 安装的 DEB 包不同,因为它们在隔离的环境中运行(沙盒化)环境实际上会改变权限并更改其进程的范围...取决于这是否可能是罪魁祸首,有几个值得尝试的实例和配置文件相关标志...特别是-new-instance
和-no-remote
标志...请查看它们(或其他)可以提供帮助和参考: