0

我正在尝试运行gvfs. 我已经按照Newcomers文档设置了一个工作构建环境,从源代码构建了 gvfs,现在我正在尝试弄清楚如何运行它。

文档中有关于运行应用程序或 GNOME shell 的说明,其中说我需要终止当前实例,然后使用 启动新构建的二进制文件jhbuild run,如下所示:

$ killall gnome-weather
$ jhbuild run gnome-weather

或者,在外壳的情况下,

$ jhbuild run gnome-shell --replace

因为gvfs,我看到它产生了一堆进程(P1 的所有子进程在我的帐户下运行),其中第一个(最低 PID)是gvfsd. 所以我尝试了以下方法:

$ killall gvfsd
$ jhbuild run gvfs

这给了我错误信息:

jhbuild run: Unable to execute the command 'gvfs': [Errno 2] No such file or directory

相反,如果我尝试

$ jhbuild run gvfsd

我得到同样的信息。当我尝试使用上述两种方法中的任何一种时也是如此--replace

因为gvfs它是一个守护进程而不是一个应用程序,所以我搜索了一下,发现了这篇文章,它建议使用启动守护进程

jhbuild run dbus-launch --exit-with-session name-of-daemon

也没有乐趣......无论我使用名称gvfs还是gvfsd名称,我都会收到错误消息

Couldn't exec gvfs: No such file or directory

(报告我在命令中指定的名称)。

这是正确的启动方式gvfs吗?如果不是,那是什么?如果是,我怎样才能找出问题所在?

编辑:显然,我打算修改的代码是gvfs-mtp-volume-monitor二进制文件的一部分——但这里基本上是一样的。如何启动我自己的二进制版本而不是我的操作系统发行版附带的版本?

4

1 回答 1

1

jhbuild run可以以相同的方式用于 gvfs。

gvfsd执行以下操作:

jhbuild run ~/jhbuild/install/libexec/gvfsd -r

-r开关告诉gvfsd替换任何正在运行的版本。如果它已构建并且您没有通过命令行开关禁用它,它gvfsd也会启动。gvfsd-fuse

您还需要更换任何卷监视器(以及您需要的其他进程),例如:

killall gvfs-mtp-volume-monitor
jhbuild run ~/jhbuild/install/libexec/gvfs-mtp-volume-monitor

必须小心通过 dbus 调用的任何内容:

  • 命名空间可能会因版本而异。如果这种情况发生在您的操作系统附带的版本和当前版本之间,则后者将无法工作,除非您调整您的 dbus 配置以反映这一点。
  • 如果 dbus 用于生成进程,它将回退到操作系统附带的二进制文件。同样,您需要修改 dbus 配置(特别是.service条目)以指向您的二进制文件。
于 2016-04-21T13:44:26.170 回答