[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:01133] Re: missing package
やなぎはらです。
わたしが、さぼっているあいだに、
立派な パッケージングの HOW TO ができたようで、
うれしいです。
From: mtakeshi@xxxxxxxxxxxxxxx
Message-ID: <199706071838.DAA21870@xxxxxxxxxxxxxxx>
mtakeshi> たけし@mail.at-m.or.jpです
mtakeshi>
mtakeshi> ..deb の作り方(簡易版)
mtakeshi>
mtakeshi> ===================
mtakeshi> 目的:
mtakeshi> ===================
mtakeshi> ソースファイルを元に、debian パッケージすると以下のものが出来上がります。
mtakeshi> これが最終目的です。
mtakeshi>
mtakeshi> packagename-ver/ ソース、コンパイル
mtakeshi> packagename-ver/debian deb用のファイルのおき場所。
mtakeshi> deb-make すると自動的に作られる
mtakeshi> packagename-ver/debian/tmp/{usr,etc,..} 仮のインストール先
mtakeshi> この下にインストールされた後、
mtakeshi> *.deb file が作られる。自動。
mtakeshi> packagename_ver-debver.diff.gz
mtakeshi> packagename_ver-debver.dsc
mtakeshi> packagename_ver-debver_arch.changes
mtakeshi> packagename_ver-debver_arch.deb
mtakeshi> packagename_ver.orig.tar.gz
mtakeshi>
mtakeshi> (例 : ppp-2.3/ ppp_2.3-1.diff.gz ppp_2.3-1.dsc ,..... )
mtakeshi> ( debver は、パッケージのバージョン。
mtakeshi> ver は、プログラム自体のバージョン
mtakeshi> arch は、i386 など、アーキテクチャを示す
mtakeshi> )
mtakeshi>
mtakeshi>
mtakeshi> ===================
mtakeshi> 0.用意するもの
mtakeshi> ===================
mtakeshi>
mtakeshi> .deb にしたい物のソース (ex. program.tar.gz)
mtakeshi>
mtakeshi> 開発パッケージ (make, gcc, perl, dpkg, m4, patch, ...)
mtakeshi> PGP と自分の key
mtakeshi>
mtakeshi> ===================
mtakeshi> 1.ソースの展開
mtakeshi> ===================
mtakeshi>
mtakeshi> 自分の作業 directory で、ソースを展開します。(ex. program.tar.gz)
mtakeshi> 私の場合、
mtakeshi>
mtakeshi> $ su <=== "su - " ではありません。"su" です。(後述)
su は、しないほうがいいです。
コンパイルまでは、maintainer の権限でやる方がいいです。
でも、絶対こうでないといけないという理由もありませんが。
mtakeshi> # cd /debian
こでは、各自が用意した作業用のディレクトリですね。
mtakeshi> # tar -zxvf program.tar.gz
mtakeshi> ./program2.3/README
mtakeshi> ./program2.3/Imakefile
mtakeshi> : :
mtakeshi>
mtakeshi> # ls -aF
mtakeshi> ./ ../ program2.3/
このあと、日本語パッケージを作成する場合、
パッチを当てる作業が入るはずです。
オリジナルものをパッケージにする場合は、このままです。
mtakeshi> ===========================
mtakeshi> 2.バージョン修正とdeb-make
mtakeshi> ===========================
mtakeshi>
mtakeshi> バージョン名に program directory を改名します。
mtakeshi>
mtakeshi> # mv program2.3 program-ja-2.3
mtakeshi> # ls -F
mtakeshi> program-ja-2.3/
この作業は、日本語パッケージの場合か、
deb-make でパッケージ名(ディレクトリ名)として使えない文字が
使われてしまっている場合などに必要な作業です。
mtakeshi> deb-make をかけて、基本的な物を作ります
mtakeshi>
mtakeshi> # cd program-ja-2.3
mtakeshi> # deb-make
mtakeshi>
mtakeshi> Email-Address : mtakeshi@xxxxxxxxxxxxxxx
mtakeshi> Date used : Sun, 8 Jun 1997 01:36:25 +0900
mtakeshi> Maintainer : takeshi
mtakeshi> Package Name : program-ja
mtakeshi> Version : 2.3
mtakeshi>
mtakeshi> Debianize with these parameters? y/N y
mtakeshi>
mtakeshi>
mtakeshi> ===========================
mtakeshi> 3.debian/* の file
mtakeshi> ===========================
mtakeshi>
mtakeshi> # pwd
mtakeshi> /debian/program-ja-2.3
mtakeshi>
mtakeshi> # ls -F
mtakeshi> Imakefile debian/ xxx.c xxx.h
mtakeshi>
mtakeshi> # cd debian
mtakeshi> # ls -aF
mtakeshi>
mtakeshi> ./ changelog copyright inetd.conf.ex rules*
mtakeshi> ../ control crontab.ex info.ex rules.multi
mtakeshi> README.debian control.multi diversions.ex init.d.ex
mtakeshi>
mtakeshi> ~~~~~~~~~~~~~~~~~~~~~~~
mtakeshi> README.debian : このパッケージのdebに関する README
mtakeshi> changelog : .deb に対する changelog。ソースのchangelogではない
mtakeshi> control : パッケージのルールを記述
mtakeshi> copyright : パッケージの copyright
mtakeshi> rules : ソースを make してパッケージ化するスクリプト
mtakeshi>
mtakeshi> preinst : dpkg -i 時に、実際にバイナリが展開される前に実行されるファイル
mtakeshi> postinst : dpkg -i された後に実行するスクリプトを記述
mtakeshi> prerm : dpkg -r 時に、実際にバイナリが rm される前に実行されるファイル
mtakeshi> preinst : dpkg -r された後に実行するスクリプトを記述
mtakeshi>
mtakeshi> crontab : crontab file
mtakeshi> inetd.conf : 追加する inetd.conf のサービス
mtakeshi> init.d : /etc/init.d/ の内容
mtakeshi>
mtakeshi> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mtakeshi>
mtakeshi> ---------------------------
mtakeshi> 3.1. control
mtakeshi> ---------------------------
mtakeshi>
mtakeshi> 3.1.1 構成
mtakeshi> ^^^^^^^^^^
mtakeshi>
mtakeshi> 自動でできたばっかりの control
mtakeshi> Source: program-ja --------------+
mtakeshi> Section: unknown | このブロックは
mtakeshi> Priority: extra | 完成品の *.changes で
mtakeshi> Maintainer: takeshi <mtakeshi@xxxxxxxxxxxxxxx> | 参照される ??
mtakeshi> Standards-Version: 2.1.1.0 ----------+
mtakeshi> (空行)
mtakeshi> Package: program-ja ---------------+
mtakeshi> Architecture: any | このブロックは
mtakeshi> Depends: ${shlibs:Depends} | dselect に
mtakeshi> Description: Missing | 反映される
mtakeshi> Missing ---------------+
mtakeshi>
mtakeshi> 記述ルール
mtakeshi> KEYWORD: 値
mtakeshi>
mtakeshi>
mtakeshi>
mtakeshi> 3.1.2 KEYWORD
mtakeshi> ^^^^^^^^^^^^^^
mtakeshi> Source:
mtakeshi>
mtakeshi> Section: rexの場合、admin,base,devel,...x11, non-free,contrib
mtakeshi>
mtakeshi> Priority: Required/Important/Standard/Optional/Extra
mtakeshi> Required 必須パッケージである
mtakeshi> Important ないとシステムがうまく動作しなかったり、不便だ
mtakeshi> Standard Linux System で標準的なもの
mtakeshi> Optional 任意
mtakeshi> Extra
mtakeshi> Maintainer:
mtakeshi> Standards-Version:
mtakeshi>
mtakeshi>
mtakeshi> Package: パッケージ名
mtakeshi> Architecture: i386 or alpha or m68k or sun or all
mtakeshi> Depends: 本パッケージが動作するための、必須パッケージ名
mtakeshi> 例: Package: bind
mtakeshi> Depends: libc5, netbase
mtakeshi>
mtakeshi> Recommends: 本パッケージは、ここに記述されているパッケージが必要
mtakeshi> 例: Package: fvwm2
mtakeshi> Recommends: fvwm-common
mtakeshi>
mtakeshi> Suggests: ここに記述されるパッケージは、本パッケージと関連する
mtakeshi> 例: Packages: cgi-scripts
mtakeshi> Suggests: perl
mtakeshi>
mtakeshi> Conflicts: 本パッケージとここに記述されるパッケージの同居はできない
mtakeshi> 例: Package: cnews
mtakeshi> Conflicts: inn
mtakeshi>
mtakeshi> Replaces: 本パッケージはここに書かれているパッケージを上書きする
mtakeshi> 例: Package: elvis
mtakeshi> Replaces: elvisnox
mtakeshi>
mtakeshi> Provides: ここに記述しているパッケージの全てを、本パッケージは包含する
mtakeshi> 例: Package: vim
mtakeshi> Provides: editor
mtakeshi>
mtakeshi> Description: 簡単な説明。一行。
mtakeshi> もうちょっと詳しい説明。
mtakeshi> 行の先頭は必ず space
mtakeshi> 一行開けたいときは
mtakeshi> .
mtakeshi> と書く
mtakeshi>
mtakeshi>
mtakeshi> ------------------
mtakeshi> 3.2 rules
mtakeshi> ------------------
mtakeshi> 後述の dpkg-buildpackages は、このファイルを元に、コンパイル、仮インストール、パッケージングを行う。
mtakeshi>
mtakeshi> package=パッケージ名
mtakeshi>
mtakeshi> build:
mtakeshi> clean が行われた後、コンパイルに入る
mtakeshi>
mtakeshi> clean:
mtakeshi> ソースの TOP directory で、まず最初に実行される。
mtakeshi>
mtakeshi> binary-indep:
mtakeshi>
mtakeshi> binary-arch:
mtakeshi> パッケージ作業directory/debian/tmp/ を仮の / として、インストールする。
mtakeshi>
mtakeshi>
mtakeshi>
mtakeshi> 実際に修正する部分は、
mtakeshi> build:
mtakeshi> binary-arch:
mtakeshi> の所がほとんどであろう
mtakeshi>
mtakeshi>
mtakeshi> なお、/usr/doc/packagename/ 以下におかれるファイルは、
mtakeshi>
mtakeshi> binary-arch:
mtakeshi> :
mtakeshi> debstd $(package) おきたいファイル名
mtakeshi> :
mtakeshi> としておく
mtakeshi>
mtakeshi>
mtakeshi>
mtakeshi> =========================
mtakeshi> 4.dpkg-buildpackage
mtakeshi> =========================
mtakeshi> 3.までが終了したら、やっと dpkg-buildpackage を実行できる。
一般ユーザーでパッケージの用意をしていたかたは、
ここで、
dpkg-buildpackage -rsudo
などで、必要なときに root になるようにします。
ちなみに、dpkg-buildpackage では、
debian/rule clean (普通、make clean のとき)
debian/rule binary (debian/rule build実行済なので、
make install のとき)
のみ、-r で指定した change root するコマンドを実行してくれます。
このおかげで、パッケージングなどで root 権限が必要な状況では、
実際 root になっていることになります。
mtakeshi>
mtakeshi> PGP xxxxxxxxxxxx <=== PGP が起動
mtakeshi> :
mtakeshi> : 自分の認証フェーズを入力
mtakeshi>
mtakeshi> なにやら、deb用のファイルを作っているらしい
mtakeshi> :
mtakeshi>
mtakeshi> PGP xxxxxxxxxxxx <=== もう一度 PGP が起動
mtakeshi> :
mtakeshi> : 自分の認証フェーズを入力
mtakeshi>
mtakeshi> 終了
mtakeshi> このときの PGP のキーに自分のキーとIDを使用したいがために、1.で su しています
mtakeshi> PGPPATH を 設定してやるのも手です
PGPのサインは、control ファイルに書かれた maintainer の
アカウントすることになります。
上記のように dpkg-buildpackage -rsudo でパッケージングすると
PGPサインのときは、一般ユーザーに戻っているので、
普通にサインすることができます。
PGPの設定は、事前にしておく必要があります。
ちょっと、追加・補足してみました。
+---------------------------------------------------------+
Yoshiaki Yanagihara E-mail: yochi@xxxxxxxxxxx
yosiaki@debian.org
Debian JP Project
[Japanese] http://www.debian.linux.or.jp/
[English ] Sorry, now under construction.