Debian

在 Debian 中執行 Mousepad 時刪除所有 D-Bus 痕跡

  • September 1, 2021

我正在嘗試mousepad在 Debian 10 上重建沒有 D-Bus 的 Debian 軟體包。

首先,我嘗試建構包而不做任何更改。

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

這樣可行。

現在我想在禁用 D-Bus 的情況下建構。我看到滑鼠墊有--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二進製文件。

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

引用自:https://unix.stackexchange.com/questions/667125