dpkg - みる会図書館


検索対象: UNIX MAGAZINE 1999年9月号
15件見つかりました。

1. UNIX MAGAZINE 1999年9月号

連載 / 凵 nux でリラックスー⑩ 図 7 dpkg-deb コマンド吏用例 % dpkg—deb ——extract $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1 . 1. deb wget_l . 5.3 ー 1.1 % ls —IF wget ー 1 . 5.3 ー 1 . 1 etc/ usr/ ↑ソフトウェアのディレクトリ・ツリーを展開 ←展開されたファイルを確認 % dpkg—deb --control $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1.1. deb wget_l. 5.3 ー 1 . I/DEBIAN ↑ソフトウェアの制御ファイルを展開 % ls —IF wget_l . 5.3 ー 1 . I/DEBIAN ←展開された制御ファイルを確認 conffiles control md5sums postinst* postrm* % dpkg-deb ——build wget—l . 5 dpkg-deb : building package % ls -IF wget ー 1 . 5.3 ー 1 . 1 / wget ー 1 . 5.3 ー 1 . 1 ー i386 . deb . 3 ー 1 . 1 ヾイナリ・パッケージを作成 'wget' in ( . / wget ー 1 . 5.3 ー 1 . 1 ー i386 . deb ' . 作成されたバイナリ・パッケージを確認 ヾイナリ・パッケージができている バイナリ・パッケージの展開 ( ディレクトリ・ツリーの 取出し ) dpkg—deb —x ー -extract ファイル名ディレクトリ名 Debian GNU/Linux のノヾイナリ・ノヾッケージから、 ソフトウェアを構成するディレクトリ・ツリーを取り 出します。これは、バイナリ・パッケージに含まれる data. tar. gz アーカイプを指定したディレクトリに展開 することと同しです。、、ファイル名 " には展開したいバ イナリ・パッケージのファイル名を、、、ディレクトリ 名 " にはパッケージを展開したいディレクトリ名を指定 します。指定したディレクトリがない場合は自重加勺に作 成されます。 バイナリ・パッケージの展開 ( 制御ファイルの取出し ) dpkg—deb -e ー —control ファイル名ディレクトリ名 Debian GNU/Linux のバイナリ・パッケージから制 御ファイルを取り出します。これは、バイナリ・パッ ケージに含まれる control. tar. gz アーカイプを指定し たディレクトリに展開することと同しです。、、ファイル 名 " には展開したいバイナリ・パッケージのファイル名 を、、、ディレクトリ名 " には制御ファイルを展開したい ディレクトリ名を指定します。ディレクトリ名を省略 した場合は、、、 DEBIAN" というディレクトリに展開 されます。指定したディレクトリがない場合は自動的 UNIX MAGAZINE 1999.9 に作成されます。 バイナリ・パッケージの作成 dpkg-deb -b ー -build ディレクトリ名 [ ファイル 名ーディレクトリ名 ] 最初の引数である、、ディレクトリ名 " にあるディレクト リ・ツリーから、 Debian GNU/Linux のバイナリ パッケージを作成します。 2 番目の引数には、作成し たバイナリ・パッケージを格納するファイル名または ディレクトリ名を指定します。ディレクトリ名を指定 した場合は、パッケージの制御ファイルにもとづいて、 Debian GNU/Linux のノヾイナリ・ノヾッケージとして 適切なファイル名が付けられます。このため、通常は ディレクトリ名を指定するとよいでしよう。 ディレクトリ・ツリーには、ソフトウェアを構成する ディレクトリ・ツリーに加えて、トップ・ディレクト リにバイナリ・パッケージの制御ファイルかオ褓内された ディレクトリ (DEBIAN ディレクトリ ) が存しなけ ればなりません。つまり、 dpkg—deb ——extract と、 dpkg—deb ——control の両方によって展開されるファイルが必要です。 89

2. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスーの 図 8 dpkg-deb --info の実彳デ列 % dpkg—deb -—info $TOP/dists/s1ink/main/source/web/wget-1.5.3 ー 1.1. deb ←ノヾイナリ ・ノヾツウ - ージの new debian package , version 2 . 0 . size 221932 bytes : control archive= 1842 bytes . 12 bytes, 696 bytes, 2122 bytes, 253 bytes , 70 bytes , 138 bytes , Package : wget 1 16 34 4 2 3 lines lines lines lines lines lines conffiles control md5sums postinst postrm prerm 情報を表示 # ! /bin/sh # ! /bin/sh # ! /bin/sh Vers ion : 1 . 5 . 3 ー 1 . 1 Architecture : i386 Depends : Iibc6 Insta11ed—Size : 535 pages , or traverse the web like a WWW robot (Wget understands you can use Wget tO make mirrors Of archives and home supported Wget [formerly known as Getur1] is a freely available network utility Description: utility tO retrieve files from the WWW via HTTP and FTP Maintainer : Nic01äs Lichtmaier く nick@feedback . net . ar> /robots . txt) . dpkg-deb コマンドには、 な機能があります。 これ以外にも次のようなイリ バイナリ・パッケージの情報を表示 dpkg—deb ーエー -info ファイル名 [ ファイルの種類 ] Debian GNU/Linux のバイナリ・ノヾッケージに関する 情報を表示します。、、ファイル名 " にはバイナリ・パッ ケージのファイル名を、、、ファイルの種類 " には cor ト trol や postinst など、情報を表示したい制御ファイル の名前を指定します。、、ファイルの不頁 " を省略した場 合は、バイナリ・パッケージのバージョンや含まれて いる制御ファイルの一覧に加えて、 control ファイルの 内容か表小されます。 wget ノヾイナリ・パッケージに対 する実行結果を図 8 に示します。 ・ファイルの一覧を表示 dpkg-deb -c ー —contents ファイノレ名 Debian GNU/Linux のノヾイナリ・ノヾッケージに含ま れるすべてのファイルの一覧を表示します。、、ファイ ル名 " には、バイナリ・パッケージのファイル名を指 定します。これは、バイナリ・パッケージに含まれる data. tar. gz アーカイプに対して、 tar tzvf data. tar. gz 90 を実行した結果と同じです。つまり、制御ファイルなど はこの一覧には表示されません。 ・アーカイプを tar 形式で出力 UNIX MAGAZINE 1999.9 り出したり、変更したりできるので、憶えておくとよいで deb コマンドカ硬えない場合でも、パッケージの中身を取 す。なんらかの理由で dpkg-source コマンドや dpkg- 通常の UNIX コマンドでも取り扱える形式になっていま Linux のソース・ノヾッケージやノヾイナリ・ノヾッケージは、 こまでの説明からも分かるように、 Debian GNU/ すことかて、きます。 ジから /usr/doc ディレクトリ以下のファイルを取り出 たとえば、図 9 のようにすれば、バイナリ・パッケー を実行した結果と同じです。 zcat data. tar ・ gz ケージに含まれる data. tar. gz アーカイプに対して、 ジのファイル名を指定します。これは、バイナリ・パッ き出します。、、ファイル名 " には、バイナリ・パッケー れるディレクトリ・ツリーを tar 形式て標準出力に書 Debian GNU/Linux のノヾイナリ・ノヾッケージに含ま dpkg-deb -—fsys—tarfile ファイル名

3. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー⑩ 図 5 ソース・パッケージ乍成例 % ls —IF wget—l . 5.3 / wget—l . 5.3. orig. tar ・ gz % dpkg—source —b wget—l . 5 . 3 ←ファイルの一覧を表示 展開されたソース・パッケー ←オリジナルのアーカイプ ←ソース・パッケージを作成 dpkg¯source : building wget usxng existing wget—l . 5.3. orig ・ tar. gz dpkg—source: building wget in wget—l . 5.3 ー 1 . 1 . diff . gz dpkg¯source : building wget in wget-l . 5.3 ー 1 . 1 . dsc % ls wget wget ー wget— wget— 1 . 5.3. orig. tar ・ gz 1 . 5 . 3 ー 1 . 1 . dsc 1 . 5.3 ー 1 . 1 . diff . gz ー 1 . 5 . 3 / —IF ←ファイルの一覧を表示 作成された差分ファイル 作成されたソース・パッケージ制御ファイル と書かれています。ソース・パッケージによっては、 のファイルが含まれていないものもあります。 ・ debian/copyright ( ノヾッケージの著イ料 ノヾッケージの著イ料 (copyright) か書かれたファイル です。このファイルは、バイナリ・パッケージに含ま れる /usr/doc/ ノヾッケージ名 /copyright" というフ ァイルになります。 ・ debian/README. debian (Debian GNU/Linux ノヾッケージの README) Debian GNU/Linux ノヾッケージの README フ ァイルです。ソフトウェアそのものではなく、 Debian GNU/Linux のノヾッケージに関する README フ ァイルです。 Debian GNU/Linux のノヾッケージに 固有の情報か書かれています。このファイルは、バイ ナリ・パッケージに含まれる /usr/doc/'S ッケージ 名 /README. debian" というファイルになります。 このほかにも、ソース・パッケージからバイナリ・パッ ケージを作成する際に使われるファイルが含まれているこ とがあります。詳しくは文献 [ 3 ] や debmake パッケージ に含まれる debstd コマンドのマニュアルを参照してくだ さい。 最後に、展開されたソース・パッケージから、 Debian GNU/Linux のソース・パッケージを作成するガ去を説 明します。通常は、次のように dpkg-source コマンドを 使用します。 dpkg-source -b ディレクトリ名 、ディレクトリ名 " には、 Debian GNU/Linux のソー ス・パッケージが展開されているディレクトリ名を指定し ます。なお、 dpkg-source コマンドを実行する前に、オ UNIX MAGAZINE 1999.9 リジナルのアーカイプを同じティレクトリに置いておく必 要があります。ヨ列として、展開した wget ソース・パッ ケージのアーカイプからソース・パッケージを作成すると きの様子を図 5 に示します。 パイナリ・パッケージの本 ヾイナリ・パッケージの構造について説明しま す。 Debian GNU/Linux のノヾイナリ・ノヾッケージは、 拡張子が、、 . deb " になっています ( 表 1 ) 。これは、しつ は UNIX で古くから使われている ar 形式のアーカイプ です。つまり、 /usr/lib/libc. a などの勺ライプラリと まったく同しアーカイフ形式です。このため、 ar コマン ドを使って、バイナリ・パッケージに含まれるファイル の一覧を表示したり、アーカイプを展開したりすることが できます。 バイナリ・パッケージの展開などには、通常はあとで説 明する dpkg-deb コマンドを使いますが、こではパッケ ージの構造を説明するために ar コマンドを利用してパッ ケージの中身を見てみましよう。 wget のノヾイナリ・パッケ ージの中身を調べてみます ( 図 6 ) 。 Debian GNU/Linux のバイナリ・パッケージには、下記のようなファイルがか ならすこの順番てオ褓内されています。 ・ debian-binary ( ノヾイナリ・ノヾッケージのノヾージョン ) パッケージ形式のバージョン ( 現在は 2.0 ) か書かれた テキストファイルです。 ・ control. tar. gz ( 制御ファイルのアーカイフ ) パッケージの制御ファイルやパッケージのインストー ル時に実行されるプログラムなどが tar 十 gzip でまと めてオ内されています ( 図 6 ) 。このように、 Debian 87

4. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー⑩ 図 6 wget パイナリ・パッケージの中身 % ar tv $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1 . 1 . deb rw—r——r—— 0 / 0 4 Feb 21 06 : 53 1999 debian—binary rw—r——r—— 0 / 0 1842 Feb 21 06 : 53 1999 control. tar ・ gz rw—r——r—— 0 / 0 219897 Feb 21 06 : 53 1999 data. tar ・ gz % ar xv $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1.1. deb ←制御ファイルのアーカイプの中身を表示 ←ソフトウェアのアーカイプの中身を展開 1999 ー 02 ー 21 06 : 53 1999 ー 02 ー 21 06 : 53 ←アーカイプの中身を表示 ←アーカイプの中身を展開 x ー debian—binary control . tar. gz X x ー data. tar ・ gz % cat % tar drwxr— % tar drwxr drwxr drwxr drwxr drwxr ー drwxr drwxr deb i an—b inary tzvf xr—X tzvf X X X X X X control . tar て 00t / て 00t root/root root/root root/root root/root root/root root/root data. tar ・ gz root/root て 00t / root て 00t / root root/root root/root root/root root/root て 00t / root て 00t / root て 00t / root . gz ←制御ファイルのアーカイプ ←ソフトウェアのアーカイプ ←ファイルの中身を表示 138 1999 ー 02 ー 21 06 : 53 prerm 70 1999 ー 02 ー 21 06 : 53 postrm 253 1999 ー 02 ー 21 06 : 53 postinst 12 1999 ー 02 ー 21 06 : 48 conffiles 0 1999 ー 02 ー 21 06 . ←ノヾッケージのフォーマットは 2.0 ・ 53 . / 696 1999 ー 02 ー 21 06 : 53 control 2122 1999 ー 02 ー 21 06 : 53 md5sums ←設正ファイノレの一覧 ←インストール後に実行するスクリプト ←削除後に実行するスクリプト ←削除前に実行するスクリプト ← MD5 形式のチェックサム ←パッケージ制御ファイル 0 0 0 116348 0 ・ / ヾツウ - 0 0 604 0 3293 GNU/Linux のノヾイナリ プが含まれています。 1999 ー 02 ー 21 06 1999 ー 02 ー 21 06 1999 ー 02 ー 21 1999 ー 02 ー 21 1999 ー 02 ー 21 06 1999 ー 02 ー 21 06 : 48 1999 ー 02 ー 21 06 : 53 usr/lib/menu/ : 53 1999 ー 02 ー 21 06 : 53 usr/bin/ etc/wgetrc etc/ : 48 usr/lib/menu/wget 06 : 53 usr/lib/ 定します。 かのオプションを付け、 06 : 53 usr/info/ : 53 usr/bin/wget ージでは ar 形式の どのような処理を実行するかを指 アーカイプのなかにさらに tar 十 gzip 形式のアーカイ 88 コマンドを使います。 dpkg-deb コマンドに以下のいすれ バイナリ・パッケージの展開や作成には、 dpkg-deb dpkg コマンドを使います。 生します。パッケージのインストールには、かならず ッケージ間の依存関係がおかしくなるといった間題が発 ジに含まれるファイルが不用意に上書きされたり、パ ジをインストールしてはいけませんはかのパッケー GNU/Linux では、絶対にこのような方法でパッケー ィレクトリ・ツリーが再現されます。しかし、 Debian ート・ディレクトリで展開すると、ソフトウェアのデ で圧縮したアーカイプです。つまり、 data. tar. gz をル ソフトウェアそのものを構成するファイルを tar 十 gzip ・ data. tar. gz ( ソフトウェアのアーカイフ ) —build —contentS —info —field —control —extract —vextract —fsys—tarfile します ( 図 7 もあわせて参照してください ) 。 す。以下では、 dpkg-deb コマンドの使用法を簡単に説明 ドを使って dpkg-deb コマンドを起動することもできま deb コマンドを起動します。したがって、 dpkg コマン と、 dpkg コマンドは引数を保存したまま内部で dpkg- dpkg コマンドにこれらのオプションを付けて実行する UNIX MAGAZINE 1999.9

5. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー⑩ 図 9 dpkg-deb --fsys-tarfile の啝囲例 % dpkg-deb —-fsys—tarfile $TOP/dists/s1ink/main/source/web/wget-1.5.3 ー 1.1. deb \ ← /usr/doc ディレクトリ以下を取り出す ー tar xvf ー usr/doc usr/doc/ usr/doc/wget/ usr/doc/wget/html/ usr/doc/wget/html/wget—l . html usr/doc/wget/htm1/wget—10. html usr/doc/wget/NEWS. gz usr/doc/wget/README usr/doc/wget/MAILING-LIST usr/doc/wget/TODO usr/doc/wget/changelog. Debian ・ gz パッケージの作成方法 Debian GNU/Linux のバイナリ・ノヾッケージは、でき るかぎり汎用性の高い設定を用いて作成されています。た とえは、ソフトウェアのコンパイル時オフションも、可能 なかぎり汎用的なものカ甘旨定されています。したがって、 ほとんどの場合は、自分でバイナリ・パッケージやソース・ パッケージを作る必喫はありません。 しかし、用意されているノヾイナリ・パッケージとは異な るコンパイル時オプションを用いたソフトウェアが必要に なることもありますし、ソフトウェアのソースコードを一 部変更して使いたいこともあるでしよう。そのような場合 は、 Debian GNU/Linux のソース・ . パッケージを入手し て、自分でバイナリ・パッケージを作る必要があります。 それはど有名ではなかったり、あるいはライセンスに問 題がある (Debian Free Software Guidelines に従って いない ) ソフトウェアについては、パッケージ化されてい ないことがあります。このような場合、通常は /usr/local ディレクトリ以下にインストールして使用します。 De- bian GNU/Linux では、 /usr/local ディレクトリはそ の計算機に固有のソフトウェアをインストールする場所と されている [ 1 ] ので、パッケージ管理システムとは独立し て利用できます。しかし、このようなソフトウェアも De- bian GNU/Linux のノヾッケージにしておけば、 dpkg コ マンドを用いたソフトウェアの j 助日や削除が可能になりま す。さらに、ほかの Debian GNU/Linux システムにも 簡単にインストールできます。 以下では、 Debian GNU/Linux のパッケージを作 UNIX MAGAZINE 1999.9 成する方法を説明します。具体的には、 Debian GNU/ Linux のソース・ノヾッケージからノヾイナリ・ノヾッケージ を作成するガ去と、ソース・パッケージか有しないソフ トウェアからソース・パッケージを作成する方法をとりあ げます。 ます、パッケージの作成に使うソフトウェアを紹介し ます。 パッケージ作成用のソフトウェア Debian GNU/Linux には、数多くのパッケージ作成 用ソフトウェアがあります [ 2 , 4 ] 。 Debian GNU/Linux をインストールした状態 ( 優先度が Standard ( 標準 ) までのパッケージをインストールした状態 ) では、パッ ケージ作成用のソフトウェアとして dpkg と dpkg- dev の 2 つだけがインストールされています。 Debian GNU/Linux のパッケージを作成するためには、必要に 応して下記のパッケージをインストールする必要があり ます。 debmake ノヾッケージ Debian GNU/Linux のソース・ノヾッケージを作成する ためのソフトウェアです。 Debian GNU/Linux 用と してパッケージ化されていないソースコードのパッケー ジ化を支援する debmake コマンドと、ソース・パッケ ージからのバイナリ・パッケージの作成を麪爰する deb- std コマンドが含まれています。 Debian GNU/Linux のソース・ノヾッケージのなかには、バイナリ・パッケー ジの作成に debstd コマンドを必要とするものもありま す。現在は、 debmake パッケージの代わりに、次に 説明する debhelper パッケージの使用力甘隹奨されてい 91

6. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー⑩ 図 11 wget ソース・ / ヾッケージ乍成例 % export EMAIL=momotaro@d0k0ka—u. ac ・ JP ←管ま黽者ク ) メーノレアドレスを言乂正 ←オリジナルのアーカイプを展開 % tar xzvf wget—l . 5 . 3. tar. gz . 5 . 3 / % dh_make アーカイプのトップ・ディレクトリに移動 ー 1 1 1 1 1 1 wget¯ wget¯ wget¯ wget wget¯ wget ー wget¯ wget wget¯ wget % cd 1 . 5 ・ 3/doc/ansi2knr . 1 ー 1 . 5 ・ 3/doc/Makefi1e . in . 5 .3/doc/ChangeLog 1 ・ 5 ・ 3 / doc / . 5.3/ChangeLog . 5.3/stamp—h. in ー 1 .5 . 3 / TODO . 5 . 3 / po / no ・ po . 5 . 3 / po / cs . po wget ー 1 . 5.3 VerS1011 Package Name Maintainer Date used Emai1—Address dh-make を実行 momotaro@dokoka—u ・ ac ・ JP Sat , 17 Ju1 1999 01 : 45 : 03 + 0900 Momotaro Onigashima wget 1 . 5 . 3 Type 0f package (S=Sing1e Binary , M=Mu1ti¯Binary , L=Library , X=Abort? s/m/l/x ↑作成するパッケージの不頁お尺 wget debianized. lt uses a configure script which probably means that you dO not have tO edit the % vi debian/control % vi debian/rules % mv debian/info. ex debian/info % vi debian/info % cat >debian/conffiles /etc/wgetrc % rm debian/{README . debian,dirs ,docs, Makefi1e . ←缶剏ファイルを編集 ← Makefile を編集 ← info ファイルを編集 ← conffiles ファイルを作成 ←疋ファイルは /etc/wgetrc だけ * . ex} ←不要なファイルを削除 ← 1 つ上のディレクトリに移動 ←ソース・ノヾッケージをイ乍成 % cd % dpkg-source ¯b wget 1 . 5 . 3 ー 1 . dsc 1 . 5.3 ー 1 . dif f . gz 1 . 5 . 3 / —IF dpkg-source : building dpkg¯source : building dpkg—source : building ー 1 . 5 . 3 wget in wget in wget in wget— wget— wget— % ls wget¯ wge t ー wget— wget— % cd 1 . 5.3. orig. tar ・ gz wget ー 1 . 5 . 3 1 . 5 . 3 . orig . tar ・ gz 1 . 5.3 ー 1 . diff . gz 1 . 5 . 3 ー 1 . ds c ・ノ、ツ・ケ バイナリ ージを作成 ←ソース・パッケージカイ乍成されているかを石忍 % fakeroot . /debian/rules binary dh_testdir . /configure ——prefix=/usr ¯¯sysconfdir=/etc creating cache . /config ・ cache configuring for GNU Wget 1 . 5 . 3 checking host system type ・ dh—shlibdeps dh—gencontrol dh_md5sums dh_bu i lddeb dpkg—deb : building package % ls ー IF .. / * . deb wget—l . 5 . 3 ー 1 ー i386. deb UNIX MAGAZINE 1999.9 i586—pc—1inux—gnu wget ' in . / wget ー 1 . 5 . 3 ー 1 ー i386 . deb ' バイナリ・パッケージカ乍成されているかを石忍 95

7. UNIX MAGAZINE 1999年9月号

連載 / 凵 nux でリラックスーの 図 10 netatalk パイナリ・パッケージ乍成例 % dpkg-source —x $TOP/dists/s1ink/main/source/net/netata1k—1.4b2 + asun2.1.1 ー 2. dsc ↑ソース・パッケージを展開 dpkg—source : extracting netatalk in netatalk—l .4b2 + asun2.1.1 % cd netatalk—l .4b2 + asun2.1.1 % cat >>etc/afpd/Makefi1e volume . 0 volume . C トップ・ディレクトリに移動 ← Makefile を一部変更 ${cc} ${DEFS} ${AFSDEFS} ${KRBDEFS} ${DESDEFS} ${INCPATH} \ ${PAMDEFS} —DAPPLCNAME —c volume . c % debchange ーⅡ ' Changed etc/afpd/Makefi1e to avoid optimization problem. % . /debian/rules build ↑ debian/changelog ファイルの修正 / ノヾージョン更新 ←ノヾッケージをコンノヾイノレ test —f VERSION —a —d debian Ⅱ false make DESTDIR= ' ' SBINDIR=/usr/sbin BINDIR=/usr/bin LIBDIR=/usr/1ib RESDIR=/usr/1ib/ata1k ETCDIR=/etc/netataIk INCDIR=/usr/incIude MANDIR=/usr/man PAMDIR=/usr TCPWRAPDIR=/usr TCPWRAPLIBS="-1wrap ー 1 Ⅱ sl " ADDLIBS="—1wrap —lnsl " make [ 1 ] : Entering directory make [ 4 ] : Leaving directory make [ 3 ] : Leaving directory make [ 2 ] : Leaving directory make [ 1 ] : Leaving directory touch build % su # . /debian/rules binary ( /tmp/netatalk—l .4b2 + asun2.1.1 ' ヾイナリ・パッケージを作成 ヾイナリ・パッケージの作成は root で 1 . 4b2 + asu Ⅱ 2 . 1 . 1 ' ( /tmp/netatalk—l .4b2 + asu れ 2.1. l/sys/linux ' ( /tmp/netatalk—l .4b2 + asun2.1. l/man ' ( /tmp/netatalk—l .4b2 + asu 取 2.1.1/man/man8 ) ( /tmp/netatalk— instaII —d —m 755 debian/tmp/usr debian/tmp/etc/netatalk \ debian/tmp/usr/man debian/tmp/usr/lib make DESTDIR= cpwd ' /debian/tmp SBINDIR=/usr/sbin BINDIR=/usr/bin LIBDIR=/usr/1ib RESDIR= /usr/lib/atalk ETCDIR=/etc/netata1k INCDIR=/usr/inc1ude MANDIR=/usr/man install make [ 1 ] : Entering directory ( /tmp/netatalk—l .4b2 + asun2.1.1 ' debian/build/libatalkl—dev/usr/lib/libatalk* . a install —d —m 755 debian/bui1d/1ibata1k1-dev/DEBIAN dpkg-gencontrol —isp —plibatalkl—dev —Pdebian/bui1d/1ibata1k1-dev —vl : 1 .4b2 + as ⅡⅡ 2 . 1 . 1 ー 3 dpkg—deb ——build debian/build/libatalkl—dev dpkg—deb : building package ( libatalkl—dev' in . /libatalkl-dev—l .4b2 + asun2.1.1—3—a1pha. deb ' # ls ー IF .. / * . deb libatalkl—dev—l .4b2 + asun2.1.1-3—a1pha. deb libatalkl—l .4b2 + asun2.1.1—3-a1pha. deb netatalk-l .4b2 + asun2.1.1—3-a1pha. deb は、パッケージ管理システムがごく単屯な SIackware と、 きわめて複雑な Debian GNU/Linux とで、パッケージ の作成ガ去がどのように異なるかが分かると思います。 wget プログラムのソース・パッケージを作成する例を 図 11 に示します。ます、 wget フログラムのオリジナル のアーカイプを展開します。展開されたディレクトリ名が Debian GNU/Linux のルールに従っていない場合は、 適切に変更します。 wget のアーカイプはそのままて大丈 夫です。 94 作成されたバイナリ・パッケージを確認 開発用ライプラリ ←共有ライプラリ ← netatalk ノヾイナリ・ノヾッケージ 次に、アーカイプのトップ・ディレクトリで dh-make コマンドを実行します。作成するソース・パッケージがど のようなバイナリ・パッケージのものであるかと訊かれる こでは s ( 単一のバイナリ ) を j 尺します。 ので、 れによって debian ディレクトリカ乍成さ制御ファイ ルなどのテンプレートか作られます。 さらに、 Debian GNU/Linux のソース・ノヾッケージ で重要な役割を果たす debian/control ファイルと de- bian/rules ファイルを適切に変史します。ここが一番肝 UNIX MAGAZINE 1999.9

8. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスーの 図 1 wget ソース・ / くッケージの展列 % dpkg—source ¯x $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1.1. dsc dpkg-source : extracting wget in wget—l . 5 . 3 ー 1 ー 1 ソース・ノヾッケ ージを展開 % ls —IF get ー 1 . 5 . 3 / wget—l . 5 . 3. orig ・ tar ・ gz ←ファイルの一覧を表示 ←展開されたソース・パッケージ ←オリジナルのアーカイプ 図 2 dpkg-source コマンドを使わない wget ソース・パッケージの展開 % tar xzvf $TOP/dists/s1ink/main/source/web/wget—1.5.3. orig ・ tar ・ gz ←オリジナルのアーカイプを展開 % zcat $TOP/dists/s1ink/main/source/web/wget—1.5.3 ー 1 . 1. diff. gz ー patch —pO ←ソースコードに % mkdir wget-l . 5.3/debian ← debian ディレクトリを作成 wget—l . 5 .3/ChangeLog wget-l . 5 .3/stamp-h. in wget—l . 5.3 / TODO wget-l . 5.3 / po / Ⅱ 0. po wget—l . 5 .3/doc/Makefi1e. in wget-l . 5 .3/doc/ChangeLog wget—l . 5 .3/doc/ get ー 1 . 5 . 3 / パッチを当てる patching file pat ching patching patching file p at ching patching file pat ching patching file file file file file wget wget wget wget¯ wget wget wget— wget— ー 1 ・ 5 ・ 3/doc/Makefi1e . in' . 5.3/doc/samp1e . wgetrc' . 5.3/doc/wget . info' . 5.3/doc/wget . texi ' ー 1 ・ 5 ・ 3/debian/conffiIes' ー 1 ・ 5 ・ 3/debian/controI ' 1 ・ 5 ・ 3/debian/ru1es' 1 ・ 5 ・ 3/debian/inf0' 1 % chmod + x wget—l . 5 .3/debian/ru1es ← debian/rules ファイルを実行可能に こで、、ファイル名 " には、ソース・パッケージ制御ファ イル長子 : . dsc) のファイル名を指定します。このと き、ソース・パッケージ制御ファイルと同じティレクト リに、オリジナルのアーカイプ ( 拡張子 : . orig. tar. (z) と 差分ファイル朝刻長子 : . diff.gz) がなけれはなりません。 例として、 wget のソース・ノヾッケージを dpkg-source コマンドを用いて展開する様子を図 1 に示します ( 以降の 例では、 Debian GNU/Linux のアーカイプのトップ・ ディレクトリを、、 $ TOP " と表記します ) 。 Debian GNU/Linux のソース・ノヾッケージは、基本的 にオリジナルのアーカイプと、 Debian GNU/Linux の ソース・パッケージに対する差分ファイルから構成されて いるため、 patch コマンドを使って手イ乍業で展開すること も可能です。 ただし、 84 1. patch コマンドの実行月リに debian というディレクト リを作成しておく 2. patch コマンドの実行後に debian/rules ファイルの 実行可能ピットを立てるにれは、バイナリ・パッケー ジ作成のためにおこないます ) といった作業が必要です。 wget のソース・ノヾッケージを、 tar と patch を用いて展開する様子を図 2 に示します。 Debian GNU/Linux のソース・ノヾッケージを展開 すると、ディレクトリ・ツリーのトップ・ディレクトリ に、、 debian " という名前のディレクトリか作成されます。 このディレクトリは、 Debian GNU/Linux のソース・ パッケージにとってきわめて重要な意味をもちます。 こには、ソース・ノヾッケージをコンノヾイルし、 Debian GNU/Linux のバイナリ・パッケージを作成するために 必要な清幸ゞすべて書かれています。このディレクトリに UNIX MAGAZINE 1999.9

9. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー⑩ 図 4 wget ソース・ノヾッケージの debian/changelog ファイル wget ( 1.5.3 ー 1.1 ) frozen unstable; urgency=high * fix bug # 33624 ()f severity 'lmportant' for security reasons) . Vincent Renardias く vincent@waw. com> Sat , 20 Feb 1999 22 : 49 : 00 + 0100 wget ( 1 . 5.3 ー 1 ) unstable ; urgency=low * Uses src/ChangeLog as upstream changelog ・ * Added ( SHELL=/bin/bash ' to debian/rules . * Changed references to /usr/local/etc/wgetrc to /etc/wgetrc. * New upstream release, fixes bug # 26989. NicoIäs Lichtmaier く nick@feedback. net. ar> Sat, 26 Sep 1998 08 : 06 : 22 ー 0300 Loca1 variables : mode : debian—changelog add—log—mailing—address : ramos@debian. 0 て g End: る変更履歴が記録されています ( もとになるソフト ウェアの変更履歴ではありません ) 。これが、バイナ リ・パッケージに含まれる /usr/doc/'S ッケージ名 / changelog. Debian. gz" というファイルになります。 ソース・パッケージやバイナリ・パッケージを作成する ときは、このファイルに書かれているバージョン情報 をもと ( ンヾッケージのバージョンか共定されます。図 4 に、 wget ソース・ノヾッケージの debian/changelog ファイルの一部を示します。図の末尾を見ると分かる ように、このファイルを Emacs や XEmacs で言冗み 込むと自重加勺に debian-changelog モードになり、変 更履歴を簡単に追加することができます ( 詳しい使い方 は、、、 M-x describe-mode" で表小されるヘルプを参 照してください ) 。 ・ debian/preinst 、 debian/postinst ( インストール時 に実行されるプログラム ) ソース・パッケージから作成されたバイナリ・パッケー ジを dpkg コマンドでシステムにインストールすると き、ノヾッケージのインストール則 (pre-install) とイン ストール後 (post-install) に実行されるプログラムで す。はとんどの場合、中身はシェル・スクリプトです。 ソース・パッケージによっては、これらのファイルが 含まれないものもあります。たとえば、 wget ソース・ パッケージには含まれていません 1 1 wget のバイナリ・パッケージには含まれています (' ヾイナリ・パッケー ジの寺に、 debstd コマンドによって自重加勺に竹戎されます ) 。 86 ・ debian/prerm 、 debian/postrm ( 削除日に夫行され るプログラム ) ソース・パッケージから作成されたバイナリ・パッケージ を dpkg コマンドによってシステムから削除するとき、 パッケージの削除前 (pre-removal) と削除後 (post- removal) に実行されるプログラムです。ほとんどの場 合、中身はシェル・スクリプトです。ソース・パッケー ジによっては、これらのファイルか含まれていないもの もあります。たとえば、 wget ソース・パッケージには 含まれていません。 ・ debian/conffiles ( 成疋ファイノレの一覧 ) 7 月号で説明したように、 Debian GNU/Linux のノヾッ ケージ管理システムでは、いったんパッケージをインス トールしたあと、パッケージの設疋ファイルを残した ままパッケージを削除することができます。このため、 Debian GNU/Linux のノヾッケージ管理システムでは、 パッケージがどのような成正ファイルをインストールし たかを管理しています。 debian/conffiles ファイルには、ソース・ノヾッケージ から作成されたバイナリ・パッケージがどのような設 定ファイルをインストールするかか第当されています。 システムからパッケージを削除しても、 、に聿かれた ファイルは削除されません。たとえは、 wget のソース・ パッケージに含まれている debian/conffiles ファイル /etc/wgetrc UNIX MAGAZINE 1999.9

10. UNIX MAGAZINE 1999年9月号

連載 / Linux でリラックスー① 表 1 wget / ヾッケージのファイル名 パッケージの動リ ファイル名 ヾイナリ・パッケージ wget ー 1 . 5 . 3 ー 1 . 1 . deb ソース・ノヾッケージ ( ソース・ノヾッケージ缶膽卩ファイル ) wget ー 1 . 5 . 3 ー 1 . 1 . dsc ( オリジナルのアーカイフ ) wget-l . 5 . 3. orig ・ tar ・ gz ( 差分ファイル ) wget-l . 5 .3ー1.1. diff . gz 佖 C ん 09e ー社 St ? 、 e 佖 7 〃ーゼ、 S20 れ一 7 、 e ゼ tS を 0 れ . dSC 佖 C ん佖 ge ー社〃 S e 佖 7 〃 - ゼ e S20 れ のようになっています。刻長子が、、 . dsc " となっている のどちらかです。 ( アンダースコア ) と のかキ芋徴です。佖 c ん e はノヾッケージ名、叩 s 作印 m - ( ハイフン ) の違いに注意してください。 眦”れはパッケージ化されたソフトウェアのもともと ソース・パッケージではオリジナルのアーカイプをその のノヾージョン、 re 0 れは Debian GNU/Linux の まま使用しているので、 Debian GNU/Linux 以外の ノヾッケージとしてのノヾージョンです。ノヾッケージ名や オペレーティング・システムでコンパイルして使うこと バージョン番号の命名規則については、 7 月号を参照し もできます。 Debian GNU/Linux のアーカイプに含 てください。 まれるソース・パッケージは膨大な数に上ります。した ソース・パッケージ制御ファイルは、バイナリ・パッ がって、ある程度有名なソフトウェアなら、ソフトウェ ケージの制御ファイルと同しような構造になっていて、 アの 1 朝己布サイトを苦労して探すまでもなく、年匠な ソース・パッケージに関するいくっかの幸肋ゞ書かれて Debian GNU/Linux アーカイプからソースコードを います。ソース・パッケージ制御ファイルには、 -- ド記 簡単に入手できます。 のフィールドがあります。 3. Debian GNU/Linux 固有の変更のための差分 ( 拡張 子 : . diff. gz) Source ( ソース・ノヾッケージの名則 ) オリジナルのアーカイプを Debian GNU/Linux のソ Version ( ノヾッケージのノヾージョン ) ース・パッケージに変更するための差分ファイルです。 Maintainer ( ノヾッケージの管 : ま里名 ) 実際には、オリジナルのアーカイプに対する diff コマ Architecture ( 対象とするアーキテクチャ ) ンド ()u オフションを使用 ) の出力になっています。 Standards-Version ( ノヾッケージ形式の / ヾージョン ) オリジナルのアーカイプからの差分ファイルを使用して Files ( ファイルの情幸 いるため、いくつかの制約があります。たとえは、オリ これらのフィールドの詳細は 7 月号を参照してくださ ジナルのアーカイプに含まれるファイルの許可ビットや シンポリック・リンクのリンク先の変更、ファイル名 2. オリジナルのアーカイプ付長子 : . orig ・ tar ・ gz) の変更、ファイルの削除などはできません。 オリジナルのアーカイプを tar 十 gzip で宿したファイ 一例として、 Debian GNU/Linux 2.1 の wget ノヾッ ルです。アーカイプのファイル名やアーカイプが展開さ ケージ ( バージョン 1.5.3 ー 1 ) のファイル名を表 1 に示し れるディレクトリ名は、 Debian GNU/Linux のソー ます。 ス・パッケージに合わせて変更されていますが、アーカ イプの中身はオリジナルのままです。アーカイプのファ なお、オリジナルのアーカイプがない場合 ( もともと イル名は、 Debian GNU/Linux 用に作成されたソフトウェアなど ) は、ソース・パッケージの構成がすこし異なることがあり 〃 ac ん佖 ge ー社〃 S こ 7 、 e07 〃 - 、 S を 0 れ ・ orig ・ tar . gz ます。 のように統一されています。アーカイプが展開されるデ 通常、ソース・ノヾッケージの展開には、 dpkg-source ィレクトリ名は、 コマンドを次のように使います。 佖 C ん age ー社〃 StT 、 e 佖 7 れ - ゼ、 S ~ 0 れ . orlg または、 dpkg—source —x ファイル名 し、 83 UNIX MAGAZINE 1999.9