如何修复Xubuntu 14.04 LTS 64上无法正常工作的Dropbox图标?


92

几个小时前,Xubuntu 14.04中的保管箱图标停止工作。图标为黑色,红色斜线为零。我无法单击它来调出保管箱菜单。我相信在此之前有一个更新。我重新安装然后清除了保管箱。我什至删除了所有关联的文件和隐藏的文件夹,然后再次安装它们。仍然,该图标不起作用。试图停止并启动服务……再也没有。


您可以随时降级Dropbox。我在3.12.5上,没有图标问题。我希望Dropbox不会很快自动更新。但是,也有一种方法可以阻止这种情况。forums.linuxmint.com/... dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-3.12.5.tar.gz
jbrock

5
我已将此错误以及所有必要的详细信息报告给Dropbox。在使用Linux Mint之前,我遇到过类似的问题。他们推迟升级我的Dropbox,直到修复了错误的版本为止。我是付费用户,他们说我应该在24-48小时内收到答复。如果他们提供关键信息答复,我一定会在这里发布。
jbrock

您可能无需先卸载就可以降级。这可能会避免对所有Dropbox文件进行完全重新索引。它可能会解决图标问题,直到修复了错误,然后他们又推出了该更新。
jbrock '16

@jbrock,我们该怎么做?
marktani

1
此错误会在Ubuntu 17.10上重新出现,并且无法正常工作
Scott Stensland

Answers:


97

刚在我的Xubuntu 15.10上看到此错误,图标已损坏,无法打开菜单。我认为该错误已连接到Dropbox,开始将“指示器区域”用作其托盘图标而不是“通知区域”,并且sudo修复正好起作用,因为某些环境变量未在sudo会话中使用。

至少对我来说,这个问题可以通过运行来解决:

dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start

这似乎将图标移回了“通知区域”,该区域同时修复了图标和菜单。这样,守护程序将以普通用户而不是root用户身份运行。

编辑:如果您基于此修复程序为Dropbox创建自己的启动脚本,请记住使用“ dropbox autostart n”命令禁用默认启动脚本(感谢StockBreak,今天早上为我节省了一些时间)。

EDIT2:...由于某种原因,我仍然必须从Dropbox GUI中删除自动启动设置(在系统启动时单击图标>>首选项>>启动Dropbox)。希望它在此之后保持不变。

编辑:要在每次会话启动时运行的脚本中实现此修复,请尝试以下解决方案:https : //askubuntu.com/a/795864/496493


这个kk78的解决方法也对我有用,为普通用户提供了托盘图标。我没有为此尝试过StockBreak的桌面条目,但可能也可以。取而代之的是,我将#!/ bin / bash行和kk78的行作为具有可执行文件属性的“ dropboxicon.sh”文本文件中的简单shell脚本,然后右键单击>“操作”>“在Konsole中运行”,直到发现错误为止。固定。此解决方法效果很好。谢谢。
Juan M. Gonzalez

Xubuntu 14.04 64位LTS-确认了相同的确切问题,确认了上述一轮工作可以解决问题(全部都是暂时的)。
demaniak

在Kubuntu 14.04中遇到了相同的问题,在这里它也解决了该问题!
Daniel Fischer

最终也可用于16.04,但是我必须安装另一个indicator-applet面板(除了已经可用和present的面板之外indicator-applet-complete),否则就没有出现保管箱图标。这是在新安装的Ubuntu 16.04 x86(在非常老的东芝笔记本电脑上)上运行的,该gnome-fallback会话与metacity
Avio

2
在17.04上,您可以尝试下面的“新解决方法”,即dropbox stop && dbus-launch dropbox start。我一直在我的笔记本电脑(目前为Xubuntu 17.04)上使用它,没有遇到任何问题。如果Dropbox修复此问题,那就太好了……
kk78,2017年

83

File C.提出的一种新的解决方法“ dbus-launch dropbox start -i”

用户报告以下改编版本至少可以在Linux发行版Fedora,Gentoo,Kubuntu,Linux Mint,openSUSE,Slackware,Ubuntu,Xubuntu ...以及桌面环境Cinnamon,KDE 4,KDE 5,Mate,Unity, Xfce ...

与以前的DBUS_SESSION_BUS_ADDRESS解决方法相比,这种新的dbus启动解决方法似乎工作更快,可靠性更高,并且在更多情况下。

作为命令行:

dropbox stop && dbus-launch dropbox start

或作为shell脚本文件:

