我正在尝试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
(这是dch
从devscripts
包装中使用的)。
现在构建包:
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
。