在 Debian 中运行 Mousepad 时删除所有 D-Bus 痕迹

在 Debian 中运行 Mousepad 时删除所有 D-Bus 痕迹

我正在尝试mousepad在 Debian 10 上重建没有 D-Bus 的 Debian 软件包。

首先,我尝试在不进行任何更改的情况下构建包。

apt-get source mousepad
cd mousepad-0.4.1
dpkg-buildpackage --build=binary --no-sign

这样可行。

现在我想在禁用 D-Bus 的情况下进行构建。我看到 Mousepad 有--disable-dbus构建选项,但我到底应该把它放在哪里呢?

debian/rules文件如下所示:

#!/usr/bin/make -f

export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed -Wl,-O1 -Wl,-z,defs
export DEB_BUILD_MAINT_OPTIONS=hardening=+all

override_dh_missing:
    dh_missing --fail-missing

override_dh_autoreconf:
    mkdir -p m4
    dh_autoreconf

%:
    dh $@

当我在 Debian 10 上启动 Mousepad 时,我在日志中看到以下消息。

dbus-daemon: [session uid=1000 pid=10430] Activating service name='ca.desrt.dconf' requested by ':1.0' (uid=1000 pid=10425 comm="mousepad ")  
dbus-daemon: [session uid=1000 pid=10430] Successfully activated service 'ca.desrt.dconf'

因此,我相信 Debian 10 上的标准包 Mousepad 确实使用了 D-Bus 并且它启动了dbus-launch二进制文件。

答案1

Debian 10mousepad软件包已经在没有 D-Bus 支持的情况下构建;你可以通过查看来验证这一点版本 0.4.1-2 的构建日志amd64并搜索“D-BUS”:

Build Configuration:

* D-BUS support:             no
* Debug Support:             minimum
* Use keyfile backend:       default
* Build with GTK+ 3:         yes

为了明确这一点,您需要覆盖自动配置;将其添加到以下内容的末尾debian/rules

override_dh_auto_configure:
        dh_auto_configure -- --disable-dbus

确保第二行以制表符开头。

您找到的日志消息来自dconf,而不是 Mousepad 本身;要禁用这些,您可以尝试切换到密钥文件设置后端:

override_dh_auto_configure:
        dh_auto_configure -- --without-dbus --enable-keyfile-settings

当您执行此操作时,添加一个changelog条目以确保您的软件包不会dbus从存储库“升级”到相同的启用版本:

dch --local +400cat 'Rebuild without dbus.'
dch -r ignored

(这是dchdevscripts包装中使用的)。

现在构建包:

dpkg-buildpackage -us -uc

并安装它。

这仍然会产生一个(间接)依赖于 的二进制文件libdbus-1.so.3,但那是因为它依赖于libgtk-3.so.0,而它本身又依赖于libatk-bridge-2.0.so.0,而后者又依赖于libdbus-1.so.3

如果你真的想摆脱 D-Bus,你就必须重建at-spi2-atk,以及系统上构建依赖于 的任何其他内容libdbus-1-dev

相关内容