#!/bin/bash

dropbox stop && dbus-launch dropbox start

16
命令行命令效果很好,但仅适用于该会话。要使此修复永久生效,应在运行此命令后转到Dropbox指示器> Preferences ...>取消选中系统启动时的Start Dropbox。然后添加dbus-launch dropbox start到会话和启动>应用程序自动启动。这对我在Xubuntu 16.04 LTS上非常有效。
Ads20000 '16

3
这是让我在Ubuntu Mint xenial 16.04 LTS中运行的唯一方法。
allebone

3
令人讨厌的是我无法编辑我的评论。应用程序自动启动命令可能应该是dbus-launch dropbox start -i(此命令适用于Ubuntu(GNOME)Flashback 16.10,idk是否也适用于Xubuntu)
Ads20000

3
这在lubuntu 16.4中工作
jumpnett

2
DBUS_SESSION_BUS_ADDRESS=""解决方案对我没有任何帮助,但此解决方案有效!运行Linux Mint 17.3。
Sampo'7

27

与kk78提出的解决方案不同,以下方法可以彻底解决该问题:

  1. 关闭Dropbox。

  2. /usr/bin/dropbox使用文本编辑器(以管理员身份)打开文件。例如在终端运行

    gksudo gedit /usr/bin/dropbox
    
  3. 之后创建新行,import os并添加以下内容:

    os.environ['DBUS_SESSION_BUS_ADDRESS'] = ""
  4. 保存并重启

现在,Dropbox可以正常工作:

GIF教程


完成您的答案,如何添加行,为什么行得通。
DnrDevil

DnrDevil,它和DBUS_SESSION_BUS_ADDRESS =“” dropbox start一样好,只是更直接的方式。
darl

3
@DnrDevil每次有人回答需要编辑文本文件的问题时,写一篇关于如何编辑文本文件的新解释是很愚蠢的。
blujay

2
@darl这是一个有趣的想法,但是我通常建议不要在中编辑内容/usr/bin。这是Dropbox中的一个错误,最终应予以修复,而您的此变通办法可能会破坏Dropbox的修复,留下一个非常困惑的用户。最好使用变通办法,例如编辑启动Dropbox的自动启动文件。
blujay

@blujay我完全同意,除非您向新用户回答问题,否则他们可能根本不会使用终端机
DnrDevil

22

感谢kk78的解决方案,我完成了这个完整的解决方法(另请参见我的其他文章):

复制*了我的桌面条目:

cp ~/.config/autostart/dropbox.desktop ~/.config/autostart/start_dropbox.desktop

像这样更改条目(请注意env单词):

[Desktop Entry]
Name=Dropbox
GenericName=File Synchronizer
Comment=Sync your files across computers and to the web
#Exec=dropbox start -i
Exec=env DBUS_SESSION_BUS_ADDRESS="" dropbox start -i
Terminal=false
Type=Application
Icon=dropbox
Categories=Network;FileTransfer;
StartupNotify=false

并禁用Dropbox的自动启动功能:

dropbox autostart n

*您不能只编辑它,因为Dropbox每次登录时都会替换文件。


1
这是对我有用的,但为了澄清:您编辑了start_dropbox.desktop文件(使用鼠标垫或其他工具)
dez93_2000

另一个注意事项:在menulibre(或菜单系统)中,您需要将命令条目从“ dropbox start -i”更改为“ env DBUS_SESSION_BUS_ADDRESS =“” dropbox start -i“,以便从菜单启动时运行正确的命令。
dez93_2000

8

[这是我不建议使用的早期答案,现在继续研究此错误和相关的错误;有关更新和更好的解决方法,而又没有sudo的文件所有权更改/恢复带来的不便,请改用kk78的答案,或"dropbox stop && dbus-launch dropbox start"在其他答案中使用命令行]

此Dropbox托盘图标错误似乎与权限有关。

在修复之前,可以从命令行(Konsole,Terminal等)使用临时解决方法,目前,这种方法适用于Xubuntu,Linux Mint等用户:

dropbox stop
sudo dropbox start

注意:

关于“ sudo”,以root身份运行Dropbox克服了权限错误,并且托盘图标再次正常工作。

但是,它具有次要的作用,即在隐式文件夹〜/ .dropbox /中拥有一些文件,而不是用户(现在可以由root拥有)(如通过Dolphin这样的文件管理器可以看到),因此具有root密码启动Dropbox时需要输入。

