[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:01138] dpkg mini how to



たけし@mail.at-m.or.jp です
このあいだの deb の作り方を 修正してみました。
これで mini-HOWTO ぐらい?でしょうか
.deb の作り方(簡易版)
					1997.06.10  mtakeshi@xxxxxxxxxxxxxxx

===================
目的
===================
  ソースファイルを元に、debian パッケージすると以下のものが出来上がります。
  これが最終目的です。

    packagename-ver/                        ソース、コンパイル
    packagename-ver/debian                  deb用のファイルのおき場所。
                                            deb-make すると自動的に作られる
    packagename-ver/debian/tmp/{usr,etc,..} 仮のインストール先
                                            この下にインストールされた後、
                                            *.deb file が作られる。自動。
    packagename_ver-debver.diff.gz
    packagename_ver-debver.dsc
    packagename_ver-debver_arch.changes
    packagename_ver-debver_arch.deb
    packagename_ver.orig.tar.gz

  (例 : ppp-2.3/  ppp_2.3-1.diff.gz  ppp_2.3-1.dsc ,..... )
  ( debver は、パッケージのバージョン。
    ver は、プログラム自体のバージョン
    arch は、i386 など、アーキテクチャを示す
  )


===================
用意するもの
===================

  .deb にしたい物のソース (ex. program.tar.gz)
  
  開発パッケージ (make, gcc, perl, dpkg, m4, patch, ...)
  PGP と自分の key

  sudo

