RELEASE
Section: Environments, Tables, and Troff Macros (7)
索引
jman
BSD mandoc
索引
名称
release
- リリース構築基盤
索引
解説
Fx は、ユーザが
Fx オペレーティングシステムのリリース全てを作成できるような完全な構築環境を
提供しています。
リリースを構築するために必要なツールの全ては、 CVS リポジトリ中の
src/release
に揃っています。
実のところ、
CD-ROM を焼く際に使える ISO イメージ、インストール用フロッピ、
FTP インストール用ディレクトリの生成をはじめとして、完全なリリースを
コマンド一発で構築できます。
このコマンドは、
``make release
''
と、うまい名前が付けられています。
リリースを構築する前に、
build(7)
の内容によく馴染んでおいてください。
また、ソースからのシステムアップグレードの経験も必須です。
リリース構築プロセスでは、
現在動作しているカーネルに対応したソースから、そのシステム上で
``make buildworld
''
によってコンパイルされた結果を、
/usr/obj
に置いておくことが必要です。
完全なシステムのためのオブジェクトファイルを、まっさらの
chroot(8)
環境にインストールできるようにするために、これが必要となります。
リリースを進めるには、
md(4)
(メモリディスク) デバイスドライバがカーネルに存在する
(コンパイル済み、またはモジュールとして利用可能のいずれも可)
ことも必要です。
この文書は、ソースコード管理、品質管理など、
リリースエンジニアリングプロセスに関するその他の側面は扱いません。
索引
ターゲット
リリース用 makefile
(src/release/Makefile
)
は、かなり難解です。
ほとんどの場合、
release
ターゲットのことを考えるだけで済むと思います。
- 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
-
Fx ドキュメンテーションプロジェクトのソースドキュメント (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
-
Fx 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
-
定義した場合、
Fx ドキュメンテーションプロジェクトの 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 -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}/boot_crunch.conf
-
- /usr/src/release/${arch}/fixit_crunch.conf
-
索引
使用例
以下のコマンド列は
Fx 4.9
release を構築する際に使用したものです。
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
索引
関連項目
cc(1),
crunchgen(1),
cvs(1),
install(1),
make(1),
patch(1),
uname(1),
md(4),
make.conf5,
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/
索引
歴史
Fx 1.x
では、チェックリストを手でチェックしながら、
An Rod Grimes
によりコンパイルされ、リリースが作成されました。
不完全さはさておくにしても、このチェックリストには、
ファイルシステムを使えるようにするためのこまごまとした要求が大量に
含まれており、その実行は拷問としかいいようがないものでした。
Fx 2.0
リリースエンジニアリングを続ける中で、
src/release/Makefile
を直して、隔離された無菌環境でリリースを構築する際の退屈な作業の
ほとんどを自動的に行なえるようにすることに、顕著な努力が払われました。
複数のブランチにまたがる 1000 回近くの改版を経て、
src/release/Makefile
の
cvs(1)
ログには、リリースエンジニアたちが経験した苦難のいくばくかを示す
生々しい歴史の記録が刻み込まれています。
索引
作者
src/release/Makefile
は、もともとは
An -nosplit
An Rod Grimes ,
An Jordan Hubbard ,
An Poul-Henning Kamp
によって書かれました。
このマニュアルページは、
An Murray Stokely Aq murray@FreeBSD.org
によって書かれました。
索引
バグ
Fx ドキュメンテーションに対するインフラストラクチャ変更は頻繁で、
これが原因でセキュリティブランチ上のリリース構築が失敗することがあります。
最後に完全にサポートされた
Fx リリースから
ドキュメンテーションをチェックアウトし、リリース構築することで、
この問題を回避できます。
例:
"make release RELEASETAG=RELENG_4_9 DOCRELEASETAG=RELEASE_4_9_0 ..."
索引
Index
- 名称
-
- 解説
-
- ターゲット
-
- 環境変数
-
- 関連ファイル
-
- 使用例
-
- 関連項目
-
- 歴史
-
- 作者
-
- バグ
-
Time: 07:07:34 GMT, January 12, 2009