可以使用临时解决方法来使Dropbox托盘图标在Linux上完全正常运行,直到有希望通过下一次更新修复该错误为止,但是,如果该修复程序无法恢复正确的权限,则在这种情况下,可以在该错误之后迅速解决该问题。解决方法是:

sudo dropbox stop
sudo chown -R USER:GROUP /home/USER/.dropbox
dropbox start

当然,替换USER和GROUP。例如,如果您是Unix,UTF-8,Go语言等的共同创建者;),它将类似于:

sudo chown -R ken:ken /home/ken/.dropbox

更新:

抱歉,我刚刚看到一些使此临时解决方案仍然可行但不太方便的东西:不仅隐藏的〜/ .dropbox文件夹中的那些已经提及的文件都归root所有,而且从Dropbox服务器下载到Dropbox的文件也都拥有在以root用户身份运行Dropbox的计算机上的文件夹(通常是〜/ Dropbox)。

因此,在错误修复之前,我仍将使用此变通方法,但是,如果要使用它,则必须将权限恢复行也应用于Dropbox文件夹,至少在我们要编辑下载的文档时。例如:

sudo chown -R USER:GROUP /home/USER/Dropbox

为了节省时间并在启动计算机时应用它,我们可以将其包含在简单的Shell脚本中,例如,具有dropping.sh文本文件的可执行文件属性,可以从命令行或通过鼠标单击来运行:

#!/bin/bash

dropbox stop
sudo dropbox start
sudo chown -R USER:GROUP /home/USER/Dropbox

简单的替代解决方法:

如果处理文件所有权的更改和恢复等非常不便,则可以代替最前面的所有步骤,最简单的选择可能是仅等待Dropbox错误修复而无需使用图标,并不时检查一下Dropbox的状态使用命令行:

dropbox status

结果,如果Dropbox正在运行,则大多数时间将是:“最新”

稍后,可能您可以使用向上箭头从可以保持打开状态的小型命令行窗口再次快速运行此行。

只需键入以下内容,即可查看其他命令行帮助:

dropbox

如已经建议的那样,要停止使用其他解决方法(sudo),恢复普通文件的所有权并以普通用户(而非root)的身份再次开始运行Dropbox,请仅使用一次(替换USER和GROUP):

sudo dropbox stop
sudo chown -R USER:GROUP /home/USER/Dropbox
sudo chown -R USER:GROUP /home/USER/.dropbox
sudo chown -R USER:GROUP /home/USER/.dbus
dropbox start

新更新:

请参阅kk78对这个问题的回答,其解决方法比我的好得多,并且使用Dropbox托盘图标作为普通用户,而不是root用户。它至少适用于Xubuntu和Linux Mint。

它也可以用作shell脚本:

#!/bin/bash

dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start

3
此变通办法在我的Xubuntu 14.04 64中起作用。大家请注意“ sudo”。谢谢Juan M. Gonzalez
user505080 '16

但是,我们必须记住,我建议仅在这几天内以root身份运行是一个非常临时的解决方法,真正的解决方案应该来自Dropbox的快速错误修复。
Juan M. Gonzalez

在实践中,我发现没有图标的简单“收件箱状态”解决方法比其他带有图标的“ sudo保管箱启动”解决方法更好,更方便。
Juan M. Gonzalez

新增内容:请参见kk78的答案,其解决方法比我的要好得多。
Juan M. Gonzalez

4

我决定使用此脚本而不是小图标,而不是使用较旧的版本或烦恼其他方面。它将命令的输出dropbox status直接放在面板中。但是,当它正在同步或最新时,会出现一个小的复选标记或同步字符。

通过在终端中粘贴以下内容来安装通用监视器:

sudo apt-get install xfce4-genmon-plugin

设置以下脚本以使用“通用监视器”面板插件运行。我没有Label并将其设置为每五秒钟运行一次。

#!/bin/bash

status=$(dropbox status)
if [ "$status" = "Up to date" ]; then
    echo "✔"
elif [[ "$status" == "Syncing"* ]] || [[ "$status" == "Indexing"* ]]  || [[ "$status" == "Downloading"* ]]; then
    echo "⟲"
else
    echo "$status"
fi

您需要运行以下命令,以便在登录时不显示密码提示(无论如何都可以忽略):

sudo chown -R USER:GROUP ~/.dropbox

USER:GROUP 通常是您的用户名两次。

当我需要更改设置时,我将使用启动Dropbox sudo来更改设置。如本页所述,sudo通过启动带有,可以显示小图标和菜单。

