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