RELEASE(7) FreeBSD 多方面の情報マニュアル RELEASE(7)
名称
release − リリース構築基盤 |
解説
FreeBSD は、ユーザが FreeBSD オペレーティングシステムのリリース全てを作成 できるような完全な構築環境を提供しています。リリースを構築するために必要 なツールの全ては、 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 floppies package-split ‘‘make release’’ により呼び出されるターゲットは次のとおりです。 release.1 release.2 release.3 release.4 release.5 release.6 release.7 release.8 floppies.1 floppies.2 floppies.3 ftp.1 cdrom.1 cdrom.2 cdrom.3 iso.1 fetch-distfiles doc.1 doc.2 環境変数 |
指定しなければならない環境変数は以下のとおりです。 |
BUILDNAME
構築するリリースの名前。この名前は、 sys/conf/newvers.sh の中 で RELEASE の値を設定するのに使用します。この値は uname(1) の 出力を変更します。 CHROOTDIR CVSROOT オプションの変数は次のとおりです。 CD_PACKAGE_TREE CVSARGS CVSCMDARGS DOC_LANG DOCRELEASETAG EXTLOCALDIR EXTSRCDIR KERNEL_FLAGS KERNELS LOCAL_PATCHES PATCH_FLAGS LOCAL_SCRIPT MAKE_ISOS NOCDROM NODOC NO_FLOPPIES NOPORTS PORTSRELEASETAG NO_PREFETCHDISTFILES RELEASEDISTFILES RELEASENOUPDATE RELEASETAG SEPARATE_LIVEFS TARGET_ARCH TARGET WORLDDIR WORLD_FLAGS 関連ファイル |
/etc/make.conf
/usr/doc/Makefile 使用例 |
以下のコマンド列は FreeBSD 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.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_9 DOCRELEASETAG=RELEASE_4_9_0 ... |
FreeBSD 10.0 September 6, 2004 FreeBSD 10.0 |