此外,如果愿意,您可以回显自己的Dropbox图标或图像。如果您的Dropbox命令行不起作用,则可以在此处下载Dropbox python脚本。(就我而言,我没有在Dropbox python脚本名称中使用* .py扩展名。)


挺酷的,从来不知道我能做到这一点!对于许多其他事情很有用。干杯。
sharky

很酷!感谢您分享。我不了解通用监视器。
blujay

为什么bash -c而不仅仅是dropbox status
jarno

面板上还显示红色图标吗?
jarno '16

@jarno我有一个微弱的记忆,起初它仅通过放置不起作用$(dropbox status)。但是,由于某些原因,它$(bash -c 'dropbox status')确实起作用了。$(dropbox status)现在可以使用了,因此我已经相应地更新了脚本。谢谢你让我知道。
jbrock

3

~/.dropbox-dist/dropboxd按如下所示修改了脚本,然后重新启动并恢复了图标。由于此文件被更新覆盖,因此我认为如果他们在下一个更新中解决了问题,则无需撤消任何操作。

#!/bin/sh
export DBUS_SESSION_BUS_ADDRESS=""
PAR=$(dirname "$(readlink -f "$0")")
exec "$PAR/dropbox-lnx.x86-3.14.7/dropboxd" "$@"

更新:当我在笔记本电脑上尝试此操作时,它一开始无法正常工作。我意识到我遇到了与“复制”相同的问题,即在执行正式启动文件之前,XFCE4会话保存正在启动保管箱。我修改了〜/ .profile文件以擦除其中的任何* .state和* session *文件~./cache/sessions

