総合手引 | セクション 7 | English | オプション |
リリースを構築する前に、 build(7) の内容によく馴染んでおいてください。 また、ソースからのシステムアップグレードの経験も必須です。 リリース構築プロセスでは、 現在動作しているカーネルに対応したソースから、そのシステム上で "make buildworld" によってコンパイルされた結果を、 /usr/obj に置いておくことが必要です。 完全なシステムのためのオブジェクトファイルを、まっさらの chroot(8) 環境にインストールできるようにするために、これが必要となります。 リリースを進めるには、 md(4) [英語] (メモリディスク) デバイスドライバがカーネルに存在する (コンパイル済み、またはモジュールとして利用可能のいずれも可) ことも必要です。
この文書は、ソースコード管理、品質管理など、 リリースエンジニアリングプロセスに関するその他の側面は扱いません。
release |
"make installworld"
を用いて、ファイルシステムの
chroot(8)
環境にまっさらのシステムをインストールします。
指定したバージョンのソースコードをチェックアウトし、
"make buildworld"
を用いて、まっさらの環境に完全なシステムを再構築します。
そのあとに、ディストリビューション別のパッケージング(まとめ上げ)、
インストール用フロッピディスクの構築、リリース文書の構築などの
細かいステップが続きます。
このターゲットは、 kern.securelevel sysctl を -1 (デフォルト) とした root で構築する必要があります。 |
rerelease | このターゲットは、リリース構築作業の結果を手で修正し、前の "make release" の中間結果を使い、最小のステップ数でリリースを再構築することを 想定したものです。 |
floppies | 新規のブートおよび fixit フロッピの組を作成します。 release.4, release.8, floppies.1, floppies.2, floppies.3 ターゲットを呼び、直前の "make release" のフロッピイメージを再作成します。 このターゲットは、カスタムブートフロッピの作成にもっとも良く使用されます。 |
package-split | |
ディスク 1 およびディスク 2 のイメージの、パッケージ関連部分を作成します。 ports チームが提供するパッケージビルドからパッケージを取り出して適切に編成するため、 src/release/package-split.py スクリプトから作られる必要なパッケージのリストを使用します。 この結果得られるディレクトリは、 iso.1 ターゲットで適切なパッケージ関連素材とともに ISO イメージを構築するように、 CD_PACKAGE_TREE 変数を介して "make release" に渡すことができます。 | |
"make release" により呼び出されるターゲットは次のとおりです。
release.1 | ディレクトリ ${CHROOTDIR}/R をまっさらにし、 mtree(8) を用いてシステム用のディレクトリ階層を構築します。 |
release.2 | システムをディストリビューション用ディレクトリにインストールします。 |
release.3 | GENERIC カーネルを作り、インストールします。 同時に KERNELS にリストされた他のカーネルも、作成しインストールします。 |
release.4 | crunchgen(1) を用いて、インストール用フロッピに収容する "crunched" バイナリを構築します。 |
release.5 | 合成ディストリビューションを構築し、 また、作成されたディストリビューションツリーを掃除しきれいにします。 |
release.6 | 組み立てられたディストリビューションツリーの tarball を 生成します。 |
release.7 | ソースディストリビューションを作成します。 |
release.8 | MFS root ファイルシステムを生成します。 |
floppies.1 | boot と kernel フロッピを生成します。 |
floppies.2 | fixit フロッピを生成します。 |
floppies.3 | ${CHROOTDIR}/R/ftp/stage/floppies ステージディレクトリでの作業の仕上げをします。 |
ftp.1 | FTP インストールに適切な領域を ${CHROOTDIR}/R/ftp に整えます。 |
cdrom.1 | live ファイルシステム CD-ROM イメージ用の配置を、 ${CHROOTDIR}/R/cdrom 以下に作成します。 |
cdrom.2 | 1 枚目および 2 枚目の CD-ROM イメージ用の配置を作成します。 |
cdrom.3 | ブート専用 CD-ROM イメージおよびブート専用 UFS miniroot イメージ用の配置を作成します。 |
iso.1 | CD-ROM リリース領域から ISO イメージを構築します (インストール用と "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 アーキテクチャの場合、これが存在するファイルシステムには 少なくとも 3.2GB の空き領域が必要です。 | |
CVSROOT | |
FreeBSD CVS リポジトリの位置です。 このパス名は、実システムルートから参照され、 chroot(8) されたディレクトリツリーのルートからの参照では ありません。 | |
オプションの変数は次のとおりです。
CD_PACKAGE_TREE | |
1 枚目および 2 枚目の CD-ROM イメージに追加する素材を含んだディレクトリです。 1 枚目のディスクの追加ファイルは ${CD_PACKAGE_TREE}/disc1 に、2 枚目のディスクの追加ファイルは ${CD_PACKAGE_TREE}/disc2 に置きます。 典型的には、この変数には、事前に呼び出した package-split ターゲットの出力ディレクトリを設定します。 | |
CVSARGS | |
cvs(1) への追加の引数で、 "-qR" といったサブコマンドの前に置かれます。 | |
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) に指示します。 | |
DOC_LANG | |
構築すべき SGML ベースドキュメンテーションの、言語とコード。 設定されないと、使用可能なすべての言語に対し、 ドキュメンテーションが構築されます。 | |
DOCRELEASETAG | |
ドキュメンテーションツリーのチェックアウト時に使用する CVS タグ。 通常、デフォルトで、ドキュメンテーションツリーの先頭が使用されます。 RELEASETAG がリリースタグを指定する場合、 関連付けられたリリースバージョンがデフォルトの代りに使用されます。 | |
EXTLOCALDIR | |
${CHROOTDIR}/usr/local にコピーされるディレクトリ。 | |
EXTSRCDIR | |
この変数で指定されるディレクトリは、 CVS checkout によって置かれたディレクトリの代わりに、 ${CHROOTDIR}/usr/src へとコピーされます。 "rerelease" では、このディレクトリはコピーされません。 cvs update が代わりに使用されます。 | |
KERNEL_FLAGS | |
リリース構築中のカーネル構築時に、この変数の内容が make(1) に渡されます。 例えば、この変数を "-j 4" に設定すると、 make(1) に最大 4 プロセスまで同時に実行することを指示することになります。 | |
KERNELS | |
コンパイルして "base" ディストリビューションにインストールする、 追加のカーネル設定のリストを指定します。 各カーネルは、 /boot/<config> にインストールされ、ローダから "boot <config>" でブートできるようになります。 | |
LOCAL_PATCHES | |
/usr/src に対するパッチファイル。 このパッチは、リリース構築を開始する前に、 chroot(8) 環境で適用されます。 | |
PATCH_FLAGS | |
パッチファイル 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 はリリースから省略されます。 | |
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 スナップショット") から構築されます。 | |
SEPARATE_LIVEFS | |
live ファイルシステムを、1 枚目のディスクではなく、 専用の CD-ROM 上に記録します。 | |
TARGET_ARCH | |
ターゲットとなるマシンプロセッサアーキテクチャ。 この環境変数は "uname" の出力と同じものです。 異なるアーキテクチャ用にクロスビルドするにはこの環境変数を設定してください | |
TARGET | |
ターゲットとなるハードウェアプラットフォーム。 この環境変数は "uname" の出力と同じものです。 ターゲットアーキテクチャをクロスビルドするのに必要な変数です。 例えば、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}/boot_crunch.conf /usr/src/release/${arch}/fixit_crunch.conf | |
cd /usr cvs co -rRELENG_4_9_0_RELEASE src cd src make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=4.9-RELEASE \ CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_9_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=6.0-CURRENT \ CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch
http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/, FreeBSD Release Engineering,
http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/, FreeBSD Release Engineering of Third Party Packages,
http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/, FreeBSD Developers' Handbook,
FreeBSD 2.0 リリースエンジニアリングを続ける中で、 src/release/Makefile を直して、隔離された無菌環境でリリースを構築する際の退屈な作業の ほとんどを自動的に行なえるようにすることに、顕著な努力が払われました。
複数のブランチにまたがる 1000 回近くの改版を経て、 src/release/Makefile の cvs(1) ログには、リリースエンジニアたちが経験した苦難のいくばくかを示す 生々しい歴史の記録が刻み込まれています。
make release RELEASETAG=RELENG_4_9 DOCRELEASETAG=RELEASE_4_9_0 ...
RELEASE (7) | September 6, 2004 |
総合手引 | セクション 7 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Unix...best if used before: Tue Jan 19 03:14:08 GMT 2038 | ” |