15

私が見つけることができるすべての Debian パッケージングの例は、ユーザーがアップストリーム ビルドから再パッケージ化していることを前提としているため、ソース tarball を展開し、構成し、再構築し、再パッケージ化します。autotools を使用して構築された独自のライブラリのパッケージを構築しようとしています。いくつかの異なるアプローチを試しましたが、最新の試みは次のようになります。

DH_PACKAGE_NAME=`echo $(PACKAGE_NAME) | sed s/_/-/g`
dist-hook:
    cd $(distdir) ; \
    export DEBFULLNAME="Some One" ; \
    export DEBEMAIL="someone@foo.com" ; \
    echo -e "\n" | dh_make --copyright blank --library --native \
        --packagename $(DH_PACKAGE_NAME)
    mv $(distdir)/debian $(distdir)/DEBIAN
    dpkg-deb --build $(distdir)

制御ファイルについてdpkg-deb文句を言います。dh_makes私は解決策がはるかに単純なものであると考えていますか?

4

3 に答える 3

6

パッケージング プロセス全体が、ビルド プロセスをパッケージング プロセスにラップする方向に合理化されます。したがって、パッケージングプロセスをビルドプロセスにラップしようとするのはおそらく簡単ではありませんが、標準的な方法でそれを行う必要はないと思います.

それで:

  • debian パッケージをまったく気にしないかのように、autotools ベースのビルドシステムを作成します。
  • build-system を呼び出して deb-package を作成する単純な debian/rules ファイルを作成します。
  • あなた(またはあなたのパッケージの他のユーザー)がdebをビルドしたい場合は、実行してくださいdpkg-buildpackage
  • あなた (またはあなたのパッケージの他のユーザー) が deb をビルドしたくない場合は、単に実行します./configure && make && make install

これは、2 つの別々の段階 (ビルドとパッケージング) を分離するため、より良い方法です。また、Debian ベースのディストリビューションへの統合をより簡単にすることもできます (たとえば、「実際の」Debian でパッケージを作成することが素晴らしいと判断した場合)。これは、Debian のパッケージング ガイドラインが、これら 2 つのプロセスを分離することについて非常に厳密であるためです (upstream-sources独自の debian/ を出荷するものは眉をひそめられ、アップストリームの debian/ は通常削除されます)

于 2012-10-22T09:02:11.017 に答える
6

残念ながら、ここでの優れた回答のいずれも、私の環境では実際に機能させることができませんでした。dpkg-buildpackage は、ソースからパッケージをビルドするのがあまりにも気まぐれでした。ここに示す dpkg-deb --build アプローチに最終的に落ち着きました

于 2013-10-08T18:07:19.743 に答える
4

autotoolsビルドの一部としてDebianパッケージを作成した例を次に示します。

で、それがシステムにインストールされてconfigure.acいることを確認しdpkg-buildpackageますが、見つからない場合は中止しません。

./configure --enable-debさまざまな理由から、Debianパッケージをビルドするときにユーザーに実行を要求しますが、ほとんどの場合、それは必要ありません。--enable-deb指定されてdpkg-buildpackageいるのに見つからない場合は、中止します。

https://github.com/ptomato/gnome-inform7/blob/master/configure.ac

次に、トップレベルMakefile.amでは、コードは次のようになります。

https://github.com/ptomato/gnome-inform7/blob/master/Makefile.am

最初に呼び出してからmake dist、dist tarballを解凍し、debianディレクトリをそこにコピーすることに注意してください。これは、Debianパッケージガイドによるとベストプラクティスです。彼らは、debianディレクトリは配布tarballではなく、ソース管理にのみあるべきだと言っています。

于 2012-10-10T08:01:25.033 に答える