rm -f /home/jhm/.cache/sessions/*.state
rm -f /home/jhm/.cache/sessions/*session*

更新#2:所以现在使用版本3.18.1,问题仍然存在。我知道,因为正如我所预料的那样,~/.dropbox-dist/dropboxd每次更新都会覆盖脚本,从而导致问题每次都返回。上面的修复在Xubuntu 14.04引导上可靠地起作用,前提是会话还原不能直接启动二进制文件:

/home/<user>/.dropbox-dist/dropbox-lnx.x86-3.18.1/dropbox

使用“系统/会话和启动”,在“会话”选项卡下,我可以看到该二进制文件是可见的,如果不删除* session和* state文件,它将重新启动。

作为实验,我尝试在会话跟踪开始之前使用Upstart启动Dropbox。首先,我创建了/home/jhm/.init文件夹,然后将一个名为的文件dropbox.conf添加到其中,其中包含:

description "Dropbox"
start on desktop-start
expect daemon
exec /usr/bin/dropbox start

我在Dell Laptop Xubuntu 14.04上使用了这种方法,该程序现在已从会话跟踪中隐藏了,因此不需要删除文件。

由于dbus-launch创建了新的专用DBUS会话总线,DropBox将永远找不到该appindicator服务,因为它将是该总线上的唯一进程(DBUS除外),因此与export DBUS_SESSION_BUS_ADDRESS=""这两种解决方案相同,这两种解决方案都会导致DropBox退回到系统任务栏API。在“ XFCE面板项目”选项卡中,这称为“通知区域”。确保尚未将其从面板中删除。

使用d-feetdbus-monitor,我发现问题是DropBox无法在不存在的'/ MenuBar'DBUS路径上实现'Menu'接口。DBUS球迷可以探索org.kde.StatusNotifierWatcherd-feet发现更多。由于Dropbox二进制文件负责支持这些接口,因此无需等待下一次更新。顺便说一句,所有需要的QT5.5库都包含在程序中。无需下载开发包。

我还发现,只有GUI对话框似乎可以可靠地阻止启动文件的重新安装。一旦取消选中“在系统启动时启动DropBox”,它将保持这种状态。


1
上面的解决方法对我所有的机器都有效。谢谢。
rstreeter78 '16

这是解决此问题的sed -i.bak '/#!\/bin\/sh/a export DBUS_SESSION_BUS_ADDRESS=""' ~/.dropbox-dist/dropboxd; dropbox stop && dropbox start
单线工具

我猜这也可以在Xubuntu 16.04中应用,但是默认情况下它使用systemd而不是upstart。
jarno '16

我的回答。令我惊讶的是,即使它使用systemd而不是upstart,init脚本也可以在Xubuntu 16.04中使用。
jarno '16

我在某处读到,在推出systemd之后,新贵仍将用于用户模式服务,这将解释该脚本为何仍然有效。服务列表在 /usr/share/upstart/sessions
user411778 '16

2

我运行相同的操作系统Xubuntu 14.04 x64,并且看到此图标对单击无响应(无菜单):

Xfce4-Panel上的Dropbox图标

3.14.5的发行说明(于2016年2月9日到来并已安装在我的计算机上)指出,Dropbox已更新为在Linux上使用Qt 5.5。

运行以下命令将在我的计算机上提供Qt版本:

~$ qmake -v
QMake version 3.0
Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu

因此,我按照此处的说明升级到了Qt 5.5

这些是我采取的步骤:

sudo apt-add-repository ppa:beineri/opt-qt551-trusty
sudo apt-get update
sudo apt-get install qt-latest qtcreator-latest

然后,在其中设置以下内容~/.bashrc并重新启动会话:

export QT_SELECT=opt-qt55

我确认我已经安装了Qt 5.5:

~$ qmake -v
QMake version 3.0
Using Qt version 5.5.1 in /opt/qt55/lib

然后,重新安装Dropbox并重新启动会话:

sudo apt-get remove dropbox
sudo apt-get install nautilus-dropbox

不幸的是,这行不通,并且托盘图标显示相同。

然后,我想知道是否可以从Xfce4-面板中删除指标插件。

  1. 删除指标插件
  2. ~? dropbox stop && dropbox start

然后,突然,一个通配的保管箱图标出现在通知面板中!

出现保管箱图标

似乎Dropbox图标喜欢驻留在“通知面板”中,而不喜欢驻留在指示器插件中。

但是...我喜欢指示器插件,因为它为我提供了电子邮件警报和音量控制。因此,我将其重新添加到面板中。到现在为止还挺好。

但是,在重新启动会话后,我又得到了这个废话:

Xfce4-Panel上的Dropbox图标

所以,现在我被卡住了。我不知道如何使Dropbox图标出现在“通知面板”而不是“指示器面板”中,并且我确定每次登录时都不会重复这些步骤!


1
如您所说,“似乎Dropbox图标喜欢驻留在通知面板中,而不是指示器插件。” 正如kk78的变通方法所示,我认为您的做法正确。
Juan M. Gonzalez

1
删除指标插件对我来说很关键-仅dropbox start与之一起运行DBUS_SESSION_BUS_ADDRESS=""不足以使Dropbox脱离指标插件。
BSchlinker '16

@BSchlinker也许dropbox在运行之前已经在运行DBUS_SESSION_BUS_ADDRESS=""吗?
jarno

2

这样就解决了。

在“ Dropbox”菜单上,转到“首选项”。取消选择“系统启动时启动Dropbox”

转到会话和启动>应用程序自动启动,然后添加以下启动项:

bash -c 'export DBUS_SESSION_BUS_ADDRESS="" && dropbox start -i'

更简单:env DBUS_SESSION_BUS_ADDRESS="" dropbox start -i
blujay 2016年

1
@blujay甚至DBUS_SESSION_BUS_ADDRESS= dropbox start -i。但是有人报告说dbus-launch dropbox start -i效果更好。
jarno

@jarno并非每个人都使用Bash样式的shell。例如,我将Fish用作交互式外壳,并且未使用name=value语法设置变量,因此必须使用env。使用env无处不在。
blujay

0

(在xbuntu 17.04上测试)

要使用正确的托盘图标重新启动保管箱: dropbox stop && dbus-launch dropbox start

Dropbox的替换自动启动文件~/.config/autostart/dropbox.desktop上启动/usr/share/applications/dropbox.desktop。要使此修复程序永久生效,请修改后者:

sudo sed -i 's/Exec=dropbox start -i/Exec=dbus-launch dropbox start -i/' /usr/share/applications/dropbox.desktop

您可能还需要修改主菜单启动器:

sed 's/Exec=dropbox start -i/Exec=dbus-launch dropbox start -i/' ~/.local/share/applications/dropbox.desktop

0

这本身并不是答案,但是鉴于我们是一个足够大的社区: HERE是指向保管箱电子邮件客户支持页面的直接链接。如果我们都问他们这个问题,也许他们会自己解决。


0

由于我的保管箱是一个启动应用程序,请搜索Dash,Startup Application然后在Dropobox条目上点击编辑并替换

投寄箱启动-i

env XDG_CURRENT_DESKTOP =统一保管箱开始-i

参与问题:alt-F2然后输入r打回车

适用于Ubuntu 18.10及更高版本

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.