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

[debian-users:01069] Re: How did you make packages ?



やなぎはらです。

From: Masato Hatakeyama <hatake@xxxxxxxxxxxxx>
Message-ID: <199707110731.QAA02365@xxxxxxxxxxxxxxxxxxxx>

hatake> はじめまして、畠山と申します。

はじめまして。

hatake> さて、これから自分好みのマシンに仕立てようと思っているのですが、debian
hatake>  のパッケージの作成方法についてのドキュメントにはどういったものがあるの
hatake> でしょうか。
hatake> 
hatake> 今、会社からなので man dpkg は自宅に帰ってから勿論やりますが…(^^;

man dpkg では、パッケージの作成などに関することは記載されていないと
思います。

さて、では、どこを見ればよいかというと
dpkg-devをインストールするとその中に 

	policy manual
	programmer manual

というものが HTML 形式で含まれています。

これらは、

	/usr/doc/dpkg/programmer.html
		      policy.html

というディレクトリ配下に展開されます。
これをじっくり読むとパッケージングの方法がわかると思います。
(全て英文です)

さて、これは、Debian-1.2.x の話であって、
Debian-1.3.x では、少々変わりました。

policy manual が debian-policy というパッケージに
分けられ、

	/usr/doc/debian-policy/policy.html/配下

に展開されます。

ついでに、現在開発中の Debian-2.0 では、さらに変わりますが、
まだ決まってないので、省略します。


これが、Debian Project が発行しているドキュメントですが、
(現在、翻訳している人がいますが、まだまだです)
簡単に作業をまとめたドキュメントがあります。

それと、Debian のセクションについて Debian-1.3用ですが
まとめたものもあるので、それぞれ添付しておくことにします。

+---------------------------------------------------------+
 Yoshiaki Yanagihara		E-mail: yochi@xxxxxxxxxxx           
					yosiaki@debian.org
 Debian JP Project
 [Japanese] http://www.debian.linux.or.jp/
 [English ] Sorry, now under construction.
..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 をながしておしまい


以上
Received: from tanpopo (yosiaki@xxxxxxxxxxxxxxxxxxxxxxxxx [133.209.18.68]) by kiki.bsd2.kbnes.nec.co.jp (8.8.5/3.5Wbeta-96062712) with ESMTP id CAA03711 for <yosiaki>; Fri, 20 Jun 1997 02:32:52 GMT
From: yochi@xxxxxxxxxxx
Received: from bsd2-mail.bsd2.kbnes.nec.co.jp (bsd2sv.bsd2.kbnes.nec.co.jp [133.209.18.2]) by tanpopo.bsd2.kbnes.nec.co.jp (8.7.4+2.6Wbeta6/3.4W-960411) with ESMTP id LAA01675 for <yosiaki@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>; Fri, 20 Jun 1997 11:32:50 +0900 (JST)
Received: from mail.kbnes.nec.co.jp (kbnes-n3.kbnes.nec.co.jp [133.209.15.5]) by bsd2-mail.bsd2.kbnes.nec.co.jp (8.7.4+2.6Wbeta6/3.4W-970516) with ESMTP id LAA12871 for <yosiaki@xxxxxxxxxxxxxxxxxxxx>; Fri, 20 Jun 1997 11:32:49 +0900 (JST)
Received: from mailsv.nec.co.jp (mailsv.nec.co.jp [133.200.254.203]) by mail.kbnes.nec.co.jp (8.8.5+2.7Wbeta5/3.5Wpl7/97052811) with ESMTP id CAA24245 for <yosiaki@xxxxxxxxxxxxxxxxxxxx>; Fri, 20 Jun 1997 02:32:47 GMT
Received: from TYO9.gate.nec.co.jp (tyo9.gate.nec.co.jp [133.200.254.241]) by mailsv.nec.co.jp (8.8.5+2.7Wbeta5/3.4W-97042209) with ESMTP
	id LAA04556; Fri, 20 Jun 1997 11:32:45 +0900 (JST)
Received: from riccia.nurs.or.jp (riccia.nurs.or.jp [202.218.249.195]) by TYO9.gate.nec.co.jp (8.8.5+2.7Wbeta5/3.4Wb-NEC-TYO9) with ESMTP id LAA15743; Fri, 20 Jun 1997 11:32:43 +0900 (JST)
Received: (from ukai@localhost) by riccia.nurs.or.jp (8.8.5+2.7Wbeta5/3.5Wpl4-97051610) id LAA28912 for debian-devel-dist; Fri, 20 Jun 1997 11:30:47 +0900
Errors-To: debian-devel-request@xxxxxxxxxxx
X-ML-Driver: CMLD (Version 2.5.1-beta2)
X-Loop-Check: debian-devel@xxxxxxxxxxx
Reply-To: debian-devel@xxxxxxxxxxx
Precedence: bulk
X-ML-Count: 01263
X-ML-Name: debian-devel
Message-Id: <199706200230.CAA03654@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: debian-devel@xxxxxxxxxxx
Subject: [debian-devel:01263] Debian Section Policy (Re: mc-4.0)
In-Reply-To: Your message of "Fri, 20 Jun 1997 11:09:31 +0900"
References: <199706200209.CAA03154@xxxxxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: Mew version 1.70 on Emacs 19.34.1 / Mule 2.3
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Fri, 20 Jun 1997 11:30:22 +0900
Sender: yosiaki@xxxxxxxxxxxxxxxxxxxx

やなぎはらです。

From: yochi@xxxxxxxxxxx
Message-ID: <199706200209.CAA03154@xxxxxxxxxxxxxxxxxxxxxxxxx>

yochi> やなぎはらです。
yochi> 
yochi> kikutani> > 本家には、utils 配下に mc_3.5.17 がありますね。
yochi> kikutani> 
yochi> kikutani> あれ、rexではmiscなんですが、utils にしたほうがいいのかな。
yochi> 
yochi> セクションの分類ですが、
yochi> misc にあった大半は、utils などに移動しています。

Bo 以降のパッケージの分類(セクション)は Debian の HomePage を見ると
良くわかりますね。
以下に抜粋したものを載せます。()は、実際のセクション名です。


Administration Utilities (admin)
	Utilities to administer system resources, manage user accounts,
	etc. 

Base Utilities (base)
	Basic needed utilities of every Debian system (you needn't
	install this, they're provided only for upgrading purposes). 

Communication Programs (comm)
	Software to use you modem in the old fashioned style. 

Development (devel)
	Development utilities, compilers, development environments,
	libraries, etc. 

Documentation (docs)
	Collections of FAQs and HOWTOs and documents trying to
	explain everything (at least everything related to Debian/GNU
	Linux). This sections also includes the software needed to
	browse documentation (man, info, etc). 

Editors	(editors)
	Software to edit files. Programming environments. 

Electronics (electronics)
	Electronics utilities. 

Games (games)
	Programs to spend a nice time with after all this setting up. 

Graphics (graphics)
	Editors, Viewers, Converters... Everything to became an artist...

Ham Radio (hamradio)
	Software for ham radio. 

Interpreters (interpreters)
	All kind of interpreters for interpreted languages. Macro
	processors. 

Libraries (libs)
	Libraries to make other programs work. They provide special
	features to developers. 

Mail (mail)
	Programs to route, read, and compose E-mail messages. 

Mathematics (math)
	Math software. 

Miscelaneous (misc)
	Miscelaneous utilities that didn't fit well anywhere else. 

Network	(net)
	Daemons and clients to connect your Debian GNU/Linux system to
	the world. 

Newsgroups (news)
	Software to access Usenet, to set up news servers, etc. 

Other OS's and file systems (otherosfs)
	Software to run other (yes! they exist!) operating system programs,
	and to use their filesystems. 

Shells (shells)
	Command shells. Friendly user interfaces for beginers. 

Sound (sound)
	Utilities to deal with sound: mixers, players, recorders,
	CD players, etc. 

TeX (tex)
	The famous typesetting software! 

Text Processing (text)
	Utilities to format and print text documents 

Utilities (utils)
	Miscelaneous utilities. 

Web Software (web)
	Software to run a WWW server, WWW clients, proxies, etc... 

X Window (x11)
	Software to run X servers and clients, and many applications. 

+---------------------------------------------------------+
 Yoshiaki Yanagihara		E-mail: yochi@xxxxxxxxxxx           
					yosiaki@debian.org
 Debian JP Project
 [Japanese] http://www.debian.linux.or.jp/
 [English ] Sorry, now under construction.