上川
___________________________________________________________________________________________________________________________
debhelper の一般的な実行フローにおいてどのファイルがどういう順番でコピーされていくのか, という部 分 に つ い て 追 跡 し て み ま す .
debhelper としては, Debian パッケージのビルドに利用した一時ファイルを削除します.
debian/以下のディレクトリの削除を実施します.
また, 一般的な一時ファイルの削除も実施します.
ここでは, debhelper はほとんどなにもしません. 上流のソースコードに対して Make し, コンパイルす る作業が主です.
カレントディレクトリが正しい場所か, ということを確認します.
ここでは, debhelper を利用して, インストール先のディレクトリを作成し, そのディレクトリにソフト ウェアをインストールします.
dh installdirs で, 必要なディレクトリをdebian/package 以下に作成します.
debian/package ディレクトリににソフトウェアをインストールします. autoconf/automake を利用し ているソフトウェアであれば, make install DESTDIR=$(PWD)/debian/package/のようなコマンドで インストールできます.
ここでは, インストールしたソフトウェアを 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/md5sumにdebian/package 以下にあるファイルの md5sum の結果を記録します.
dh builddeb で dpkg-deb --build コマンドを呼び出し, パッケージをビルドします. debian/package/DEBIANを制御情報として利用し, debian/package/以下をパッケージのデータとして 利用し, ../package XXXX XXX.debなどを作成します.
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 夏_________________________________________________________