4 debhelper 論その 3 Debhelper の処理の流れ.

上川      
___________________________________________________________________________________________________________________________

4.1 debhelper の実行フロー

debhelper の一般的な実行フローにおいてどのファイルがどういう順番でコピーされていくのか, という部 分 に つ い て 追 跡 し て み ま す .

4.1.1 debian/rules clean

debhelper としては, Debian パッケージのビルドに利用した一時ファイルを削除します.

debian/以下のディレクトリの削除を実施します.

また, 一般的な一時ファイルの削除も実施します.

4.1.2 debian/rules build

ここでは, debhelper はほとんどなにもしません. 上流のソースコードに対して Make し, コンパイルす る作業が主です.

カレントディレクトリが正しい場所か, ということを確認します.

4.1.3 debian/rules install

ここでは, debhelper を利用して, インストール先のディレクトリを作成し, そのディレクトリにソフト ウェアをインストールします.

dh installdirs で, 必要なディレクトリをdebian/package 以下に作成します.

debian/package ディレクトリににソフトウェアをインストールします. autoconf/automake を利用し ているソフトウェアであれば, make install DESTDIR=$(PWD)/debian/package/のようなコマンドで インストールできます.

4.1.4 debian/rules binary

ここでは, インストールしたソフトウェアを Debian パッケージにするための最終的な微調整を実施し ます.

dh testroot root であることを確認します.

dh installdocs でドキュメントファイルをdebian/package/usr/share/doc/XXX にコピーし ます.

dh installexamples でドキュメントファイルをdebian/package/usr/share/doc/examples/XXX にコ ピーします.

dh installman debian/package/usr/share/man/manX/XXX.X にコピーします.

dh link で必要なシンボリックリンクを作成します.

dh strip debian/package/usr/bin/XXX debian/package/usr/lib/XXX に存在している実行ファ イルのデバッグ情報を strip します.

dh compress debian/package/usr/share/doc/XXX debian/package/usr/share/man/manX/XXX.X などにある, ポリシーで gzip 圧縮しておくべきとされているファイルを gzip 圧縮します.

dh fixperms debian/package/usr/share/doc 以下の実行権限をはずしたりして, アクセス権を修 正します.

dh installdeb で制御ファイルを DEBIAN ディレクトリーにコピーします. debian/package.XXX debian/package/DEBIAN/XXX にコピーします. ここで対象となるのが, 下記です.

debian/package/etc/以下にファイルがある場合は, debian/package/DEBIAN/conffiles に追記されま *5 postinst/preinst/postrm/prerm に関しては, #DEBHELPER#と記述されてい る部分は debian/package.XXX.debhelper ファイルの中身で置換されま *6 .

dh shlibdeps で, 共有ライブラリの依存関係を解析します. debian/package 以下にある実行ファイル と共有ライブラリの一覧を dpkg-shlibdeps に渡します. debian/package.substvarsに出力させま す. 内容としては, 依存するパッケージの一覧を shlibs:Depends 変数の定義として出力し ます.

dh gencontrol は, dpkg-gencontrol コマンドを利用します. debian/changelogファイルを解析し, バージョンを調べ, debian/controlのパッケージ部分に対して, debian/package.substvarsにある変 数置換を実施し, debian/package/DEBIAN/control を生成します. また, Installed-Size 情報を du を実 行して作成します.

--- /tmp/control        2005-04-08 07:49:13.236346992 +0900
+++ debian/whizzytex/DEBIAN/control     2005-04-08 06:17:20.000000000 +0900
@@ -1,6 +1,11 @@
 Package: whizzytex
+Version: 1.2.2-2
+Section: tex
+Priority: optional
 Architecture: all
 Depends: emacsen, tetex-bin (>= 2.0.2-17), advi | xdvi | gv
+Installed-Size: 584
+Maintainer: Junichi Uekawa <dancer@debian.org>
 Description: a WYSIWYG emacs environment for LaTeX
  WhizzyTeX is an emacs minor mode for incrementally
  (TeXing and) previewing a LaTeX file while editing at real-time.

dh md5sums debian/package/DEBIAN/md5sumdebian/package 以下にあるファイルの md5sum の結果を記録します.

dh builddeb dpkg-deb --build コマンドを呼び出し, パッケージをビルドします. debian/package/DEBIANを制御情報として利用し, debian/package/以下をパッケージのデータとして 利用し, ../package XXXX XXX.debなどを作成します.

4.1.5 参考資料

debhelper で作成される debian/rules ファイルを参考のため載せておきます.

#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1




CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif

configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.

touch configure-stamp


build: build-stamp

build-stamp: configure-stamp
dh_testdir

# Add here commands to compile the package.
$(MAKE)
#docbook-to-man debian/test-source.sgml > test-source.1

touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp

# Add here commands to clean up after the build process.
-$(MAKE) clean

dh_clean

install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs

# Add here commands to install the package into debian/test-source.
$(MAKE) install DESTDIR=$(CURDIR)/debian/test-source


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_python
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

東京エリア Debian 勉強会 2005 _________________________________________________________

PIC