我无法再以普通用户身份运行 Chromium 或 Chrome(尽管我可以以 root 身份运行)。我尝试过重新启动、重新安装两个应用程序、移动 .config 文件、更改 gtk 主题以及以不同(=新)用户身份运行。这些都没有任何区别(即两者仍然拒绝运行)。它们不仅拒绝运行,而且不会产生任何错误消息,也不会超时(即使从命令行运行)。
这里strace
是运行with的输出Chromium
。
我找不到任何明显标记为错误的内容,尽管有一些“丢失文件/目录”消息,如下所示:
open("tls/x86_64/libdbus-1.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory
我现在真的很困惑,不知道还能尝试什么。
[我在 Arch Linux 下运行,以防有什么影响。]
编辑:这里是进行比较的输出nohup sudo strace sudo chromium -user-data-dir=/tmp
(运行它实际上最终导致 Chromium 打开并正常运行。)
答案1
解释
请注意,您的问题与 Chromium 无关,因为此问题可能不仅仅影响 Chromium。您的系统丢失了某些已安装动态库的位置,或者您可能已安装/更新了它们,但更新未正确完成。root
仍然可以运行该应用程序这一事实验证了这一点
验证或重新安装丢失的库
执行这些步骤将验证忘记的库是否已重新安装或已安装。在某些情况下,pacman
可能会触发下面的步骤4,这正是我们想要的。
- 请使用以下命令安装 pkgfile:
pacman -S pkgfile
- 发出以下命令:
pkgfile filename
其中 filename 是丢失文件的名称。例子:
pkgfile libdbus-1.so.3
应该返回libdbus或者tls
请注意,这是 AUR 包,但二进制文件可能已经存在。
- 现在发出一个:
pacman -S libdbus tls
测试
现在尝试从终端重新启动 Chrome/Chromium。如果转储有关丢失文件的错误,请重新发出验证部分中步骤 2 中的命令,替换文件名与新的丢失文件。最后:
- 更新您的动态链接器库缓存通过发出:
ldconfig
上面的步骤 4 会重建缓存,您的用户在尝试启动您启动的应用程序之前正在其中搜索。我们这样做是为了防止pacman
安装丢失/重新安装的软件包不会自动触发它。