运行 构建后的 gvfs

Running gvfs after building

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

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

$ killall gnome-weather
$ jhbuild run gnome-weather

或者,在 shell 的情况下,

$ jhbuild run gnome-shell --replace

对于 gvfs,我看到它生成了一堆进程(我帐户下 P1 运行ning 的所有子进程),其中第一个(最低 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 是一个守护进程而不是一个应用程序,我搜索了一下发现了 this post,这表明使用

启动守护进程
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 二进制文件的一部分——但这里基本上是一样的。如何启动我自己的二进制版本而不是 OS 发行版附带的版本?

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 调用的任何内容:

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