diff options
Diffstat (limited to 'ja/handbook/porting.sgml')
-rw-r--r-- | ja/handbook/porting.sgml | 281 |
1 files changed, 274 insertions, 7 deletions
diff --git a/ja/handbook/porting.sgml b/ja/handbook/porting.sgml index ada397ecb7..08f367baeb 100644 --- a/ja/handbook/porting.sgml +++ b/ja/handbook/porting.sgml @@ -1,6 +1,6 @@ -<!-- $Id: porting.sgml,v 1.23 1997-06-08 16:44:51 max Exp $ --> +<!-- $Id: porting.sgml,v 1.24 1997-07-07 14:52:45 hanai Exp $ --> <!-- The FreeBSD Japanese Documentation Project --> -<!-- Original revision: 1.72 --> +<!-- Original revision: 1.76 --> <sect1><heading>フリーソフトウェアの移植<label id="porting"></heading> @@ -153,7 +153,8 @@ Makefile を読むのにあまり慣れていない人でも, 得るものはとても大きいで 2.2-STABLE (2.2.1-RELEASE 以後): 220000 (これも同じです) 2.2-STABLE (texinfo-3.9 以後): 221001 2.2-STABLE (top 導入以後): 221002 -2.2-RELEASE: 222000 +2.2.2-RELEASE: 222000 +2.2-STABLE (2.2.2-RELEASE 以後): 222001 3.0-current (1997年5月現在): 300000 </verb></tscreen> 見ての通り, これは年・月というフォーマットになっていましたが, @@ -872,10 +873,274 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 る必要はありません. <sect2> + <heading>Info ファイル</heading> + <p>新しい版の texinfo(2.2.2-RELEASE およびそれ以降に入っています) + には, `<tt/install-info/' というコマンドが含まれており, + `<tt/dir/' ファイルに項目を追加したり, 削除したりすることがで + きます. もし, あなたの port が info ドキュメントをインストー + ルするのであれば, 以下の指示に従って, その port および package + が正しく, ユーザの <tt>&dollar{PREFIX}/info/dir</tt> ファイル + を更新するようにしてください. (この節は, とても長くてすいません, + しかし info ファイルを作りあげるためには, これらは不可欠 + です. 正しく行なえば, <em>美しい</em> リストができますので, + 辛抱してください! <tt/:)/ + + <p>まず, これを知っておかなければなりません: + +<tscreen><verb> +% install-info --help +install-info [OPTION]... [INFO-FILE [DIR-FILE]] + Install INFO-FILE in the Info directory file DIR-FILE. + (訳注: Info ディレクトリの INO-FILE を DIR-FILE にインストールする) +Options: +--delete Delete existing entries in INFO-FILE; + don't insert any new entries. + (訳注: INFO-FILE の中の項目を削除, + 新しい項目は一切追加しない.) + : +--entry=TEXT Insert TEXT as an Info directory entry. + (訳注: TEXT を Info ディレクトリの項目として追加する.) + : +--section=SEC Put this file's entries in section SEC of the directory. + (訳注: このファイルの項目を Info ディレクトリの SEC + という節に置く.) + : +</verb></tscreen> + + <p>このプログラムは, 実際には info ファイルを<em/インストール/ + しません, 単に <tt/dir/ ファイルにエントリーを挿入したり削除し + たりするだけです. + + <p>これから, <tt/install-info/ を使用するように, ports を変換す + る7段階の工程を示します. 例として <tt>editors/emacs</tt>を + 使用します. + + <enum> + <item>まず, texinfo のソースを見て, + <tt/@dircategory/ と <tt/@direntry/ 文がないファイルについて, + それらを追加するパッチを作成します. 以下は, ここでの例での + patchの一部です: + +<tscreen><verb> +--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995 ++++ ./man/vip.texi Tue May 20 01:28:33 1997 +@@ -2,6 +2,10 @@ + + @setfilename ../info/vip + @settitle VIP ++@dircategory The Emacs editor and associated tools ++@direntry ++* VIP: (vip). A VI-emulation for Emacs. ++@end direntry + + @iftex + @finalout + : +</verb></tscreen> + + <p>フォーマットについては見ればわかると思います. + <tt/dir/ というファイルに必要な項目を書いておいてくれる作者 + も多いので, まず自分で書く前にさがしてみてください. また, 関係 + する ports も調べて, 節(section)の名前や, インデントなどが + きちんと合っているかどうかを確認してください(項目のテキスト + は, すべて4つめのタブ・ストップ(tab stop)から始めることを推 + 奨します). + + <p>1つのファイルに対して1つの info の項目しか書けないことに注 + 意してください, これは, `<tt>install-info --delete</tt>' + が, そのバグにより, <tt/@direntry/ セクションに複数の項目を書 + いても, 初めの1つの項目しか削除してくれないからです. + + <p>texinfo のソースにパッチをあてるかわりに, <tt/dir/ の項目 + を <tt/install-info/ の 引数((<tt/--section/, <tt/--entry/) + として与えることもできます. これはあまり良い方法とは + 思えません, なぜなら, 同じ情報を3ヶ所(<tt/Makefile/, + <tt/PLIST/ の <tt/@exec//<tt/@unexec/: 以下参照) に重複して, + 書く必要があるからです. しかしながら, もし日本語(あるいは, + 他のマルチバイト文字)の info ファイルがあるのならば, + <tt/install-info/ の特別な引数を使用する必要があるでしょう, + なぜならば, <tt/makeinfo/ がこのような texinfo ソースファイル + を扱えないからです. (このようなものをどう扱うかの例としては, + <tt>japanese/skk</tt> の <tt/Makefile/ と <tt/PLIST/ を見て + ください.) + + <item>portのディレクトリに戻って, `<tt>make clean; make</tt>' + をして, info ファイルが texinfo ソースファイルから再び生成さ + れることを確認してください. texinfo ソースファイルのほうが + info ファイルよりも新しいので, <tt/make/ とタイプすれば, + info ファイルは再構築されるはずですが, 多くの <tt/Makefile/ + には info ファイルの正しい依存関係が書かれていません. emacs + の場合, info ファイルの再構築ため, <tt/man/ サブディレクトリ + に降りていくようにするために, メインの <tt/Makefile.in/ にパッ + チをあてる必要がありました. + +<tscreen><verb> +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Tue Apr 15 00:15:28 1997 +@@ -184,7 +184,7 @@ + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +-SUBDIR = lib-src src ++SUBDIR = lib-src src man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996 ++++ ./man/Makefile.in Tue Apr 15 00:29:52 1997 +@@ -66,6 +66,7 @@ + ${srcdir}/gnu1.texi \ + ${srcdir}/glossary.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) +</verb></tscreen> + + <p><tt/man/ サブディレクトリでのデフォルトターゲットは, + <tt/info/ で呼ばれるのに対して, メインの Makefile では, + <tt/all/ で呼びたいので, 2つめのpatchが必要でした. + また, <tt/info/ info ファイルのインストールも削除しました, + なぜなら, 同じものが同じ名前で既に <tt>/usr/share/info</tt> + にあるからです. (このパッチはここにはありません.) + + <item>もし, <tt/Makefile/ に <tt/dir/ ファイルをインストールす + る個所があれば, 削除します. あなたの port がインストー + ルしてはいけません. また, <tt/dir/ file を壊してしまうよう + なコマンドの類も削除します. + +<tscreen><verb> +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Mon Apr 14 23:38:07 1997 +@@ -368,14 +368,8 @@ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + then \ + (cd ${infodir}; \ +- if [ -f dir ]; then \ +- if [ ! -f dir.old ]; then mv -f dir dir.old; \ +- else mv -f dir dir.bak; fi; \ +- fi; \ + cd ${srcdir}/info ; \ +- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ +- (cd $${thisdir}; chmod a+r ${infodir}/dir); \ + for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \ + (cd $${thisdir}; \ + ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ + chmod a+r ${infodir}/$$f); \ +</verb></tscreen> + + <item>(これは, 既存のportを修正するときのみ必要です.) + <tt>pkg/PLIST</tt> を見て, <tt>info/dir</tt> にパッチをあて + ようとするものすべてを削除します. これらは, + <tt>pkg/INSTALL</tt> やその他のファイルにもあるかもしれない + ので, いろいろさがしてみてください. + +<tscreen><verb> +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/04/15 06:32:12 +@@ -15,9 +15,6 @@ + man/man1/emacs.1.gz + man/man1/etags.1.gz + man/man1/ctags.1.gz +-@unexec cp %D/info/dir %D/info/dir.bak +-info/dir +-@unexec cp %D/info/dir.bak %D/info/dir + info/cl + info/cl-1 + info/cl-2 +</verb></tscreen> + + <item><tt/post-install/ ターゲットを Makefile に加えて, + <tt/dir/ ファイルが存在しなければ作成するようにします. + また, インストールされた info ファイルについては, + <tt/install-info/ を実行するようします. + +<tscreen><verb> +Index: Makefile +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/Makefile,v +retrieving revision 1.26 +diff -u -r1.26 Makefile +--- Makefile 1996/11/19 13:14:40 1.26 ++++ Makefile 1997/05/20 10:25:09 1.28 +@@ -20,5 +20,11 @@ + post-install: + .for file in emacs-19.34 emacsclient etags ctags b2m + strip ${PREFIX}/bin/${file} + .endfor ++ if [ ! -f ${PREFIX}/info/dir ]; then \ ++ sed -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \ ++ fi ++.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode ++ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir ++.endfor + + .include <bsd.port.mk> +</verb></tscreen> + + <p> 新しい info ファイルを作成するのに, + <tt>/usr/share/info/dir</tt> と上のコマンド, 以外は使用しな + いでください. 実際のところ, もし port する人がこれに関して + <tt/PLIST/ に自らまったく手を加える必要がないのであれば, 上 + のパッチのはじめの3行を <tt/bsd.port.mk/ に加えたでしょう. + + <item><tt/PLIST/ を編集して, 同じ働きをする <tt/@exec/ 文, そ + れに<tt/pkg_delete/ のために <tt/@unexec/ 文を加えてくださ + い. <tt/@unexec/ を使用して <tt>info/dir</tt> を削除する必 + 要はありません. + +<tscreen><verb> +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/05/20 10:25:12 1.17 +@@ -16,7 +14,15 @@ + man/man1/etags.1.gz + man/man1/ctags.1.gz ++@unexec install-info --delete %D/info/emacs %D/info/dir + : ++@unexec install-info --delete %D/info/ccmode %D/info/dir + info/cl + info/cl-1 +@@ -87,6 +94,18 @@ + info/viper-3 + info/viper-4 ++@exec [ -f %D/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > %D/info/dir ++@exec install-info %D/info/emacs %D/info/dir + : ++@exec install-info %D/info/ccmode %D/info/dir + libexec/emacs/19.34/i386--freebsd/cvtmail + libexec/emacs/19.34/i386--freebsd/digest-doc +</verb></tscreen> + + <p><tt>@unexec install-info --delete</tt>' コマンドは, info + ファイル自身より先に置き, コマンドがファイルを読めるようにし + ておかなければならないことに注意してください. + また, `<tt>@exec install-info</tt>' コマンドは + info ファイルおよび <tt/dir/ ファイルを作るコマンドより後に + おかなければなりません. + + <item>テストをして, 出来栄えに感服しましょう <tt/:)/ + 推奨される手順は, `<tt/make package/', `<tt/pkg_delete/' + それから, `<tt/pkg_add/'. 各段階の前後に, <tt/dir/ ファイル + をチェックしましょう. + + </enum> + + <sect2> <heading>ライセンス上の問題</heading> <p>ソフトウェアによっては制限の厳しいライセンスがついてきたり, - 法律的に問題があるものがあります (PKPの公開鍵暗号化, ITAR (暗 + 法律的に問題があるかもしれません. (PKPの公開鍵暗号化, ITAR (暗 号化ソフトウェアの輸出) などが例としてあげられます). それらを どう扱えばいいかはライセンスの文面によってさまざまな場合があり ます. @@ -1052,7 +1317,7 @@ MAN8= baz.8 <sect3> <heading>REQ package スクリプト</heading> - <p>パッケージが(インストールされるシステムの状態によって) + <p>port が(インストールされるシステムの状態によって) インストールされるべきか, されないべきか区別する必要があると きには, 「要件(requirements)」スクリプト pkg/REQ を作ること ができます. これは, インストール及びデインストール @@ -1272,9 +1537,11 @@ lib/libtcl.so.7.3 [ヘッダ -- どのようなportのMakefileかすぐにわかるようになっています] # New ports collection makefile for: xdvi # Version required: pl18 ["1.5alpha" みたいなのでも結構です] + [この Makefile の最初の版が作成された日付です] # Date created: 26 May 1995 - [これはこのソフトウェアを最初にFreeBSDにportした人の名前, つまり, - このMakefileを書いた人です] + [このソフトウェアを最初に FreeBSD に port した人の名前, つまり, + この Makefile の最初の版を書いた人です. 今後この port をアップグレー + ドするとき, このヘッダは変えるべきではありません.] # Whom: Satoshi Asami <asami@FreeBSD.ORG> # # $Id$ |