diff --git a/ja_JP.eucJP/books/porters-handbook/book.sgml b/ja_JP.eucJP/books/porters-handbook/book.sgml
index 84d8bf1932..3f6fd3b076 100644
--- a/ja_JP.eucJP/books/porters-handbook/book.sgml
+++ b/ja_JP.eucJP/books/porters-handbook/book.sgml
@@ -3,1246 +3,47 @@
The FreeBSD Japanese Documentation Project
Original revision: 1.64
- $FreeBSD: doc/ja_JP.eucJP/books/handbook/ports/chapter.sgml,v 1.18 2000/01/06 03:44:48 kuriyama Exp $
+ $FreeBSD: doc/ja_JP.eucJP/books/porters-handbook/book.sgml,v 1.19 2000/04/01 16:47:23 knu Exp $
-->
-
- アプリケーションのインストール : ports コレクション
-
- 原作: &a.jraynard;.
-
- 訳: &a.jp.masaki;, &a.jp.saeki;.
- 11 November 1996.
-
- FreeBSD の ports コレクションを利用すると, 最小限の労力で
- 非常に幅広くのアプリケーションのコンパイルとインストールがおこなえます.
-
- やってみたことのある方はよくご存知でしょうが,
- オープンな規格とは 全くの誇大広告であって,
- あるプログラムを異なるバージョンの Unix 上で
- 動作させることは退屈で手間のかかる仕事です.
- 求めているプログラムが自分のシステムでうまくコンパイルでき,
- 正しいところにインストールできて,
- 完璧に動作するとしたらとてもラッキーです. しかし,
- あいにくこれは滅多にないことなのです.
- ほとんどのプログラムについて,
- あなたは髪を掻きむしることになるでしょうし,
- かなりのプログラムでは, 白髪混じりの頭になってしまったり,
- あるいは慢性の 脱毛症にすら なってしまうかもしれません...
-
- いくつかのソフトウェアディストリビューションでは,
- 設定用のスクリプトを
- 配布することでこの問題を解決しようとしています.
- これらのスクリプトの中には非常に精巧なものもありますが,
- 残念ながら, 中にはこれまで
- 聞いたこともないようなシステムの名前をしゃあしゃあと
- 言い放ったうえに, まるでシステムレベルの Unix
- プログラミングに関する 最終試験のような,
- たくさんの質問をしてくる場合があります. (例えば,
- このシステムの gethitlist 関数は fromboz への const
- ポインタを 返しますか? それとも const fromboz
- へのポインタを返しますか?, このシステムには
- Foonix スタイルの, 容認できない例外処理をおこなう
- ルーチンがありますか? もしもないとしたら,
- それはなぜですか?)
-
- 幸いなことに, ports コレクションがあれば,
- これらのきつい作業はすべて 完了しています. make
- install とタイプするだけで, 動作するプログラムを
- 入手することができるのです.
-
-
- なぜ ports コレクションを作ったのか?
-
- FreeBSD の基本システムは,
- 非常に多くのツールやユーティリティから 構成されています. しかし,
- よく使われるプログラムのうち多くのものが,
- この基本システムには含まれていません. その理由は:
-
-
-
- ある Lisp ベースのエディタのように,
- それがないと生きていけないと 言う人もいれば,
- ディスクの無駄だと言う人もいるようなプログラム.
-
-
-
- 基本システムに組み込むには特殊すぎるプログラム. (CAD
- やデータベースなど.)
-
-
-
- “時間のある時に,
- ちょっと見ておかなければ”というような類の,
- それがシステムに含まれていないことが
- 致命的とは言えないプログラム. (おそらく,
- 何らかの言語などでしょう.)
-
-
-
- FreeBSD
- のような真面目なオペレーティングシステムの一部として
- 供給するには遊びが過ぎるようなプログラム. ;-)
-
-
-
- たくさんのプログラムを基本システムに組み込んだとしても,
- もっともっと 組み込みたいという要求が出てくるので,
- どこかで制限を引かなくてはならないため. (そうしなければ
- FreeBSD の配布物は,
- とてつもなく膨大になってしまうでしょう.)
-
-
-
- すべての人が自分のお気に入りの
- プログラムを手作業で移植しなければ ならないとしたら,
- (途方もない膨大な作業の繰り返しをさておいたとしても)
- それは明らかに不合理な話です. そこで, FreeBSD プロジェクトでは,
- 標準のツールを使って移植のプロセスを
- 自動化する巧妙な方法を考え出しました.
-
- なお,
- これは単純ながら非常に柔軟なツールを組み合わせることで,
- 非常に強力な働きをさせるという“Unix
- 流”の作業の優れた実例です.
-
-
-
- ports コレクションはどのように動くのでしょうか?
-
- インターネットでは通常, tarball の形で
- プログラムが配布されています. これは, Makefile
- とソースコードで構成され, 普通は何らかの説明書 (あいにく,
- いつもわかりやすく書かれているとは 限りませんが)
- が付属しています. ことによるとコンフィグレーションスクリプトも
- 含まれているかもしれません.
-
- 標準的な手順では, FTP で tarball を入手して,
- 適当なディレクトリで展開します. 次に説明書を読んで,
- 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の
- make
- コマンドを使ってソースのコンパイルとインストールを
- おこないます.
-
- FreeBSD の ports も tarball の仕組みを利用していますが,
- これはユーザが 苦労して作業することを期待したものではなく,
- どのようにすれば FreeBSD 上で
- そのプログラムが動くようになるかという「ノウハウ」を スケルトン
- を使用して収めているものです. スケルトンは, カスタマイズ済みの
- Makefile も
- 提供していますので, ほとんどすべての ports
- は同じ手順でインストールすることが できます.
-
- もしあなたが (あなたの
- FreeBSD システム または
- FTP サイト にある) ports スケルトンを見ていて,
- そこに潜んでいる あらゆる種類の先端的な
- ロケット工学的なものを見つけられると期待していると,
- つまらなそうなファイルやディレクトリがそこにあるだけなのを見て,
- がっかりするかもしれません.
- (ports を手に入れる方法については, すぐに
- FreeBSD ports コレクションの入手方法
- の節でお話します.)
-
- “一体どうしたらいいんだ? ここにはソースコードが
- ないじゃないか?”
- というあなたの叫びが聞こえるようです.
-
- 心配いりません. おとなしく読んでいけば, すべてが (たぶん)
- 明らかに なるでしょう. 試しに ports をインストールして,
- 何が起きるのかを見てみましょう.
- ここではサンプルとして開発者向けの便利なツール,
- ElectricFence を選択します.
- このスケルトンを選んだ理由は, 他の ports
- に比べても素直で理解しやすく 書かれているからです.
-
-
- 自宅で試してみる場合には, root
- になる必要があるでしょう.
-
-
-
-
- &prompt.root; cd /usr/ports/devel/ElectricFence
-&prompt.root; make install
->> Checksum OK for ElectricFence-2.0.5.tar.gz.
-===> Extracting for ElectricFence-2.0.5
-===> Patching for ElectricFence-2.0.5
-===> Applying FreeBSD patches for ElectricFence-2.0.5
-===> Configuring for ElectricFence-2.0.5
-===> Building for ElectricFence-2.0.5
-[大量のメッセージをコンパイラが出力します...]
-===> Installing for ElectricFence-2.0.5
-===> Warning: your umask is "0002".
- If this is not desired, set it to an appropriate value
- and install this port again by ``make reinstall''.
-install -c -o bin -g wheel -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib
-install -c -o bin -g wheel -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3
-===> Compressing manual pages for ElectricFence-2.0.5
-===> Registering installation for ElectricFence-2.0.5
-
-
- ここではあなたが混乱しないように, コンパイル時の出力を
- すべて取り除いてあります.
-
- もしもあなた自身で実行されたら, 最初にこのような
- 出力結果が得られるはずです:
-
-
- &prompt.root; make install
->> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system.
->> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/.
-
-
- make プログラムは,
- あなたの手元にソースコードがないことを検出し,
- 処理を続けられるようにソースを FTP でダウンロードしようとします.
- この例では, あらかじめ手動でソースコードを用意してあったので,
- 持ってくる必要はありませんでした.
-
- では, 続けて make
- プログラムが何をしているのか見てみましょう.
-
-
-
- ソースコード tarball のありかを
- 確認します. 手元にファイルが存在しなければ, FTP
- サイトから入手しようとします.
-
-
-
- チェックサム
- テストを実行して, その tarball
- が事故か何かで途中で切れていたり, ASCII モードで
- ダウンロードされていたり,
- 転送中にニュートリノによって傷められたりして
- 改変されたりしていないかどうかを確認します.
-
-
-
- tarball を一時的な作業用ディレクトリに展開します.
-
-
-
- FreeBSD 上でコンパイルしたり, 動作させるのに必要な
- すべての パッチ
- をソースコードに当てます.
-
-
-
- 構築のために必要な
- コンフィグレーションスクリプトを実行します.
- コンフィグレーションスクリプトの
- 質問には正確に答えてください.
-
-
-
- (いよいよ!) ソースコードをコンパイルします.
-
-
-
- 実行形式のプログラム, マニュアル,
- その他のサポートファイルを,
- システムのプログラムと混ざってしまわないように
- /usr/local
- (X11 のプログラムの場合には
- /usr/X11R6)
- 以下に インストールします.
- ports はすべて同じ場所にインストールされ,
- システムのあちこちにばらまかれることはありません.
-
-
-
- インストール結果はデータベースに登録されます.
- これにより,
- インストールしたプログラムがもしも気に入らなかったときも,
- システムから すべての痕跡をきれいに 消去
- することができます.
-
-
-
- 以上のステップが make
- の出力と一致しているかどうか確認してください.
- 今まで確認していなかったのなら,
- 今からするようにしてください!
-
-
-
- FreeBSD ports コレクションの入手
-
- あるプログラムの FreeBSD port
- を入手するには二つの方法があります. ひとつは FreeBSD CD-ROM を使う方法で,
- もうひとつは インターネット接続
- を使う方法です.
-
-
- CD-ROM からコンパイルする
-
- FreeBSD CD-ROM がドライブに入っており,
- /cdrom にマウントされていると仮定すると
- (マウントポイントが /cdrom
- である必要があります), ただ普通に実行するだけで ports
- を構築できるようになり, tarball
- をネットワーク経由でダウンロードするのではなく
- /cdrom/ports/distfiles/
- からさがすようになります (そこにあればの話ですが).
-
- CD-ROM にある port スケルトンを使いたければ, 他に
- /etc/make.conf の
- 変数を以下のようにセットする方法があります:
-
-
-PORTSDIR= /cdrom/ports
-DISTDIR= /tmp/distfiles
-WRKDIRPREFIX= /tmp
-
- (任意の十分な空きスペースの場所を /tmp
- とおいています).
- 次に, /cdrom/ports 下の適宜のサブディレクトリに
- cd して, 例のごとく
- make install とタイプします.
- WRKDIRPREFIX は port に
- /tmp/cdrom/ports の下でビルドさせようとします;
- 例えば, games/oneko は
- /tmp/cdrom/ports/games/oneko の下で
- ビルドされるでしょう.
-
-
- ライセンスの制限により, いくつかの ports
- でオリジナルのソースコードを CD-ROM
- に入れることができなかったものがあることに注意してください.
- この場合, インターネット経由で
- ports をコンパイルする の
- 節を参照してください.
-
-
-
- インターネット経由で ports をコンパイルする
-
- CD-ROM を持っていなかったり, その ports
- の最新バージョンを確実に入手したい 場合は, その ports の スケルトン を
- ダウンロードする必要があります. ところで, これは落し穴が
- たくさんある作業に見えるかもしれませんが,
- 実際には非常に簡単です.
-
- 初めに, あなたの動かしている FreeBSD
- がリリースバージョンなら ports ページ
- でその FreeBSD 用の “アップグレードキット”
- を手にいれてください. このパッケージには, 最新の ports
- をコンパイルするのに必要な,
- リリース以降に更新されたファイルが含まれています.
-
- FreeBSD の FTP サーバーがその場で tarball
- を作成できることを利用してスケルトンを入手すると
- 非常に便利です. ここでは例として databases ディレクトリにある
- gnats プログラムを使って説明します.
- (角型かっこの中の文はコメントなので, 実際に実行する場合には,
- これをタイプしないでください!):
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; mkdir databases
-&prompt.root; cd databases
-&prompt.root; ftp ftp.FreeBSD.org
-[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール
-アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも
-あります) 使うのをお忘れなく!]
-ftp> cd /pub/FreeBSD/ports/ports/databases
-ftp> get gnats.tar
-[gnats スケルトンの tarballs を取得]
-ftp> quit
-&prompt.root; tar xf gnats.tar
-[gnats スケルトンの展開]
-&prompt.root; cd gnats
-&prompt.root; make install
-[gnats の構築とインストール]
-
-
- さて何が起きるでしょうか? FTP
- サイトにいつも通りに接続して, データベースの
- サブディレクトリに移動します. get gnats.tar
- とコマンドを入力すると, FTP サイトでは gnats ディレクトリを
- tarred
- にしてくれるのです.
-
- gnats スケルトンを展開したら, gnats ディレクトリへ移動して
- ports を構築します. すでに
- 説明したように, make の過程で
- 手元にソースコードがないことを検出すると,
- ソースコードを取得してから 展開し,
- パッチ当てと構築をおこないます.
-
- それでは, 少し冒険をしてみましょう. 一つの ports
- スケルトンを 取得するかわりに, たとえば ports
- コレクションの中のデータベースの スケルトンをすべて,
- サブディレクトリ全体を取得してみましょう.
- やり方はほとんど同じです:
-
- &prompt.root; cd /usr/ports
-&prompt.root; ftp ftp.FreeBSD.org
-[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール
-アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも
-あります) 使うのをお忘れなく!]
-ftp> cd /pub/FreeBSD/ports/ports
-ftp> get databases.tar
-[データベースディレクトリの tarballs を取得]
-ftp> quit
-&prompt.root; tar xf databases.tar
-[すべてのスケルトンを展開]
-&prompt.root; cd databases
-&prompt.root; make install
-[データベース ports 全部の構築とインストール]
-
- わずかばかりの簡単なコマンドで, この FreeBSD
- マシン上にデータベース
- プログラムを一揃い手に入れてしまいました! 一つの ports
- スケルトンを取ってきて それを構築する場合との違いは,
- すべてのディレクトリを一度に取得して,
- 全部を一度にコンパイルしたということだけです.
- かなり感動的だと思いませんか?
-
- たくさんの ports をインストールする つもりなら,
- おそらくすべての ports ディレクトリをダウンロードしておく
- 価値があるでしょう.
-
-
-
-
- スケルトン
-
- スケルトン (訳注: skeleton とは骸骨のことです) とは,
- 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ
- ハッカーたちのなれの果ての ことでしょうか? FreeBSD
- の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ,
- ここでスケルトンの意味するところは, ports の魔術を実現するのに
- 必要とされるすべてのものを提供する最小の骨組みのことです.
-
-
- Makefile
-
- スケルトンのもっとも重要な要素は Makefile
- です. Makefile は ports を どのようにコンパイルし,
- インストールをおこなうかを指示する
- いろいろな命令を含んでいます. 以下に ElectricFence の Makefile
- を示します:
-
-
-# New ports collection makefile for: Electric Fence
-# Version required: 2.0.5
-# Date created: 13 November 1997
-# Whom: jraynard
-#
-# $FreeBSD$
-#
-
-DISTNAME= ElectricFence-2.0.5
-CATEGORIES= devel
-MASTER_SITES= ${MASTER_SITE_SUNSITE}
-MASTER_SITE_SUBDIR= devel/lang/c
-
-MAINTAINER= jraynard@FreeBSD.org
-
-MAN3= libefence.3
-
-do-install:
- ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib
- ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3
-
-.include <bsd.port.mk>
-
- "#" で始まる行は, 人間のためのコメント行です.
- (ほとんどの Unix のスクリプトと同じですね.)
-
- DISTNAME は tarball
- の名前から拡張子を取ったものです.
-
- CATEGORIES
- はこのプログラムの種類を示します. この場合,
- 開発者向けのユーティリティということになります.
- 完全なリストはこのハンドブックの カテゴリ
- をみてください.
-
- MASTER_SITES はマスタ FTP サイトの URL
- です. もしローカルシステムに tarball がない場合には,
- ここから取得します. これは信頼できると考えられているサイトで,
- 通常はそのプログラムを
- インターネット上で公式に配布しているサイトです.
- (そのソフトウェアがインターネット上で「公式に」
- 配布されているとしたら)
-
- MAINTAINER は,
- 例えば新しいバージョンのプログラムが出た場合に, 必要であれば
- スケルトンの更新をおこなう保守担当者の
- 電子メールアドレスです.
-
- 次の数行はとりあえず飛ばします.
-
- .include <bsd.port.mk>
-
- この行は, この ports に必要なその他の命令やコマンドは
- bsd.port.mk に
- 入っているということを示しています.
- これらはすべての ports で共通のものなので,
- それぞれの Makefile に書いておく必要はありません.
- そのため単一の標準ファイルに
- まとめられているのです.
-
- ここでは Makefile
- がどう働くかを詳細に調査するのが目的ではありませんので,
- MAN3 で始まる行は, インストールの後に
- ElectricFence のマニュアルを 圧縮するために使用される,
- と言っておくだけで充分でしょう. これにより,
- 貴重なディスクスペースが保護されているわけです. オリジナルの
- port では install
- ターゲットが用意されていないので,
- do-install からの 3 行が この ports
- によって生成されたファイルを
- 正しい場所に置くために使用されます.
-
-
-
- files ディレクトリ
-
- ports のチェックサム算出には MD5
- アルゴリズムを使用しているので, この チェックサム を含んでいる
- ファイルは md5 と呼ばれます.
- ちょっと混乱するかもしれませんが, このファイルは
- files という
- 名前のディレクトリに置かれています.
-
- このディレクトリは, ports に必要だけれども,
- 他のどこにも属さない 雑多なファイルも含んでいます.
-
-
-
- patches ディレクトリ
-
- このディレクトリには, FreeBSD
- ですべてを正常に動作させるのに 必要な パッチ が含まれています.
-
-
-
- pkg ディレクトリ
-
- このディレクトリには,
- 非常に役立つ三つのファイルが含まれています:
-
-
-
- COMMENT —
- プログラムについての 1 行の説明.
-
-
-
- DESCR — より詳細な説明.
-
-
-
- PLIST —
- プログラムのインストール時に作成される,
- すべてのファイルのリスト.
-
-
-
-
-
-
- ports が動かないのですが, どうしたらよいでしょう
-
- おやおや. では, 次の四つのどれかをやってみてください:
-
-
-
- 自分で修正する. ports
- の仕組みに関する技術的な詳細については,
- アプリケーションの移殖方法をご覧ください.
-
-
-
- 苦情をいう. これは電子メールでだけに
- してください. そのようなメールはまず, その port の保守担当者
- に送ってください. make maintainer とタイプ
- するか, Makefile を読むかして保守担当者
- の電子メールアドレスを見つけてください. その port の名前,
- バージョン(Makefile にある
- $FreeBSD: の行をコピーしてください), そして
- エラーに至るまでの出力を忘れずに添えてください. もし満足のいく
- 返答がもらえない場合には, send-prを使って,
- バグレポートを送ることもできます.
-
-
-
- 忘れてしまう. これはほとんどの場合最も簡単な方法です.
- ports
- のプログラムのうち必要不可欠な物はごくわずかです.
-
-
-
- FTP サイトからコンパイル済みのパッケージを入手する.
- “マスター”パッケージコレクションは FreeBSD の
- FTP サイトの
- パッケージディレクトリ に置いてありますが,
- まずあなたの近くのローカルミラーサイトを確認してください!
- ソースからのコンパイルに挑戦するよりも,
- パッケージを使うほうが (全体的に見て)
- ずっと確実に動作するでしょうし,
- より手っ取り早い方法でもあります.
- システムにパッケージをインストールするには, &man.pkg.add.1;
- を使ってください.
-
-
-
-
-
- 質問と回答集
-
-
-
-
- 私はモデムについての議論を
- しているのかと思っていました??!
-
-
-
- なるほど, あなたはきっとコンピュータの背面についている
- シリアルポートのことだと思ってしまったのでしょう.
- あるバージョンの Unixから別のバージョンの Unix
- へとプログラムを 移殖することを “porting”
- というのですが, ここで我たちは “porting” の結果
- という意味で “port” を使っています.
- (コンピュータに関わる人々の悪しき習慣として,
- ひとつの同じ言葉を複数の
- まったく違う意味として使うことがあるのです.)
-
-
-
-
-
- 私は, 標準以外のプログラムのインストールには packages
- を使うと 思っていたのですが.
-
-
-
- そのとおり. 通常は packages
- が最も手早くて簡単な方法です.
-
-
-
-
-
- それではどうして面倒な ports があるのですか?
-
-
-
- いくつかの理由があります:
-
-
-
- いくつかのソフトウェアのライセンス条件には,
- バイナリではなくソースコードでの
- 配布を求めているものがあります.
-
-
-
- バイナリ配布を信用していない人もいます.
- 少なくともソースコード があれば, ソースコードを読んで,
- (理論的には) 潜在的な問題点を自分で
- 見つけ出すこともできるはずです.
-
-
-
- ローカルなパッチを入手した場合,
- それを自分で追加するために
- ソースコードが必要になります.
-
-
-
- プログラムがいかにコンパイルされるべきかについて,
- あなたはパッケージを作った人とは
- 異なる見解を持っているかもしれません.
- どんな最適化オプションをつけるべきかとか,
- デバッグバージョンを作ってから それを strip
- するべきだとか, いや, そうするべきでない, などなど,
- 確固たる見解を持っている人もいるでしょう.
-
-
-
- ソースコードを手元に置いておきたい人たちもいます.
- 彼らは, 退屈したときに眺めたり, あちこち解析してみたり,
- ソースコードを 借用したり (もちろん,
- ライセンスが許せばの話ですが) するのです.
-
-
-
- あなたがソースコードを持っていなければ,
- それはソフトウェアとは 言えませんね! ;-)
-
-
-
-
-
-
-
- パッチとは何ですか?
-
-
-
- パッチとは,
- あるバージョンから他のバージョンへどのように変更するかを
- 示す, (通常は) 小さなファイルです. “23
- 行目を削除”, “468 行目の後に これらの 2
- 行を追加”, または“197
- 行目をこのように変更”というような 内容を含んでいます.
- これは, “diff”
- という名前のプログラムで生成されます.
-
-
-
-
-
- tarball とは一体何ですか?
-
-
-
- .tar または
- .tar.gz という拡張子を持つファイルです.
- (.tar.Z のようなバリエーションも
- ありますし, DOS のファイルシステム用に
- .tgz
- と短縮される場合もあります.)
-
- これは基本的に, 一つのファイルに固めた
- (.tar) ディレクトリツリーです.
- 圧縮されている (.gz) 場合もあります.
- これは元々 Tape
- ARchives (訳注: テープアーカイブ)
- (このため tar という名前なのです)
- で使われていたものなのですが,
- インターネット上でプログラムのソースコードを配布するために
- 広く使われている方法です.
-
- これらのファイルの中身を見たり,
- 展開したりすることもできます. FreeBSD
- の基本システムに付属する Unix 標準の tar
- コマンドを使ってみると 次のようになります:
-
-
- &prompt.user; tar tvzf foobar.tar.gz
-&prompt.user; tar xzvf foobar.tar.gz
-&prompt.user; tar tvf foobar.tar
-&prompt.user; tar xvf foobar.tar
-
-
-
-
-
-
-
- チェックサムとは何ですか?
-
-
-
- これは,
- チェックしたいファイル中のすべてのデータを加えて生成した
- 数値です. 何か文字が書き換わっていたら,
- チェックサムが一致しなくなります. そのため,
- 単純な比較だけで違いを見つけることができるのです.
- (実際には, 文字の位置が入れ替わるなどの,
- 単純な加算ではわからない問題も
- 見つけることができる複雑な方法で計算されています.)
-
-
-
-
-
- 今まで「CD-ROM から Ports をコンパイルする」にあるようにして
- Ports をインストールできていたのですが,
- kermit のインストールをしようとするとうまくいきません.
-
-
- &prompt.root; make install
->> cku190.tar.gz doesn't seem to exist on this system.
->> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
-
-
- なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の
- CD-ROM を買ってしまったのでしょうか?
-
-
-
- CD-ROM から Ports
- をコンパイルする セクションで解説されているとおり,
- Ports の一部に, ライセンス上の制限から CD-ROM
- に収録できない種類のものが存在します.
- Kermit はその一例です. Kermit のライセンス条件は, tarball を
- CD-ROM に収録することを禁じているため, 申し訳ありませんが
- 手動で tarball を取得してください.
- 質問にあるようなエラーメッセージが表示されるのは,
- あなたがそのときにインターネットへ接続していなかったことによります.
- あらかじめ上記のサイトのいずれかからファイルを
- ダウンロードしておけば, プロセスを再開することができます.
- (ダウンロードの際には,
- あなたに最も近いサイトを選ぶようにしてください. そうすれば,
- 時間とインターネットの帯域の節約になります)
-
-
-
-
-
- kermit の tarball を入手しましたが,
- /usr/ports/distfiles に
- ファイルを置こうとすると,
- 書き込み権がないというエラーがでます.
-
-
-
- ports のしくみは
- /usr/ports/distfiles から tarball
- を探します. しかし, これは read-only の CD-ROM
- へのシンボリックリンクなので,
- ここにファイルを置くことはできません. 次のようにすれば,
- 他の場所を探すよう ports に指示することができます.
-
-
- &prompt.root; make DISTDIR=/where/you/put/it install
-
-
-
-
-
-
- ports では, すべてを /usr/ports
- に置いたときだけ動作するのでしょうか?
- システムの管理者によると, 私の個人的なファイルは
- /u/people/guests/wurzburger
- に入れなければならないのですが, これでは
- うまくいかないように思います.
-
-
-
- PORTSDIR 変数と
- PREFIX 変数を変更することで,
- 違うディレクトリを 使用することができます. 例えば,
-
-
- &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install
-
-
- とすると, ports は
- /u/people/guests/wurzburger/ports
- でコンパイルされ, すべて /usr/local
- 以下にインストールされます.
-
-
- &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install
-
-
- この場合, コンパイルは /usr/ports
- でおこない,
- /u/people/guests/wurzburger/local
- にインストールします. もちろん,
- 以下のように両者を組み合わせることも可能です.
-
-
- &prompt.root; make PORTSDIR=.../ports PREFIX=.../local install
-
-
- (省略せずに記述したら,
- このページに収めるには長すぎるのですが,
- 考え方は理解していただけたと思います)
-
- もし ports をインストールするたびに,
- これらを毎回タイプするのが 気に入らないのであれば,
- (正直に言って, 誰もそう思わないでしょう)
- これらを環境変数にセットしてしまうという手があります.
-
-
-
-
-
- 私は, FreeBSD の CD-ROM を持っていませんが,
- 私はすべての tarball を 私のシステムに置いておきたいのです.
- そうすれば, 私は ports をインストール するたびに,
- 毎回ダウンロードが終わるのを待たなくてすむでしょう.
- これを一度におこなう簡単な方法はありませんか?
-
-
-
- ports コレクション全体の tarball を持ってくるには,
- 次のようにしてください.
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; make fetch
-
-
- ports の下のディレクトリひとつの tarball
- を持ってくるには, 次のように してください.
-
-
- &prompt.root; cd /usr/ports/directory
-&prompt.root; make fetch
-
-
- ports をひとつだけ持ってくる方法は,
- きっと既にご存知だと思います.
-
-
-
-
-
- マスタ FTP サイトから tarball を持ってくるより,
- 近くにある FreeBSD の
- ミラーサイトから持ってきた方が速いはずです. MASTER_SITES
- に書かれている サイト以外から持ってくるように ports
- に指示する方法はありませんか?
-
-
-
- もちろんあります. 例えば ftp.FreeBSD.org が
- MASTER_SITES に書かれている
- サイトより近いとしたら, 以下のようにしてください.
-
-
- &prompt.root; cd /usr/ports/directory
-&prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
-
-
-
-
-
-
- ダウンロードをする前に,
- どんなファイルが必要なのか知りたいのですが.
-
-
-
- make fetch-list とすると, ports
- に必要なファイルの一覧を表示できます.
-
-
-
-
-
- ports のコンパイルを途中で止める方法はありますか?
- 私はインストールをする前に
- いろいろとソースコードを解析したいのですが, 毎回 control-C
- を打たなければならないのが少し面倒です.
-
-
-
- make extract を実行すると,
- ファイル転送とソースコードの展開まで
- おこなったところで停止します.
-
-
-
-
-
- 自分で ports を作ろうとしています. 私の作ったパッチが
- 正しく処理できることを確認できるように,
- コンパイルを止めたいのです. パッチのための make
- extract のようなものはありませんか?
-
-
-
- あります. make patch
- があなたのお望みのものです. おそらく
- PATCH_DEBUG オプションも同様に
- お役に立つことでしょう. ところで,
- あなたの努力に感謝いたします!!
-
-
-
-
-
- あるコンパイルオプションはバグの
- 原因になるという話を聞きました. 本当なのでしょうか?
- どうやったら正しい設定で ports
- をコンパイルできますか?
-
-
-
- 本当です. gcc の バージョン 2.6.3
- (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では,
- オプションを
- オプションなしで
- 使うと, バグのあるコードを出力します (ほとんどの ports は
- オプションを 使いません).
- コンバイラオプションは次のように定義 すべき
- です.
-
-
- &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install
-
-
- これを /etc/make.conf
- に書いておくこともできますが, 残念なことに すべての ports
- がこの指定を尊重してくれる 訳ではありません.
- もっとも確実なのは make configure
- を実行し, ソースディレクトリの Makefile
- を見て手で修整することですが, ソースが
- 多くのサブディレクトリにわかれていて, 各々に Makefile
- がある場合は 大変な仕事になります.
-
-
-
-
-
- ports がたくさんありすぎて,
- 私の欲しいものがなかなか見つけられません. どんな ports
- が使えるのか, リストはどこかにありませんか?
-
-
-
- /usr/ports の中にある
- INDEX ファイルを見てみましょう.
- あるキーワードで ports コレクションを検索したければ,
- それも可能です. たとえば,
- 以下のようにすればプログラミング言語 LISP に関連した ports
- を見つけることができます:
-
- &prompt.user; cd /usr/ports
-&prompt.user; make search key=lisp
-
-
-
-
-
- foo ports
- をインストールしたいのですが, それのコンパイルは
- すぐに停止して, bar ports
- のコンパイルが始まってしまいます. 一体どうして?
-
-
-
- foo ports が,
- bar ports
- の提供する何らかの機能を必要としているからです. 例えば
- foo が画像を使うとすると,
- bar は画像処理に必要な
- ライブラリを持っている, などです. または,
- bar は foo
- をコンパイルするのに必要なツールなのかもしれません.
-
-
-
-
-
- ports から
- grizzle
- プログラムをインストールしましたが, まったく
- ディスクスペースの浪費です. 削除したいのですが,
- すべてのファイルが どこへインストールされたのかわかりません.
- 何か手がかりはありませんか?
-
-
-
- 大丈夫, 次のようにしてください.
-
-
- &prompt.root; pkg_delete grizzle-6.5
-
-
- もしくは, 次のようにします.
-
- &prompt.root; cd /usr/ports/somewhere/grizzle
-&prompt.root; make deinstall
-
-
-
-
-
- ちょっと待ってください.
- 削除しようとするコマンドのバージョン番号を
- 知っていなくてはならないのでしょうか? あなたは,
- 私がバージョン番号を
- 覚えていることを本気で当てにしているのでしょうか?
-
-
-
- そんなことはありません.
- バージョン番号は次のようにすればわかります.
-
-
- &prompt.root; pkg_info -a | grep grizzle
-Information for grizzle-6.5:
-grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game.
-
-
-
-
-
-
- ディスク容量のことなのですが, ports
- のディレクトリは非常に膨大な容量を 使うように見えます.
- 残しておいた方がよいのでしょうか? 削除してしまっても
- よいのでしょうか?
-
-
-
- はい. インストールが首尾よく終わり,
- もうソースコードが必要でないと思うなら,
- それらを残しておく理由はないでしょう. 一番よい方法は,
- 次の通りです.
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; make clean
-
-
- これは, すべての ports のサブディレクトリを調べ, 各
- ports のスケルトン以外の削除をおこないます.
-
-
-
-
-
- これを試してみたのですが, tarball や ports
- で使われたファイルが distfiles
- ディレクトリに残っています.
- これも削除してしまっても大丈夫ですか?
-
-
-
- はい. それを使った作業が終わったのであれば,
- 削除してしまっても大丈夫です.
- それには, 手動でファイルを操作するか,
- もしくは make distclean
- を使うことで削除することができます.
-
-
-
-
-
- 私はとてもとてもたくさんのプログラムを楽しみたいのです.
- 一度にすべての ports
- をインストールする方法はありませんか?
-
-
-
- 次のようにしてください.
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; make install
-
-
-
-
-
-
- やってみました. 時間がとてもかかるだろうと思ったので,
- そのまま実行を 続けさせて, 私は寝ました.
- 翌朝コンピュータを見てみると, 三つ半の ports しか
- 処理が終わっていませんでした.
- なにか悪かったのでしょうか?
-
-
-
- これは ports の中には私たちの決められないこと
- (例えば, あなたが A4 の 用紙に印刷したいのか, US
- レターサイズの用紙に印刷したいのかなど) について
- 質問してくるものがあるからです.
- それらの質問には手動で答える必要があります.
-
-
-
-
-
- 私は一日中モニタの前に座って過ごしたりしたくないのですが.
- 何かよいアイデアはありませんか?
-
-
-
- では, あなたが寝に / 仕事に /
- 公園にいく前に以下を実行してください:
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; make -DBATCH install
-
-
- これでユーザの入力を要求しないすべての ports
- をインストールします. そして, 戻ってきてから,
- 次のように実行してください.
-
-
- &prompt.root; cd /usr/ports
-&prompt.root; make -DIS_INTERACTIVE install
-
-
- そして, 残りの作業を実行してください.
-
-
-
-
-
- 私たちは ports コレクションにある
- frobble を使っています. ですが,
- 私たちの必要に応じて ports を変更したところがあるのです.
- 自分でパッケージを作って, それを私たちのサイトのまわりに
- 簡単に配布できるような方法がありますか?
-
-
-
- もちろんあります.
- 変更点をパッチにする方法は知っていますよね:
-
-
- &prompt.root; cd /usr/ports/somewhere/frobble
-&prompt.root; make extract
-&prompt.root; cd work/frobble-2.8
-[あなたのパッチを当ててください]
-&prompt.root; cd ../..
-&prompt.root; make package
-
-
-
-
-
-
- この ports の技術は本当に賢いですね.
- どのようにして動いているのか
- 私はどうしても知りたいと思います. その秘密は何ですか?
-
-
-
- 秘密は一切ありません. Makefiles
- ディレクトリ にある
- bsd.port.mk と
- bsd.port.subdir.mk
- ファイルを見るだけです.
-
- 複雑なシェルスクリプトを嫌う読者は,
- このリンクを追いかけないほうが よいでしょう.
-
-
-
-
-
-
+
+%man;
+
+
+%bookinfo;
+
+ %authors;
+ %jauthors;
+
+%mailing-lists;
+]>
+
+
+
+ FreeBSD Porter's Handbook
+
+
+
+ The FreeBSD Documentation Project
+
+
+ doc@@FreeBSD.org
+
+
+
+
+
+ April 2000
+
+
+ 2000
+
+
+ &bookinfo.legalnotice;
+
+
+
自分で port を作る
原作: &a.jkh;, &a.gpalmer;, &a.asami;,
@@ -1282,8 +83,9 @@ grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arc
とタイプすることで, 正しい値を設定する
ことができます.
+
-
+
3分porting
この節では, 簡単なportの方法について説明します.
@@ -1302,7 +104,7 @@ grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arc
があります.
-
+
Makefile の作成
最小限のMakefile
@@ -1336,9 +138,9 @@ USE_IMAKE= yes
き込まれます. もっと詳しい例が見たければ, Makefileのお手本
の節をご覧ください.
-
+
-
+
Package記述ファイルの作成
どのようなportでも, packageにするしないに関わらず, 3つ
@@ -1347,7 +149,7 @@ USE_IMAKE= yes
COMMENT, DESCR,
それに PLISTです.
-
+
COMMENT
これには, そのportについての説明を1行で書きます.
@@ -1358,9 +160,9 @@ USE_IMAKE= yes
A cat chasing a mouse all over the screen
-
+
-
+
DESCR
これは, そのソフトウェアについての,
@@ -1394,9 +196,9 @@ WWW: http://www.oneko.org/
- Satoshi
asami@cs.berkeley.edu
-
+
-
+
PLIST
このファイルには,
@@ -1442,19 +244,19 @@ lib/X11/oneko/mouse.xpm
linkend="porting-autoplist">packing list を自動的に作る
と時間の節約になるかもしれせん.
-
-
+
+
-
+
チェックサムファイルの作成
ただ, make makesum
と入力するだけです. bsd.port.mk
にルールがあるので,
自動的にfiles/md5が生成されます.
-
+
-
+
Portのテスト
そのportが正しく動くことを,
@@ -1526,9 +328,9 @@ lib/X11/oneko/mouse.xpm
ステップ4の後にそのソフトウェアを使用してみて, package
からインストールされた場合に正しく動作するかを
確認してください.
-
+
-
+
portlint でチェック
portlintを使って, あなたの port
@@ -1539,9 +341,9 @@ lib/X11/oneko/mouse.xpm
が正しい形式になっているか, package
の名前が正しいか, をチェックするのに良いでしょう.
-
+
-
+
Portの送付
まず, :-)
-
-
+
+
-
+
本格的なport
残念ながら, 移植がそう簡単ではなく,
@@ -1604,7 +406,7 @@ lib/X11/oneko/mouse.xpm
そのような場合にどのように変更を施し, 動
くようにしたらよいかを順を追って説明します.
-
+
port構築の詳細
まず, あなたがportのディレクトリで
@@ -1760,9 +562,9 @@ lib/X11/oneko/mouse.xpm
これで, ユーザが make
と入力したときに何が起こ るのかが理解できたと思います.
では, 完璧なportを手順を追っ て作ってみましょう.
-
+
-
+
オリジナルのソースの入手
オリジナルのソースを, (普通は)
@@ -1820,9 +622,9 @@ lib/X11/oneko/mouse.xpm
そのような状況にはちゃんと対応できるようになっ ています.
(以下のPATCHFILESの記述
をご覧ください).
-
+
-
+
Portの修正
適当なディレクトリにtarファイルを展開して,
@@ -1853,9 +655,9 @@ lib/X11/oneko/mouse.xpm
BSDの標準的な著作権条件によりカバーされていると見な
されます.
-
+
-
+
パッチをあてる
port
@@ -1878,9 +680,9 @@ lib/X11/oneko/mouse.xpm
(例,
patch-aaとpatch-abが共にWRKSRC/foobar.c
を修正する, など.)
-
+
-
+
コンフィグレーション
カスタマイズのために追加したいコマンドがあれば,
@@ -1892,9 +694,9 @@ lib/X11/oneko/mouse.xpm
Makefile
のターゲットおよび/あるいはスクリプトで処理す
ることもできます.
-
+
-
+
ユーザからの入力の扱い
もし, そのportがビルド, コンフィグレーション,
@@ -1917,10 +719,10 @@ lib/X11/oneko/mouse.xpm
こうすることによって, CD-ROM や ftp に 置く
packageを我々が作成することができます.
-
-
+
+
-
+
Makefile の作成
Makefile の作成は非常に単純です. 繰り返しになりますが,
@@ -1935,7 +737,7 @@ lib/X11/oneko/mouse.xpm
Makefile をデザインするときに問題となるところを順に追っ
て見てみましょう.
-
+
オリジナルのソース
ソースはDISTDIRに, 標準的なgzipされた
@@ -1958,9 +760,9 @@ lib/X11/oneko/mouse.xpm
do-extract ターゲットを作 成して,
デフォルトを上書きすることもできます. しかし, そこま
でする必要があることはめったにないでしょう.
-
+
-
+
DISTNAME
DISTNAME には port
@@ -1991,9 +793,9 @@ lib/X11/oneko/mouse.xpm
展開時に
はなにもせずに後で使うためにそのまま置いておかれます.
-
+
-
+
PKGNAME
もし, DISTNAME が我々の
-
+
-
+
CATEGORIES (分類)
完成した package の実体は
@@ -2039,9 +841,9 @@ lib/X11/oneko/mouse.xpm
make package はなにも考えずに
新しいディレクトリを作ってしまいますので,
注意してください.
-
+
-
+
MASTER_SITES
オリジナルの配布ファイルを指し示す FTP または HTTP の
@@ -2080,9 +882,9 @@ MASTER_SITE_SUBDIR= applications
することによって, デフォルトの FTP サイトではなく, これらの
有名なアーカイブの
ミラーの中で好みのものを使用することが可能 です.
-
+
-
+
PATCHFILES
もし,
@@ -2129,9 +931,9 @@ MASTER_SITE_SUBDIR= applications
ターゲットにコピーしたパッチファイル
を削除するコマンドを追加するのを忘れないでください.
-
+
-
+
MAINTAINER
あなたのメールアドレスをここに入れてください.
@@ -2141,9 +943,9 @@ MASTER_SITE_SUBDIR= applications
保守担当者(maintainer)の責任についての詳細は, Makefile 中の
MAINTAINER の節をご覧ください.
-
+
-
+
依存関係
このプログラムが他のportに依存する場合には, 必要なものが
@@ -2152,7 +954,7 @@ MASTER_SITE_SUBDIR= applications
よくあるケースのためにあらかじめ設定された依存変数や,
いくつかの依存関係の制御のための変数があります.
-
+
LIB_DEPENDS
Port が必要とする非標準の共有ライブラリを
@@ -2197,9 +999,9 @@ MASTER_SITE_SUBDIR= applications
の中にも含まれますので, ユーザのシステムに存在しなければ,
pkg_add が自動的にインストールします.
-
+
-
+
RUN_DEPENDS
Port
@@ -2257,9 +1059,9 @@ RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \
DEPENdS_TARGET
と同じ場合には省略可能です.
-
+
-
+
BUILD_DEPENDS
Port
@@ -2291,9 +1093,9 @@ BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip
DEPENDS_TARGET
と同じ場合には省略可能です.
-
+
-
+
FETCH_DEPENDS
この変数は,
@@ -2318,9 +1120,9 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2
target の部分は
DEPENDS_TARGET
と同じ場合には省略可能です.
-
+
-
+
DEPENDS
上記の四つのいずれにもあてはまらないような
@@ -2332,9 +1134,9 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2
:target という形式のリスト
になります. 上記の四つと違って特に
“確認”するものがありませんので.
-
+
-
+
よくある依存関係を表す変数
もし ports が X Window System を必要とするのであれば,
@@ -2352,9 +1154,9 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2
(特に最後のは重要で, FreeBSD のいくつかの
バージョンでは基本システムに perl5 を含みますが,
他のものは含んでいません.)
-
+
-
+
依存関係に関する注意
上で述べたように, 依存する ports
@@ -2401,10 +1203,10 @@ BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract
BUILD_DEPENDS と
RUN_DEPENDS で書くことをお勧めします
— 少なくとも意図が明確になります.
-
-
+
+
-
+
コンパイル時の特別な指定
GNUのmakeを使う場合には,
@@ -2458,10 +1260,10 @@ BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract
install と
INSTALL_TARGET についても同様です.
-
+
-
+
NO_INSTALL_MANPAGES
あなたの port がimakeは使うものの
@@ -2471,10 +1273,10 @@ BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract
を指定してください. つい でに,
作者を探し出して八つ裂きにするといいでしょ う. (-_-#)
-
-
+
+
-
+
特別な配慮
Portを作成する場合,
@@ -2482,7 +1284,7 @@ BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract
この節では,
それらのうちもっともありがちなものについて説明します.
-
+
ldconfig
共有ライブラリをインストールするときには,
@@ -2521,10 +1323,10 @@ lib/libtvl80.so.1
が使えなくなっちゃった!」). この掟を破った者は,
永久に地獄の底で苦しみ続けるように,
閻魔様に頼んでおきます.
-
-
+
+
-
+
ELF 対応
FreeBSD は 3.0-RELEASE で ELF に移行しましたので,
@@ -2541,7 +1343,7 @@ lib/libtvl80.so.1
をアップグレードしたい場合に参考になるように,
しばらくのあいだは残しておきます.
-
+
a.out ライブラリの退避
すべての a.out ライブラリは, /usr/local/lib
@@ -2555,9 +1357,9 @@ lib/libtvl80.so.1
ライブラリを移動するだけなので, ELF と a.out
の両方のライブラリが標準的な ディレクトリにあるシステムでは,
このターゲットを実行しても安全です.
-
+
-
+
フォーマット
port ツリーは package
@@ -2577,9 +1379,9 @@ lib/libtvl80.so.1
この変数が設定された port は, ELF
システム上でのビルドの際スキップされます.
-
+
-
+
PORTOBJFORMAT
bsd.port.mk において
@@ -2605,9 +1407,9 @@ PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout
PORTOBJFORMAT
を参照する必要はありません.
-
+
-
+
共有ライブラリの作成
以下は, a.out と ELF
@@ -2660,9 +1462,9 @@ PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aoutPORTOBJFORMAT
の設定を気にせずに,
ただ単純にリンクを作成してください.
-
+
-
+
LIB_DEPENDS
すべての port の Makefile を編集して,
@@ -2672,9 +1474,9 @@ PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aoutfoo\\.1\\.\\(33|40\\) から
foo.2) マッチングは grep
-wF を使って行われます.
-
+
-
+
PLIST
PLIST は, a.out
@@ -2699,9 +1501,9 @@ PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aoutNO_FILTER_SHLIBS 変数を定義すれば,
前節で説明されている PLIST
編集の機能が停止されます.
-
+
-
+
ldconfig
@@ -2722,10 +1524,10 @@ ${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ....
パッケージのフォーマットに応じて, 正しい
ldconfig
が呼ばれることを保証するためのものです.
-
-
+
+
-
+
MASTERDIR
もし, あなたの port が 変数(例えば
@@ -2786,9 +1588,9 @@ MASTERDIR= ${.CURDIR}/../xdvi300
の行が, xdvi300/Makefile の
RESOLUTION=300 の行を無効にし, port
は解像度を118として作成されます.
-
+
-
+
共有ライブラリのバージョン
まず,
@@ -2829,9 +1631,9 @@ MASTERDIR= ${.CURDIR}/../xdvi300
libfoo4.so.1.0 へ変えることによって,
バージョン 3.2 とバージョン 4.0 共に他の port
からリンクされることができるようになります.
-
+
-
+
マニュアル
MAN[1-9LN] 変数を使用すると,
@@ -2919,9 +1721,9 @@ ${PREFIX}/man/ja/man4/baz.4.gz
指すシンボリックリンクが作成されます.
-
+
-
+
Motifを必要とするport
最近はコンパイルに Motif
@@ -2937,7 +1739,7 @@ ${PREFIX}/man/ja/man4/baz.4.gz
する人々のために)にリンクできるような
しくみが用意されています.
-
+
REQUIRES_MOTIF
Motif
@@ -2945,9 +1747,9 @@ ${PREFIX}/man/ja/man4/baz.4.gz
ではこの変数を指定してください. これによって,
Motifを持っていない人が
このportをコンパイルしようとするのを未然に防ぎます.
-
+
-
+
MOTIFLIB
この変数は bsd.port.mk によって
@@ -2981,10 +1783,10 @@ ${PREFIX}/man/ja/man4/baz.4.gz
れます. したがって前に や
をつけ る必要はありません.
-
-
+
+
-
+
X11 のフォント
もし, あなたの port が X window system
@@ -2998,9 +1800,9 @@ ${PREFIX}/man/ja/man4/baz.4.gz
font path
に加えるように促すメッセージを出力するようにしてください.
-
+
-
+
Info ファイル
新しい版の texinfo(2.2.2-RELEASE
@@ -3307,16 +2109,16 @@ diff -u -r1.15 PLIST
ファイルをチェックしましょう.
-
+
-
+
pkg/ サブディレクトリ
まだ触れていない, いくつかのこつが
pkg/ サブディレクトリにはあり,
時として便利でしょう.
-
+
MESSAGE
もし, インストールする人にメッセージを表示する
@@ -3335,9 +2137,9 @@ diff -u -r1.15 PLIST
post-install
で表示するようにするべきでしょう.
-
+
-
+
INSTALL
バイナリパッケージが pkg_add
@@ -3364,9 +2166,9 @@ diff -u -r1.15 PLIST
から明示的に呼ぶ必要があります.
-
+
-
+
REQ
port が(インストールされるシステムの状態によって)
@@ -3376,9 +2178,9 @@ diff -u -r1.15 PLIST
インストール及びデインストール (package
の削除)の時に自動的に実行され,
それらが処理されるべきかを決定します.
-
+
-
+
make の変数にあわせた PLIST
の変更
@@ -3437,9 +2239,9 @@ PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
書きかえられたあとのファイルを編集する必要がある場合には,
post-install で,
TMPPLIST を書きかえてください.
-
+
-
+
pkg
サブディレクトリにあるファイル名の変更
@@ -3509,10 +2311,10 @@ PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
PKG_ARGSを変更すると これらのファイルは
port から正しく /var/db/pkg
にインストールされなくなります.
-
-
+
+
-
+
ライセンス上の問題
ソフトウェアによっては制限の厳しい
@@ -3582,9 +2384,9 @@ PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
ファイルを書き換えるのを忘れないようにし
てください.
-
+
-
+
アップグレード
Port
@@ -3632,9 +2434,9 @@ PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
繰り返しになりますが, 既存の ports の変更を送るときには,
&man.shar.1; ではなく &man.diff.1;
を使用してください!
-
+
-
+
やっていいことといけないこと
この節では,
@@ -3649,7 +2451,7 @@ PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
するのを早くし,
あなたが何をしているか理解していることも示します.
-
+
バイナリのstrip
バイナリは strip してください.
@@ -3672,9 +2474,9 @@ post-install:
コマンドで確認できます. これが`not
stripped'と言わなければ,
stripされているということです.
-
+
-
+
INSTALL_* マクロ
あなた自身の *-install
@@ -3717,9 +2519,9 @@ post-install:
というような)形で使うことができます.
どのようにこれらを使用するかは以下の例を見てください.
-
+
-
+
WRKDIR
WKRDIR
@@ -3732,9 +2534,9 @@ post-install:
にあるファイルを修正する必要がある ときには, 変数の再定義
によって行ない, 上書きはしないでください.
-
+
-
+
WRKDIRPREFIX
WRKDIRPREFIX
@@ -3757,9 +2559,9 @@ post-install:
頭に
${WRKDIRPREFIX}${.CURDIR}
が付いている 事を確認してください.
-
+
-
+
OS や OS のバージョンの区別
Port の過程で, 修正や, どのバージョンの UNIX
@@ -4207,9 +3009,9 @@ post-install:
1つか2つの場合だけでしょう.
以前のportが誤った場所でそのマクロを使っているからと いって,
それをまねする理由はありません.
-
+
-
+
bsd.port.mk の後に書くこと
.include <bsd.port.mk>
@@ -4343,9 +3145,9 @@ post-install:
.if ${PORTOBJFORMAT} == "aout"
${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endif
-
+
-
+
付加的ドキュメント
普通のマニュアルや info
@@ -4396,9 +3198,9 @@ post-install:
pkg/PLIST に加える必要はありま
せん.
-
+
-
+
DIST_SUBDIR
/usr/ports/distfiles
@@ -4431,9 +3233,9 @@ post-install:
MASTER_SITES
には影響しないことに注意して ください.
-
+
-
+
RCS文字列
RCS
@@ -4445,9 +3247,9 @@ post-install:
ドル記号 ($) で囲まれており,
$FreeBSD や $RCS
などで始まり ます.
-
+
-
+
パッチ作成上の注意
diffの再帰 ()
@@ -4472,9 +3274,9 @@ post-install:
ターゲットで消す方が簡単です. できあがった 差分に満足したら,
それらをソースのファイルごとに別々の
パッチファイルに分割してください.
-
+
-
+
PREFIX
なるべく port は PREFIX
@@ -4528,9 +3330,9 @@ post-install:
を渡し てください. こうしておけば, `/usr/local'
がまるごとどこか他 の場所に移してあるサイトでも,
あなたのportがそのまま使える 可能性が高くなります.
-
+
-
+
ディレクトリ構成
インストール時には PREFIX
@@ -4559,9 +3361,9 @@ post-install:
ファイルのインストール先として
PREFIX/news
を使用します.
-
+
-
+
空のディレクトリの除去
ports は デインストール(削除) の際には,
@@ -4602,9 +3404,9 @@ lib/X11/oneko/sounds/cat.au
が空でない場合でも エラーメッセージは表示されませんし,
pkg_delete
が異常終了することもありません.
-
+
-
+
UID
もしあなたの
@@ -4652,9 +3454,9 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
この範囲の UID や GID を予約するような port を作ったり,
既存の port にそのような改変を行って我々に送るときには,
UID の予約に関する注意書きをつけてください.
-
+
-
+
合理的な port
Makefile
@@ -4668,18 +3470,18 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
CONFIGURE_ARGS +=
--prefix=${PREFIX} とするかわりに,
GNU_CONFIGURE とする, などです.
-
+
-
+
CFLAGS の尊重
CFLAGS 変数は尊重すべきです. その
port がこれを無視するのであれば,
NO_PACKAGE=ignores cflags を
Makefile に加えてください.
-
+
-
+
コンフィグレーション(設定)ファイル
もしあなたの port が設定ファイルを
@@ -4699,26 +3501,26 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
ユーザがそのファイル
をコピーして編集をしなければならないことを知らせましょう.
-
+
-
+
Portlint
送付や commit をする前に portlint
を使ってチェックしましょう.
-
+
-
+
フィードバック
Portを作るためにソフトウェアに変更を加えたら,
なるべく原作者にその旨を伝えてパッチ等を送ってください.
これらが次のリリースに取り入れられれば,
アップグレードが楽になります.
-
+
-
+
その他諸々
pkg/DESCR,
@@ -4736,9 +3538,9 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
法律に関することには, 十分注意をはらってください.
私達に法律に反するような形でソフトフェアの配布をさせない
でください!
-
+
-
+
困ったら....
私たちに質問を送る前に,
@@ -4749,10 +3551,10 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
それでもわからないことがあったら,
一人で悩まないでどんどん 質問してください! :-)
-
-
+
+
-
+
Makefile のお手本
これはportの Makefile
@@ -4846,9 +3648,9 @@ pre-install:
[最後には必ず]
.include <bsd.port.mk>
-
+
-
+
自動的な package list の生成
まず, あなたの port が PLISTPLIST の
@@ -4888,9 +3690,9 @@ pre-install:
port によってインストールされるライブラリは,
ldconfig の節で明示したように
記載されるべきです.
-
+
-
+
Packageの名前
Package の名前は以下のルールにしたがってつけてください. こ
@@ -5080,9 +3882,9 @@ pre-install:
年.月
.日)
を使うなどしてください.
-
+
-
+
カテゴリ
すでに御存知のように, ports はいくつかのカテゴリに
@@ -5091,7 +3893,7 @@ pre-install:
どのようにしてカテゴリに分類するかを理解する必要が
あります.
-
+
現在のカテゴリのリスト
まず, これが現在の port のカテゴリーのリストです.
@@ -5469,9 +4271,9 @@ pre-install:
-
+
-
+
適切なカテゴリの選択
多くのカテゴリに重なるので, どれを '第一'
@@ -5522,10 +4324,10 @@ pre-install:
するようにしてください — 新しい port
が間違ったカテゴリに import されて,
すぐ移動されることが多いので.)
-
-
+
+
-
+
このドキュメントと ports システムの変更
もしあなたが, たくさんの ports の保守を
@@ -5535,9 +4337,9 @@ pre-install:
最新の変更点については, いつでも, the bsd.port.mk CVS log で詳細な情報を得ることができます.
-
+
-
+
やっとおしまい!
いやはや, 長い文章ですみません.
@@ -5547,17 +4349,14 @@ pre-install:
FreeBSDプロジェクトに貢献するには, それ
がもっとも簡単な方法です!
:-)
-
-
-
+
+