[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.