日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、全翻訳済み)
6.4-STABLE-K, 7.2-STABLE-K, 8.0-STABLE-K は現在、 作成中で日々更新されています。 最新の snapshots を元に作成しています。
RELEASE(7) FreeBSD 多方面の情報マニュアル RELEASE(7)
名称
release - リリース構築基盤
解説
FreeBSD は、ユーザが FreeBSD オペレーティングシステムのリリース全てを作成
できるような完全な構築環境を提供しています。リリースを構築するために必要
なツールの全ては、 CVS リポジトリ中の src/release に揃っています。実のと
ころ、 CD-ROM を焼く際に使える ISO イメージ、インストール用フロッピ、 FTP
インストール用ディレクトリの生成をはじめとして、完全なリリースをコマンド
一発で構築できます。このコマンドは、 ``make release'' と、うまい名前が付
けられています。
リリースを構築する前に、 build(7) の内容によく馴染んでおいてください。ま
た、 ``make world'' によるソースからのシステムアップグレードの経験も必須
です。リリース構築プロセスは、 ``make buildworld'' の結果を /usr/obj に置
いておくことを要求します。完全なシステムのためのオブジェクトファイルを、
まっさらの chroot(8) 環境にインストールできるようにするために、これが必要
となります。リリースを進めるには、 md(4) (メモリディスク) デバイスドライ
バがカーネルに存在する (コンパイル済み、またはモジュールとして利用可能の
いずれも可) ことも必要です。
この文書は、ソースコード管理、品質管理など、リリースエンジニアリングプロ
セスに関するその他の側面は扱いません。
ターゲット
リリース用 makefile (src/release/Makefile) は、かなり難解です。ほとんどの
場合、 release ターゲットのことを考えるだけで済むと思います。
release ``make installworld'' を用いて、ファイルシステムの chroot(8)
環境にまっさらのシステムをインストールします。指定したバージョ
ンのソースコードをチェックアウトし、 ``make world'' を用いて、
まっさらの環境に完全なシステムを再構築します。そのあとに、ディ
ストリビューション別のパッケージング(まとめ上げ)、インストール
用フロッピディスクの構築、リリース文書の構築などの細かいステッ
プが続きます。
このターゲットは、 kern.securelevel sysctl を -1 (デフォルト)
とした root で構築する必要があります。
rerelease このターゲットは、リリース構築作業の結果を手で修正し、前の
``make release'' の中間結果を使い、最小のステップ数でリリース
を再構築することを想定したものです。
floppies 新規のブートおよび fixit フロッピの組を作成します。 release.5,
release.9, release.10 ターゲットを呼び、直前の ``make
release'' のフロッピイメージを再作成します。このターゲットは、
カスタムブートフロッピの作成にもっとも良く使用されます。
``make release'' により呼び出されるターゲットは次のとおりです。
release.1 ディレクトリ ${CHROOTDIR}/R をまっさらにし、 mtree(8) を用い
てシステム用のディレクトリ階層を構築します。
release.2 システムをディストリビューション用ディレクトリにインストール
します。
release.3 ``base'' ディストリビューションに対し、非 crypto バージョンの
いくつかのツールをビルドおよびインストールします。
release.4 GENERIC カーネルを作り、インストールします。
release.5 crunchgen(1) を用いて、インストール用フロッピに収容する
``crunched'' バイナリを構築します。
release.6 合成ディストリビューションを構築し、また、作成されたディスト
リビューションツリーを掃除しきれいにします。
release.7 組み立てられたディストリビューションツリーの tarball を生成し
ます。
release.8 ソースディストリビューションを作成します。
release.9 MFS root ファイルシステムを生成します。
release.10 boot, MFS root, fixit フロッピを生成します。
ftp.1 FTP インストールに適切な領域を ${CHROOTDIR}/R/ftp に整えま
す。
cdrom.1 CD-ROM イメージ構築に適切な領域を ${CHROOTDIR}/R/cdrom に整え
ます。
iso.1 CD-ROM リリース領域から ISO イメージを 2 つ構築します (インス
トール用と ``live'' ファイルシステムの 2 つ)。デフォルトでは
無効になっています。以下の MAKE_ISOS を参照してください。
fetch-distfiles
リリースビルドに必要な distfile で RELEASEDISTFILES にはまだ
無いものを取得します。
doc.1 FreeBSD ドキュメンテーションプロジェクトのソースドキュメント
(SGML, XML) をリリースに含める HTML / テキストドキュメントに
変換するために必要なツール全てを構築します。また、現在存在す
るユーザドキュメントも構築、インストールします。これに
は、Handbook, FAQ, article などが含まれます。
doc.2 リリースドキュメントを構築します。これには、リリースノート、
ハードウエアガイド、インストール作業説明書 (installation
instructions) が含まれます。
環境変数
指定しなければならない環境変数は以下のとおりです。
BUILDNAME 構築するリリースの名前。この名前は、 sys/conf/newvers.sh の中
で RELEASE の値を設定するのに使用します。この値は uname(1) の
出力を変更します。
CHROOTDIR chroot(8) 環境として、全リリース構築に使用するディレクトリ。
i386 アーキテクチャの場合、これが存在するファイルシステムには
少なくとも 2.3GB の空き領域が必要です。
CVSROOT FreeBSD CVS リポジトリの位置です。このパス名は、実システムルー
トから参照され、 chroot(8) されたディレクトリツリーのルートか
らの参照では ありません。
オプションの変数は次のとおりです。
CVSCMDARGS cvs(1) のコマンド checkout と update への追加の引数
です。例えば、この変数を ``-D '01/01/2002 00:00:00
GMT''' に設定して ``make release'' または ``make
rerelease'' すると、 cvs(1) はそれぞれ 2002 年 1 月
1 日 00:00:00 GMT のソースをチェックアウトまたは
アップデートするよう cvs(1) に指示します。
LOCAL_PATCHES /usr/src に対するパッチファイル。このパッチは、リ
リース構築を開始する前に、 chroot(8) 環境で適用され
ます。
PATCH_FLAGS パッチファイル
DOC_LANG 構築すべき SGML ベースドキュメンテーションの、言語
とコード。設定されないと、使用可能なすべての言語に
対し、ドキュメンテーションが構築されます。
DOCRELEASETAG ドキュメンテーションツリーのチェックアウト時に使用
する CVS タグ。通常、デフォルトで、ドキュメンテー
ションツリーの先頭が使用されます。 RELEASETAG がリ
リースタグを指定する場合、関連付けられたリリース
バージョンがデフォルトの代りに使用されます。
EXTLOCALDIR ${CHROOTDIR}/usr/local にコピーされるディレクトリ。
KERNEL_FLAGS リリース構築中のカーネル構築時に、この変数の内容が
make(1) に渡されます。例えば、この変数を ``-j 4''
に設定すると、 make(1) に最大 4 プロセスまで同時に
実行することを指示することになります。
KERNELS コンパイルして ``ベース'' 配布にインストールする、
追加のカーネル設定のリストを指定します。各カーネル
は、 /boot/<config> にインストールされ、ローダから
``boot <config>'' でブートできるようになります。
LOCAL_PATCHES を適用する際に用いる patch(1) コマン
ドに渡す引数。
LOCAL_SCRIPT chroot(8) 環境で、ローカルパッチ適用直後に実行され
るスクリプト。
MAKE_ISOS これを定義した場合、CD-ROM ステージのディレクトリの
内容から、ブータブル ISO CD-ROM イメージを生成しま
す。
NOCDROM 定義した場合、CD-ROM ステージのディレクトリを生成し
ません。
NODOC 定義した場合、 FreeBSD ドキュメンテーションプロジェ
クトの SGML ベースのドキュメントを生成しません。し
かしながら、 src/share/doc にある最小のドキュメン
テーションセットから ``doc'' ディストリビューション
が依然として作成されます。
NO_FLOPPIES 定義した場合、boot, fixit フロッピディスクイメージ
ファイルを生成しません。
NOPORTS 定義した場合、Ports Collection はリリースから省略さ
れます。
NOPORTREADMES これを定義した場合、 Ports Collection の各 port に
対する readme ファイルを作成しません。デフォルトの
動作は、 ``make release'' が ``make readmes'' を
${CHROOTDIR}/usr/ports から実行するというものであ
り、莫大な時間を費すことになります。
PORTSRELEASETAG ports ツリーのチェックアウト時に使用する CVS タグ。
通常、デフォルトで、ports ツリーの先頭が使用されま
す。 RELEASETAG がリリースタグを指定する場合、関連
付けられたリリースバージョンがデフォルトの代りに使
用されます。
NO_PREFETCHDISTFILES この変数が定義されている場合、 chroot(8) 環境に入る
前に、リリース構築に必要な distfile がダウンロード
されません。 NO_PREFETCHDISTFILES が設定されていな
い場合、取得が行われるのは、 RELEASEDISTFILES から
distfile を取得完了した後であることに注意してくださ
い。
RELEASEDISTFILES ports 用として、リリース構築に必要となるディストリ
ビューションファイルが存在するディレクトリです。こ
れにより、低速なリンク経由で distfiles をダウンロー
ドする際に費やされる莫大な時間を節約することができ
ます。
RELEASENOUPDATE ``make rerelease'' の際にこの変数の値を設定した場
合、 ``cvs update'' によるソースコード更新を行ない
ません。
RELEASETAG 構築するリリースに相当する CVS タグ。未定義の場
合、CVS ツリーの HEAD (``-CURRENT スナップショッ
ト'') から構築されます。
TARGET_ARCH ターゲットとなるマシンプロセッサアーキテクチャ。こ
の環境変数は ``uname -p'' の出力と同じものです。異
なるアーキテクチャ用にクロスビルドするにはこの環境
変数を設定してください
TARGET ターゲットとなるハードウェアプラットフォーム。この
環境変数は ``uname -m'' の出力と同じものです。ター
ゲットアーキテクチャをクロスビルドするのに必要な変
数です。例えば、PC98 マシン用にクロスビルドを行うに
は TARGET_ARCH=i386 と TARGET=pc98 が必要です。
WORLDDIR ``make buildworld'' が実行されたディレクトリです。
デフォルトは ${.CURDIR}/.. であり、通常は /usr/src
を指します。
WORLD_FLAGS リリース構築中の世界 (world) 構築時に、この変数の内
容が make(1) に渡されます。例えば、この変数を ``-j
4'' に設定すると、 make(1) に最大 4 プロセスまで同
時に実行することを指示することになります。
関連ファイル
/etc/make.conf
/usr/doc/Makefile
/usr/doc/share/mk/doc.project.mk
/usr/ports/Mk/bsd.port.mk
/usr/ports/Mk/bsd.sites.mk
/usr/share/examples/etc/make.conf
/usr/src/Makefile
/usr/src/Makefile.inc1
/usr/src/release/Makefile
/usr/src/release/${arch}/drivers.conf
/usr/src/release/${arch}/boot_crunch.conf
/usr/src/release/${arch}/fixit_crunch.conf
使用例
以下のコマンド列は FreeBSD 4.5 release を構築する際に使用したものです。
cd /usr
cvs co -rRELENG_4_5_0_RELEASE src
cd src
make buildworld
cd release
make release CHROOTDIR=/local3/release BUILDNAME=4.5-RELEASE \
CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_5_0_RELEASE
これらのコマンドを実行すると、FTP ディストリビューション用と、 CD-ROM
ディストリビューション用として使える完全なシステムがディレクトリ
/local3/release/R にできます。
次のコマンド列は、ローカルで修正したソースツリーの ``-CURRENT スナップ
ショット'' を構築するために使用できます。
cd /usr/src
cvs diff -u > /path/to/local.patch
make buildworld
cd release
make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \
CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch
関連項目
cc(1), crunchgen(1), cvs(1), install(1), make(1), patch(1), uname(1),
md(4), drivers.conf(5), make.conf(5), build(7), ports(7), chroot(8),
mtree(8), sysctl(8)
FreeBSD Release Engineering,
http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/.
FreeBSD Release Engineering of Third Party Packages,
http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/.
FreeBSD Developers' Handbook,
http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/.
歴史
FreeBSD 1.x では、チェックリストを手でチェックしながら、 Rod Grimes によ
りコンパイルされ、リリースが作成されました。不完全さはさておくにしても、
このチェックリストには、ファイルシステムを使えるようにするためのこまごま
とした要求が大量に含まれており、その実行は拷問としかいいようがないもので
した。
FreeBSD 2.0 リリースエンジニアリングを続ける中で、 src/release/Makefile
を直して、隔離された無菌環境でリリースを構築する際の退屈な作業のほとんど
を自動的に行なえるようにすることに、顕著な努力が払われました。
複数のブランチにまたがる 1000 回近くの改版を経て、 src/release/Makefile
の cvs(1) ログには、リリースエンジニアたちが経験した苦難のいくばくかを示
す生々しい歴史の記録が刻み込まれています。
作者
src/release/Makefile は、もともとは Rod Grimes, Jordan Hubbard, Poul
Henning Kamp が書きました。このマニュアルページは、 Murray Stokely
<murray@FreeBSD.org> が書きました。
バグ
FreeBSD ドキュメンテーションに対するインフラストラクチャ変更は頻繁で、こ
れが原因でセキュリティブランチ上のリリース構築が失敗することがあります。
最後に完全にサポートされた FreeBSD リリースからドキュメンテーションを
チェックアウトし、リリース構築することで、この問題を回避できます。例:
make release RELEASETAG=RELENG_4_5 DOCRELEASETAG=RELEASE_4_5_0 ...
FreeBSD 4.9 March 12, 2002 FreeBSD 4.9