debianパッケージの作り方

久しぶりに debian パッケージを作成したので作業メモを公開します

ソースコードの確認

ソースコードは以下の形式であるとします

  • アーカイブ名は hogehoge-0.1.0.tar.xz
  • ./configure して make して make install する形式

(つまり autotools で作成されたものです)

環境変数の確認

debianパッケージには,パッケージ作成者の情報(名前やメールアドレス)が埋め込まれています.これら情報は以下の環境変数でカスタマイズできます

  • DEBEMAIL メールアドレス
  • DEBFULLNAME 名前

なお,これら環境変数が未設定の場合は,環境変数 USER や /etc/hostname の情報が流用されるようです

dh_make の実行

debian のパッケージ用の各種設定ファイルを生成するために,以下の手順で dh_make を実行します

作業ディレクトリにソースコードを展開します

$ tar xvfJ hogehoge-0.1.0.tar.xz

dh_make を実行します

$ cd hogehoge-0.1.0
$ dh_make -f ../hogehoge-0.1.0.tar.xz

"-f"オプションでソースコードのファイル名を指定します

パッケージの種別を聞かれます

Type of package: (single, indep, library, python)
[s/i/l/p]?

アプリケーションならsingle,ライブラリならlibraryを選べばOKです

Are the details correct? [Y/n/q]

確認メッセージが出力されるので,問題がなければ"y"を入力します

微調整

dh_make が成功すると,各種設定ファイルが debian/ ディレクトリ以下に生成されます.設定ファイルの詳細については debian の公式文章や man を見ましょう

最低限知っておくべきことは以下の2点だと思います.

  • debian/control
    • ビルド方法を変えたい場合はこのファイルを編集します
  • debian/changelog
    • パッケージのバージョン情報,distributionなどを変えたい場合は,このファイルを編集します

ビルドの確認

パッケージをビルドしてみます

$ debian/rule clean
$ debian/rule build

なお,ビルドで失敗する場合は

などで,修正を行います.

後者の方法を使うと,たとえば make tests でエラーが出る場合は, DEB_BUILD_OPTIONS=nocheck とすることで checkをskipできます

deb パッケージの作成

$ dpkg-buildpackage -us -uc -rfakeroot

成功すると一つ上のディレクトリに *.deb パッケージが生成されます

念の為に,出来上がったパッケージに含まれるファイルの一覧を確認しましょう

$ dpkg --contents hogehoge*.deb

aptでインストール出来るようにする.

先日書いた記事 自前のDebianリポジトリを作る方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -と組み合わせると,apt で自動インストールできるようになります.