私はDebianでApacheモジュールを編集しようとしています(技術的にはRaspbian Jessie-Liteでこれをやっています)。おおよそのものに従います。Debian ビルドのガイドライン:
$ mkdir -p ~/src/debian; cd ~/src/debian
$ apt-get source apache2-bin
$ cd apache2-2.4.10
$ debuild -b -uc -us
以前の元のPiでは、ビルドプロセスに約1時間30分かかりました。これはいいですね。一度!しかし、ビルドプロセスが実行していると思うので、make clean
単一のmod_*.cファイルを少し編集してからファイル全体を再構築しようとするので、開発が少し遅くなります!
コマンド-dc
に追加しようとしましたが、何もビルドされませんでした。debuild
再構築を促すためにターゲットmod_*.soファイルを削除しようとしましたが、まだ何もありません!
2016年8月21日更新:debuildコマンドに-ncを追加してもモジュールは再コンパイルされません。以下はコマンドの出力です。
$ debuild -b -uc -us -nc
dpkg-buildpackage -rfakeroot -D -us -uc -b -nc
dpkg-buildpackage: source package apache2
dpkg-buildpackage: source version 2.4.10-10+deb8u5
dpkg-buildpackage: source distribution jessie-security
dpkg-buildpackage: source changed by Salvatore Bonaccorso <[email protected]>
dpkg-source --before-build apache2-2.4.10
dpkg-buildpackage: host architecture armhf
debian/rules build
dh build --parallel --with autotools_dev
fakeroot debian/rules binary
dh binary --parallel --with autotools_dev
dpkg-genchanges -b >../apache2_2.4.10-10+deb8u5_armhf.changes
dpkg-genchanges: binary-only upload (no source code included)
dpkg-source --after-build apache2-2.4.10
dpkg-buildpackage: binary-only upload (no source included)
Now running lintian...
N: 16 tags overridden (1 error, 4 warnings, 11 info)
Finished running lintian.
答え1
コマンドライン-nc
にオプションを追加します。debuild
ただし、これによりビルドシステムやパッケージングに問題が発生する可能性があるため、準備してください。しかし、小さな修正の場合、通常はかなりうまく機能します。
しかし、apache2
ソースパッケージは他の多くのパッケージと同様にdebhelperを使用するため、これだけでは不十分です。これは、debhelper は、バイナリパッケージごとに別々のログファイルに完了したステップの独自のログを保持するためです。これらはで完全に削除することができますdh_clean
。ただし、debhelperが必要なジョブのみを再実行するようにするには、関連するジョブのみを切り取ります。
sed -i '/^dh_auto_build$/Q' debian/apache2-bin.debhelper.log
走る前にdebuild -nc
。
答え2
debianディレクトリにルールファイルがあります。本質的に make ファイルです。クリーニングに関するすべてのディレクティブを削除して追加すると
override_dh_clean:
そして、何も入れないと清掃はまったく行われません。可能性は低いですが、可能であってもビルドの問題が発生する可能性がありますのでご注意ください。別のオプションは、何も変更せずに-jオプションを使用して並列に構築することです。ラズベリーパイのメリットがよくわかりません。
ルールファイルは次のようにする必要があります。これ。
答え3
同様の問題がありました。 Scite Debianパッケージには以下が含まれていますdebian/rules
。
...
BUILD_DATE="$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" "+%b %d %Y %T")"
override CPPFLAGS += -DBUILD_DATE="\"$(BUILD_DATE)\""
%:
dh $@
override_dh_auto_build:
dh_auto_build --sourcedirectory=scintilla/gtk -- GTK3=1 $(BUILD_LUA)
dh_auto_build --sourcedirectory=scite/gtk -- gnomeprefix=/usr GTK3=1 $(BUILD_LUA)
....
デフォルトでは、override_dh_auto_build
makeが呼び出され、変更されたソースファイルが検出され、変更されたファイルのみが再構築されます。ただし、debian/rules
これを設定してBUILD_DATE
実行しても、次のことを行います。
fakeroot debian/rules -j$(nproc) override_dh_auto_build
... BUILD_DATEを定義として使用する一部のcppソースファイルでは失敗します。解決策は、コマンドライン呼び出しでこの変数を明示的に指定することです。
fakeroot debian/rules -j$(nproc) CPPFLAGS+=-DBUILD_DATE="" override_dh_auto_build
...そしてコンパイルが通過します(新しい.debが生成されないため、待つ必要がないという追加のボーナスもあります)。デフォルトでは、これは変更されたファイルで再構築プロセスを再実行するのに役立ち、.debをパッケージ化することなく.so/.exeを提供します。