===================
0.作業の流れ
===================
 自分のアカウントで入る
 1. ソースを展開。patch 等をあてておく
 2. deb-make
 3. debian/* の記述。
 4. dpkg-buildpackage
 5. upload & mail

 
===================
1.ソースの展開
===================

  自分の作業 directory で、ソースを展開します。(ex. program.tar.gz)

     $ cd /debian	(作業directoryに移動)
     $ tar -zxvf program.tar.gz  (source 展開)
       ./program2.3/README
       ./program2.3/Imakefile
             :        :

     $ ls -aF
       ./  ../  program2.3/


  このあと、日本語パッケージを作成する場合、
  パッチを当てる作業が入るはずです。
     $ patch -p < program-jp.patch       
	Humm....
        :
        done.

  オリジナルものをパッケージにする場合は、このままです。

===========================
2.バージョン修正とdeb-make
===========================

2.1  バージョン名に program directory を改名します。
	この作業は、日本語パッケージの場合か、
	deb-make でパッケージ名(ディレクトリ名)として使えない文字が
	使われてしまっている場合などに必要な作業です。

    $ mv program2.3 program-ja-2.3
    $ ls -F
      program-ja-2.3/


2.2  deb-make をかけて、基本的な物を作ります

    $ cd program-ja-2.3
    $ deb-make

      Email-Address           : mtakeshi@xxxxxxxxxxxxxxx
      Date used               : Sun, 8 Jun 1997 01:36:25 +0900
      Maintainer              : takeshi
      Package Name            : program-ja
      Version                 : 2.3

      Debianize with these parameters? y/N   y


===========================
3.debian/* の file
===========================

  $ pwd
  /debian/program-ja-2.3

  $ ls -F
  Imakefile   debian/   xxx.c xxx.h

  $ cd debian
  $ ls -aF

  ./             changelog      copyright      inetd.conf.ex  rules*
  ../            control        crontab.ex     info.ex        rules.multi
  README.debian  control.multi  diversions.ex  init.d.ex


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
README.debian : このパッケージのdebに関する README
    changelog : .deb に対する changelog。ソースのchangelogではない
                dch(1)を使うと便利。
                    同じversionなら dch [text]
                    version-upなら dch -n [text]
      control : パッケージのルールを記述
    copyright : パッケージの copyright
        rules : ソースを make してパッケージ化するスクリプト

      preinst : dpkg -i 時に、実際にバイナリが展開される前に実行されるファイル
     postinst : dpkg -i された後に実行するスクリプトを記述
        prerm : dpkg -r 時に、実際にバイナリが rm される前に実行されるファイル
      preinst : dpkg -r された後に実行するスクリプトを記述

      crontab : crontab file
   inetd.conf : 追加する inetd.conf のサービス
      init.d  : /etc/init.d/ の内容

        docs  : "/usr/doc/パッケージ名" にインストールしておきたい文書の一覧
        dirs  : インストール時に必要なディレクトリの一覧

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


---------------------------
3.1. control
---------------------------

3.1.1 構成
^^^^^^^^^^

自動でできたばっかりの control
  Source: program-ja                 --------------+
  Section: unknown                                 | このブロックは
  Priority: extra                                  | 完成品の *.changes で
  Maintainer: takeshi <mtakeshi@xxxxxxxxxxxxxxx>   | 参照される ??
  Standards-Version: 2.1.1.0             ----------+
       (空行)
  Package: program-ja         ---------------+
  Architecture: any                          | このブロックは
  Depends: ${shlibs:Depends}                 | dselect に
  Description: Missing                       | 反映される
   Missing                    ---------------+

記述ルール
  KEYWORD: 値



3.1.2 KEYWORD
^^^^^^^^^^^^^^
Source:

Section: admin,base,devel,...x11, non-free,contrib

Priority: Required/Important/Standard/Optional/Extra
          Required  必須パッケージである
          Important ないとシステムがうまく動作しなかったり、不便だ
          Standard  Linux System で標準的なもの
          Optional  任意
          Extra     
Maintainer:
Standards-Version:


Package:      パッケージ名
Architecture: i386 or alpha or m68k or sun or all
Depends:      本パッケージが動作するための、必須パッケージ名
              例: Package: bind
                  Depends: libc5, netbase

Recommends:   本パッケージは、ここに記述されているパッケージが必要
              例: Package: fvwm2
                  Recommends: fvwm-common

Suggests:     ここに記述されるパッケージは、本パッケージと関連する
              例: Packages: cgi-scripts
                  Suggests: perl

Conflicts:    本パッケージとここに記述されるパッケージの同居はできない
              例: Package: cnews
                  Conflicts: inn

Replaces:     本パッケージはここに書かれているパッケージを上書きする
              例: Package: elvis
                  Replaces: elvisnox

Provides:     ここに記述しているパッケージの全てを、本パッケージは包含する
              例: Package: vim
                  Provides: editor

Description: 簡単な説明。一行。
 もうちょっと詳しい説明。
 行の先頭は必ず space
 一行開けたいときは
 .
 と書く


------------------
3.2 rules
------------------
後述の dpkg-buildpackages は、このファイルを元に、コンパイル、仮インストール、パッケージングを行う。

  package=パッケージ名

  build:
      clean が行われた後、コンパイルに入る

  clean: 
      ソースの TOP directory で、まず最初に実行される。

  binary-indep: 

  binary-arch: 
     パッケージ作業directory/debian/tmp/ を仮の / として、インストールする。



実際に修正する部分は、
  build:
  binary-arch:
の所がほとんどであろう


なお、/usr/doc/packagename/ 以下におかれるファイルは、

binary-arch:
     :
  debstd $(package) おきたいファイル名
     :
としておく



=========================
4.dpkg-buildpackage
=========================
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 になっていることになります。

------
これを行うと、

  1.コンパイル
  2.バイナリ、document のインストール ( debian/tmp を / にみたてて )
  3.*.diff, *.dsc, *.orig.tar.gz, *.deb の作成

が行われる。


  $ pwd
  /debian/program-ja-2.3

  $ ls -F
  Imakefile   debian/   xxx.c xxx.h


  $ dpkg-buildpackage -rsudo
    making .....
      :
    install xxx DESTDIR=`pwd`/tmp/usr/X11/bin
      :
    
    なにやら、deb用のファイルを作っているらしい
      :

    PGP xxxxxxxxxxxx  <=== PGP が起動
       :
     : 自分の認証フェーズを入力

    なにやら、deb用のファイルを作っているらしい
      :

    PGP xxxxxxxxxxxx  <=== もう一度 PGP が起動
       :
     : 自分の認証フェーズを入力

    終了



  $ ls ../
    program-ja-2.3                program_ja-2.3-1_i386.changes
    program_ja-2.3-1.diff.gz      program_ja-2.3-1_i386.deb
    program_ja-2.3-1.dsc          program_ja-2.3.orig.tar.gz
    
       
( PGPのサインは、control ファイルに書かれた maintainer の
  アカウントすることになります。
  上記のように dpkg-buildpackage -rsudo でパッケージングすると
  PGPサインのときは、一般ユーザーに戻っているので、
  普通にサインすることができます。

  PGPの設定は、事前にしておく必要があります。
)



=========================
5.upload
=========================
以上でできたファイル (*.diff.gz, *.dsc, *.changes, *.deb, *.orig.tar.gz ) を
upload します。
ftp://ftp.linux.or.jp/pub/debian/jp-devel/Incoming/private/

mail で changes をながしておしまい


以上