Skip to main content

Ubuntuパッケージングガイド - Debhelperによるパッケージング

Microsoft Azure OpenDev—June 2017 (六月 2026)

Microsoft Azure OpenDev—June 2017 (六月 2026)
Anonim

Debhelperによるパッケージング

重要

要件: 「一からパッケージ化する」というセクションの要件とdebhelperとdh-make

パッケージャーとして、前のセクションで行ったように、最初からパッケージを作成することはめったにありません。あなたが想像することができるように、 ルール たとえば、ファイルはパッケージに共通です。梱包をより簡単かつ効率的にするために、 debhelper これらの作業を支援します。 DebhelperはPerlスクリプトのセットです(プレフィックスは dh_これはパッケージ構築のプロセスを自動化するものです。これらのスクリプトを使うと、Debianパッケージの構築は非常に簡単になります。

この例では、GNU Helloパッケージをもう一度ビルドしますが、今度はUbuntuとの比較を行います hello-debhelper パッケージ。ここでも、作業するディレクトリを作成します。

mkdir〜/ hello-debhelper cd〜/ hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

次に、Ubuntuソースパッケージを入手してください:

apt-getソースhello-debhelper cd ..

前の例と同様に、最初に行う必要があるのは元の(上流の)タールボールを解凍することです。

tar -xzvf hello-2.1.1.tar.gz

上流のtarballをコピーする代わりに hello_2.1.1.orig.tar.gz 前の例で行ったように、 dh_make 私たちのために仕事をしなさい。あなたがしなければならない唯一のことは、ソースフォルダの名前を変更して、それが - packagenameは小文字です。この場合、tarballを解凍するだけで、正確に名前が付けられたソースディレクトリが生成され、そこで移動することができます:

cd hello-2.1.1

ソースの最初の「デバイアン化」を作成するには dh_make.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_makeはあなたに一連の質問をします:

パッケージのタイプ:単一バイナリ、複数バイナリ、ライブラリ、カーネルモジュールまたはcdbs? s / m / l / k / b s メンテナ名:Captain Packager電子メールアドレス:[email protected]日付:Thu、2006年4月6日10:07:19 -0700パッケージ名:helloバージョン:2.1.1ライセンス:空白パッケージの種類:シングルヒット 確認するために: 入る

あぶない

実行のみ dh_make -e 一度。初めて実行した後に再度実行すると、正常に動作しません。それを変更したい場合や間違えた場合は、ソースディレクトリを削除して、アップストリームのtarballを新たに展開してください。その後、ソースディレクトリに移行して再試行できます。

ランニング dh_make -e 2つのことがあります:

  • 作成する hello_2.1.1.orig.tar.gz 親ディレクトリ内のファイル、
  • 必要な基本ファイルを作成します。 debian / 必要な多くのテンプレートファイル(.ex)が含まれています。

こんにちは プログラムはそれほど複雑ではなく、 "Scratch From Packaging"のセクションで見たように、パッケージングは​​基本ファイル以上のものを必要としません。したがって、 .exex ファイル:

cd debian rm * .ex * .EX

にとって こんにちは、あなたはまたないでしょう

* ライセンス

* Ubuntuパッケージングガイド索引

必要 README.Debian (プログラムのREADMEではなく、特定のDebianの問題のためのREADMEファイル) Dirs (によって使われた dh_installdirs 必要なディレクトリを作成する) ドキュメント (によって使われた dh_installdocs プログラムのマニュアルをインストールする場合)、または 情報 (によって使われた dh_installinfo infoファイルをインストールする)ファイルを デビアン ディレクトリ。これらのファイルの詳細については、「dh_makeのサンプルファイル」を参照してください。

この時点では、 変更履歴, compat, コントロール, 著作権、および ルール のファイル デビアン ディレクトリ。 「ゼロからパッケージ化する」というセクションから、新しいファイルは compatこれは、 debhelper バージョン(この場合は4)が使用されます。

あなたは調整する必要があります 変更履歴この場合、このパッケージの名前が hello-debhelper 単に こんにちは:

hello-debhelper(2.1.1-1)ダッパー;緊急度=低*初期リリース - Captain Packager Thu、2006年4月6日10:07:19 -0700

使用することによって debhelper、私たちが変える必要があるのは コントロール 名前です(代替 こんにちは にとって hello-debhelper)と追加する debhelper(> = 4.0.0) 〜に ビルド依存 ソースパッケージのフィールド。のためのUbuntuパッケージ hello-debhelper 次のようになります。

出典:hello-debhelperセクション:devel優先度:extra Maintainer:Capitan Packager 標準 - バージョン:3.6.1ビルド依存:debhelper(> = 4)パッケージ:hello-debhelperアーキテクチャ:any依存:$ {shlibs:Depends}競合:hello提供:hello置き換え:hello説明:古典的な挨拶と良い例GNU helloプログラムは使い慣れたフレンドリーな挨拶を生み出します。これは、非プログラマが古典的なコンピュータサイエンスツールを使用することを可能にします。 。真剣に、これはDebianパッケージのやり方の例です。これはGNUプロジェクトの「hello world」プログラムのDebian版です(それ自体がGNUプロジェクトの例です)。 。これはhelloパッケージと同じですが、debhelperを使ってdebを作る点が異なります。それが何であるかについてdebhelperを見てください。

私たちは 著作権 ファイルと postinst そして プレーム Ubuntuのスクリプト hello-debhelper 「最初からパッケージ化」というセクション以降は変更されていないため、また、 ルール 私たちはそれを調べることができます。

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules。

最後に見なければならないファイルは、次のとおりです。 ルールここで、 debhelper スクリプトを見ることができます。ザ debhelper バージョン ルール (ルールのセクションからバージョンでは72ラインではなく54ラインです)。

debhelper バージョンは次のようになります:

CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean(#)/ usr-bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq(、$(findstring noopt、$(DEB_BUILD_OPTIONS))) :dh_testdir dh_clean rm -fビルド - $(make)-i distclean install:ビルドdh_clean dh_installdirs $(MAKE)prefix = $(CURDIR)/ debian / $(パッケージ)/ usr mandir = $(CURDIR)/ debian / $ ./configure --prefix = / usr $(MAKE)CC = "$(CURDIR)/ debian / $(package)/ usr / share / info installビルド:/ usr / share / (CC) "CFLAGS =" $(CFLAGS) "

build build binary-indep:install#このパッケージで生成されたアーキテクチャに依存しないファイルはありません。そこにあれがあれば、#ここに作られるでしょう。 binary-arch:install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a変更ログdh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -aバイナリ:binary-indep binary- arch .PHONY:バイナリバイナリアーチバイナリ独立クリーンルート

あなたが正しいディレクトリにいるかどうかをテストするようなタスク(dh_testdir)、ルート権限でパッケージをビルドしていることを確認する(dh_testroot)、ドキュメントをインストールする(dh_installdocs そして dh_installchangelogs)、ビルド後のクリーンアップ(dh_clean)は自動的に処理されます。多くのパッケージは こんにちは 持ってる ルール ファイルは大きくないので debhelper スクリプトはほとんどのタスクを処理します。完全なリストについては debhelper スクリプトについては、「List of debhelper スクリプト "と呼ばれています。 おとこ ページ。上記で使用された各ヘルパースクリプトのマニュアルページ(よく書かれていて長すぎないもの)を読むのは便利な練習です ルール ファイル。