我刚刚将 Ubuntu 16.04 升级到 18.04,我遇到的问题之一是我无法查看任何文件夹和文件,因为当我尝试打开它时 Nautilus 就会崩溃:
$ nautilus
Initializing nautilus-dropbox 2019.02.14
Bus error (core dumped)
但是,如果我运行,它可以正常工作sudo nautilus
。
这让我想到可能是由于某种权限错误。
我如何检查 Nautilus 正在尝试读取哪个文件(如果有)导致其崩溃?
我尝试过的事情
重新安装 nautilus
确保配置文件属于我:
$ sudo chown -R felipe:felipe ~/.config/*
确保 dropbox 配置文件位于
~/.dropbox/
和 下~/.dropbox-dist
属于我列出我家下的所有文件并 chown 所有配置和缓存相关文件。(我无法 chown
/.gvfs
,~/.cache/doc
我收到Function not implemented
错误消息)清除包
nautilus-dropbox
(根本没有安装)purge
dropbox
。同样的错误消息,但没有之前与 dropbox 相关的调试文本:$ nautilus Bus error (core dumped)
- 运行
strace nautilus
进行调试。日志的最后几行是这里
附言nautilus 应用程序在启动时崩溃时的日志消息与我在 cmd 行上运行时收到的消息不同nautilus
。以下是启动崩溃的日志:https://pastebin.com/mVx0E7SE
答案1
我建议nautilus-dropbox
删除
sudo apt purge nautilus-dropbox
如果您需要Dropbox服务,最好从Dropbox网站安装。
https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2019.02.14_amd64.deb
如果没有任何帮助,您可以创建一个新用户并将文件从旧用户复制到新用户。这肯定会有所帮助。
答案2
您已进入运行 GUI 程序所带来的痛苦世界 (tm) root
。避免重复该错误。
详细信息:以“运行方式root
”运行的 GUI 程序会获取各种文件的所有权,然后,当$USER
尝试访问它们时,$USER
无法访问,因为它们归所有root
,并且$USER
没有对这些文件的写访问权限,繁荣。
查看最后几页的行以strace nautilus
了解导致该Bus error
消息的情况,这可能意味着超出范围的内存访问(或超出权限)。
检查一下/var/crash
,可以找到less
崩溃文件。
$HOME
要查找目录中不属于您 的所有文件:
sudo find $HOME \! -user $USER -ls
如果经过检查、深思熟虑和再检查后,您想重新获得所有权:
sudo find $HOME \! -user $USER -print0 | xargs -0 -r sudo chown $(id -u):$(id -g)
答案3
由于这个错误很常见,我分享了我在使用 nautilus 时遇到这种情况时使用的两种方法。希望这对您有所帮助
第一件事:别跑sudo nautilus
如果你这样做了,你首先必须收回 中所有文件的所有权$HOME
。为此,请在主目录中运行以下命令。
sudo chown userhome_directory $USER:$USER
您可以通过运行来验证一切是否正常,ls -l
您应该会看到您拥有该文件。
现在介绍两种对我有用的解决方法:
- 有时只是跟踪器有问题,因此您可以使用 重置它
sudo tracker reset -r
。该-r
选项用于硬重置。(您可以先使用 选项尝试软重置-e
) - 下一个选项更像是一种诊断(您可以跳到最后查看:
尝试创建一个新用户来检查问题是否在会话中仍然存在。如果是,那么我无法提供进一步的帮助。
以新用户身份打开终端并运行(假设用户名)
su username
cd $HOME
从中删除缓存rm -r .cache
并重命名.profile .config .local
不要删除它们!
mv .config .config.old
mv .profile .profile.old
mv .local .local.old
现在您将重新以原始用户身份登录(完成所有初始化步骤后),看看是否可以打开 nautilus。如果答案是是的,然后关闭会话,重新以临时用户身份登录并运行:
su username
cd $HOME
rm -r .config .local .profile
并恢复其中一个重命名的目录(local.old、profile.old、config.old)。例如,查看是否local.old
存在问题,然后mv .local.old local
重新登录会话。如果 nautilus 仍在运行,则尝试使用另一个目录(profile.old、config.old)等等。直到找到有问题的目录。每次都不要忘记删除生成的目录。
一旦找到有问题的那个,就查看内部并尝试找出问题的原因(可能采用相同的方法)。
最快的测试选项:
我个人的问题是由于文件损坏,$HOME/.config/nautilus
因此我只需运行mv .config/nautilus .config/nautilus.old
并重新启动会话,它就可以再次工作。