日本語 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.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RELEASE(7) FreeBSD 多方面の情報マニュアル RELEASE(7)
名称
release -- リリース構築基盤
解説
FreeBSD は、FreeBSD オペレーティングシステムのすべてのリリースを行うため
にユーザに対して適切な完備した構築環境を提供しています。リリースを構築す
るために必要なツールのすべては、src/release の FreeBSD ソースコードのリポ
ジトリで利用可能です。完全なリリースは、CD-ROM を焼くために適切な ISO イ
メージ、メモリスティックイメージとネットワークインストールディレクトリの
作成を含んで、単一のコマンドでのみ構築することができます。このコマンド
は、適切な名前の ``make release'' です。
何人かのユーザにとって、ソースツリーまたは make.conf(5) へのローカルな変
更なしで、および doc、src と ports ツリーの特有のバージョンのクリーンな
チェックアウトで、絶対にクリーンな構築環境を提供することは望ましくないか
もしれません。このために、スクリプト (src/release/release.sh) は、これら
のチェックアウトを自動化して、次に、クリーンな chroot(8) で ``make
release'' を実行するために提供されます。
リリースの構築を試みる前に、ユーザは、build(7) の内容に詳しいことが期待さ
れ、ソースからシステムをアップグレードするという経験があるべきです。
リリース構築プロセスは、``make buildworld'' と ``make buildkernel'' の出
力が /usr/obj に置かれることを必要とします。これは、クリーンな chroot(8)
環境に全部のシステムのためのオブジェクトファイルをインストールできるよう
に、リリースのためのオブジェクトファイルを提供するか、release.sh を使用す
るとき、必要です。
ターゲットのリリース構築が異なるアーキテクチャまたはマシンタイプ向けであ
るなら、TARGET と TARGET_ARCH 変数が使用されなければなりません。詳細につ
いては、サポートされた release.conf 変数を参照してください。
また、いくつかのアーキテクチャでのリリース手順は、md(4) (メモリディスク)
デバイスドライバが (モジュールとしてコンパイルされているか、または利用可
能であるかのいずれかで) カーネルに存在していることを必要とします。
この文書は、ソースコードの管理、品質保証、またはリリースエンジニアリング
プロセスの他の局面を取り上げていません。
クリーンなリリースの生成
FreeBSD の公式リリースは、src、ports と doc ツリーのバージョン間の一貫性
を保証し、(ローカルパッチ、make.conf(5) への変更、その他のような) ホスト
システムからの汚染を避けるために、クリーンな環境で生成されます。これは、
ラッパスクリプト src/release/release.sh を使用して達成されます。
release.sh [-c release.conf]
release.sh は、CHROOTDIR への src/, ports/ と doc/ ツリーをチェックアウト
して、次に chroot(8) 環境を生成するために ``make buildworld'' と ``make
installworld'' を呼び出します。次に、``make release'' は、chroot(8) 環境
内で実行され、$CHROOTDIR/R に結果を置きます。
オプションの release.conf 設定ファイルは、次の変数をサポートしています:
CHROOTDIR リリースが構築されるディレクトリ。
CHROOT_MAKEENV build chroot の調整に直接影響する、通過する追加の
make(1) 引数。
SVNROOT 様々なツリーをチェックアウトするために使用される svn(1)
ホスト。デフォルトは、svn://svn.FreeeBSD.org です。
SRCBRANCH 使用する src/ ブランチ。デフォルトは、head/@rHEAD です。
DOCBRANCH 使用する doc/ ブランチ。デフォルトは、head/@rHEAD です。
PORTBRANCH 使用する ports/ ブランチ。デフォルトは、head/@rHEAD で
す。
TARGET リリースをクロス構築するためのマシンタイプ。
TARGET_ARCH リリースのためのターゲットのマシンアーキテクチャ。
TARGET と TARGET_ARCH の組み合わせのサポートされたリスト
については、build(7) で文書化されている ``make targets''
の出力を調べてください。
KERNEL 使用するターゲットのカーネル設定。デフォルトは、GENERIC
です。複数の KERNEL エントリが指定されます。
MAKE_CONF リリースの構築のために使用する make.conf(5)。デフォルト
は、ローカルシステムの変更でリリースを汚染することを防ぐ
ために /dev/null です。
SRC_CONF リリースの構築のために使用する src.conf(5)。デフォルト
は、ローカルシステムの変更でリリースを汚染することを防ぐ
ために /dev/null です。
MAKE_FLAGS make(1) に渡す追加のフラグ。
WORLD_FLAGS ``buildworld'' フェーズの間に make(1) に渡す追加のフラ
グ。デフォルトは、make(1) ジョブ (-j) の数を SMP 可能な
システムで利用可能な CPU の数に設定することです。
KERNEL_FLAGS ``buildkernel'' フェーズの間に make(1) に渡す追加のフラ
グ。デフォルトは、make(1) jobs (-j) の数を SMP 可能なシ
ステムで利用可能な CPU の数の半分に設定することです。
NODOC 空でない値を doc/ ツリーチェックアウトをスキップするよう
に設定します。設定されるとき、NODOC は、作成される
doc.txz 配布パッケージを抑制します。
NOPORTS 空でない値を ports/ ツリーチェックアウトをスキップするよ
うに設定します。設定されるとき、NOPORTS は、作成される
ports.txz 配布パッケージを抑制します。また、この設定は、
NODOC を設定します。
WITH_DVD dvdrom ターゲットを含むように空でない値に設定します。
WITH_COMPRESSED_IMAGES
xz(1) でリリースイメージを圧縮するために空でない値に設定
します。オリジナル (圧縮されていない) イメージは、削除さ
れません。
XZ_THREADS (int)
イメージを圧縮するとき、使用すべきな、スレッド xz(1) の
数を設定します。デフォルトで、XZ_THREADS は、システムで
すべての利用可能なコアを使用する、0 に設定されます。
VCSCMD ソースツリーを取得するために実行されるコマンド。デフォル
トは、"svn checkout" です。
CHROOTBUILD_SKIP
定義されているなら、chroot(8) 構築環境のセットアップの
buildworld, installworld と distribution は、スキップさ
れます。これは、chroot(8) ユーザランドが、代替手段によっ
て提供される場合のためのだけに意図されます。
SRC_UPDATE_SKIP chroot(8) の内の /usr/src のチェックアウトまたは更新を防
ぐために空でない値に設定します。これは、/usr/src が代替
手段によって存在すると予想されるときだけ、使用することを
目的としています。
DOC_UPDATE_SKIP chroot(8) の内の /usr/doc のチェックアウトまたは更新を防
ぐために空でない値に設定します。これは、/usr/doc が代替
手段によって存在すると予想されるときだけ、使用することを
目的としています。
PORTS_UPDATE_SKIP
chroot(8) の内の /usr/ports のチェックアウトまたは更新を
防ぐために空でない値に設定します。これは、/usr/ports が
代替手段によって存在すると予想されるときだけ、使用するこ
とを目的としています。
組み込みの build
次の release.conf 変数は、組み込みシステムのためのリリースを構築するため
だけに適切です:
EMBEDDEDBUILD 組み込みデバイスのリリースの構築のための機能を有効にする
ために、null でない値を設定します。
設定されるとき、WITH_DVD は、設定を解除され、NODOC は、
定義されます。さらに、EMBEDDED_TARGET と
EMBEDDED_TARGET_ARCH も定義されなければなりません。構築
環境が作成されるとき、release.sh は、
src/release/${EMBEDDED_TARGET}/ のアーキテクチャに特有の
ディレクトリにある個別の構築スクリプトを実行します。
EMBEDDEDPORTS category/port の形式でターゲットデバイスのために必要な、
あらゆるポートのリストを設定します。devel/subversion
ポートは、デフォルトで構築されます。
EMBEDDED_TARGET 設定されるとき、その値は、ターゲットのユーザランドをクロ
ス構築するために TARGET (uname -m の値) を設定するために
make(1) に渡されます。
EMBEDDED_TARGET_ARCH
設定されるとき、その値は、ターゲットのユーザランドをクロ
ス構築するために TARGET_ARCH (uname -p の値) を設定する
ために make(1) に渡されます。
仮想マシンのディスクイメージ
次の release.conf 変数は、仮想マシンのディスクイメージの構築のためにのみ
に適切です:
WITH_VMIMAGES リリースの構築の一部として仮想マシンのディスクイメージを
構築するために空でない値に設定します。また、
WITH_VMIMAGES は、make(1) に渡される環境変数として指定さ
れます。
オプションは、mkimg(1) バージョン 20140927 以降で要求し
ます。
WITH_COMPRESSED_VMIMAGES
install make(1) ターゲットの一部として xz(1) で仮想マシ
ンのディスクイメージを圧縮するために空でない値に設定しま
す。仮想マシンのディスクイメージを圧縮することは、いくつ
かのシステムで非常に長い時間を取るかもしれないことに注意
してください。
VMBASE 結果の仮想マシンのディスクイメージのファイルの名前を変更
するために設定します。デフォルト値は、vm です。
VMSIZE 仮想マシンのディスクの容量のサイズを変更するために設定し
ます。デフォルト値は、20g です。有効な値については、
makefs(8) を参照してください。
仮想マシンのディスクイメージは、デフォルトで、スパース
(sparse) イメージとして作成されます。
WITH_COMPRESSED_VMIMAGES が使用されるとき、xz(1) で圧縮
された結果のファイルは、指定されたディスクイメージのサイ
ズにかかわらず、大体同じサイズに圧縮します。
VMFORMATS 作成するターゲットの仮想ディスクイメージの (複数の) 形式
に設定します。デフォルトで、vhdf, vmdk, qcow2 と raw 形
式が作成されます。(バージョン 20140927 以降を要求する)
有効な形式の値については、mkimg(1) を参照してください。
(クラウドホストプロバイダの形式を含む) 短い説明とともにサポートされた
VMFORMATS 値のリストについては、次を実行します:
cd /usr/src
make -C release list-vmtargets
クラウドホストマシンイメージ
FreeBSD リリースの構築ツールは、デフォルトでホストのプロバイダごとのサ
ポートを含む、それぞれ、それら自体の特有の設定がある、様々なクラウドホス
トプロバイダのための構築される仮想マシンイメージをサポートします。
次の make(1) の環境変数がサポートされています:
CLOUDWARE クォートで囲まれている、1 つ以上のクラウドホストプロバイ
ダのリストを設定します。また、設定される WITH_CLOUDWARE
を要求します。
WITH_CLOUDWARE 様々なクラウドホストプロバイダのために構築されている仮想
マシンイメージを有効にするために、空でない値を設定しま
す。また、設定される CLOUDWARE を要求します。
さらに、release.conf に CLOUDWARE と WITH_CLOUDWARE 変数を追加することが
でき、release.sh と関連して使用されます。
サポートされた CLOUDWARE 値のリストについては、次を実行します:
cd /usr/src
make -C release list-cloudware
MAKEFILE ターゲット
リリース makefile (src/release/Makefile) は、かなり難解です。ほとんどの開
発者は、release ターゲットと install ターゲットのみに関心があります。
release すべてのリリースメディアを構築するためのメタターゲットとこ
のプラットフォームに適用できる配布。
install すべての作成されたリリースメディアを ${DESTDIR} にコピーし
ます。
cdrom インストール CD-ROM イメージを構築します。これは、md(4)
(メモリディスク) デバイスドライバが (モジュールとしてコン
パイルされているか、または利用可能であるかのいずれかで)
カーネルに存在していることを必要とします。このターゲット
は、出力として disc1.iso と bootonly.iso 呼ばれるファイル
を作ります。
dvdrom インストール DVD-ROM イメージを構築します。これは、md(4)
(メモリディスク) デバイスドライバが (コンパイルされること
によって、またはモジュールとして利用可能であるかのいずでか
で) カーネルに存在することを必要とします。このターゲット
は、その出力として dvd1.iso ファイルを生成します。
memstick memstick.img と名前が付けられたインストールメモリスティッ
クイメージを構築します。すべてのプラットフォームで、適用で
きません。md(4) (メモリディスク) デバイスドライバが (モ
ジュールとしてコンパイルされているか、または利用可能である
かのいずれかで) カーネルに存在していることを必要とします。
mini-memstick インストールの配布セットが含まれていないことを除いて、
memstick に似ています。
ftp ネットワークのインストールで使用され、FTP ミラーへのアップ
ロードに適した配布ファイルを含む ftp と名前が付けられた
ディレクトリを作成します。
vm-image 様々な形式の仮想マシンのディスクイメージを作成します。vm-
image ターゲットは、空でない値に設定される WITH_VMIMAGES
make(1) 環境変数を要求します。
vm-cloudware 様々なクラウドホストプロバイダのための FreeBSD 仮想マシン
イメージを構築します。実装の詳細については、"クラウドホス
トマシンイメージ" を参照してください。
list-cloudware
有効な CLOUDWARE のリストを表示します。
list-vmtargets
有効な VMFORMAT と CLOUDWARE のリストを表示します。
上記のターゲットによって呼び出される、主要なサブターゲットは、次の通りで
す:
packagesystem このプラットフォームで適切な、すべての配布アーカイブ
(base, kernel, ports, doc) を生成します。
disc1 packagesystem ターゲットによってパッケージ化され、cdrom,
dvdrom と memstick ターゲットによってイメージ化するのに適
している、すべての配布ファイルを含むブート可能なインストー
ルシステムを構築します。
reldoc リリース文書を構築します。これは、リリースノート、ハード
ウェアガイドとインストール説明書を含んでいます。ハンドブッ
クのような、他の文書は、packagesystem によって呼び出された
base.txz ターゲットの間に構築されます。
環境変数
オプションの変数は、次の通りです:
OSRELEASE install ターゲットを呼び出すときの生成されたメディアイメージ
のためのオプションの基本的名前 (例えば、
FreeBSD-12.1-RELEASE-amd64)。デフォルトは、chroot 内の
`uname -s`-`uname -r`-`uname -p` の出力です。
WORLDDIR src ツリーを含むディレクトリの位置。デフォルトで、makefile
(src) を含む上記のディレクトリ。
PORTSDIR ports ツリーを含むディレクトリの位置。デフォルトは、
/usr/ports です。設定されていないか、または見つけることがで
きないなら、ports は、リリースに含まれません。
DOCDIR doc ツリーを含むディレクトリの位置。デフォルトは、/usr/doc
です。設定されていないか、または見つけることができないなら、
ほとんどの文書は、リリースに含まれません。下記の NODOC を参
照してください。
NOPORTS 定義されるなら、Ports Collection は、リリースから除外されま
す。
NOSRC 設定されるなら、リリースにシステムソースコードを含めません。
NODOC 定義されるなら、FreeBSD Documentation Project の SGML ベース
の文書は、構築されません。しかしながら、それでも、``doc'' 配
布は、src/share/doc で提供される最小の文書セットを含んで作成
されます。
TARGET ターゲットのハードウェアプラットフォーム。これは、``uname
-m'' の出力に類似しています。これは、いくつかのターゲット
アーキテクチャをクロス構築するために必要です。例えば、ARM64
マシンのためのクロス構築は、TARGET_ARCH=aarch64 と
TARGET=arm64 を必要とします。設定されないなら、TARGET は、現
在のハードウェアプラットフォームをデフォルトとします。
TARGET_ARCH ターゲットマシンのプロセッサアーキテクチャ。これは、``uname
-p'' の出力に類似しています。異なったアーキテクチャのための
クロス構築のためにこれを設定します。また設定されていないな
ら、TARGET_ARCH は、現在のマシンアーキテクチャをデフォルトと
し、TARGET も設定されていないなら、そのプラットフォームのた
めの適切な値をデフォルトとします。通常、TARGET のみを設定す
る必要があります。
関連ファイル
/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/Makefile.vm
/usr/src/release/release.sh
/usr/src/release/release.conf.sample
/usr/src/release/tools/*.conf
/usr/src/release/tools/vmimage.subr
使用例
``-CURRENT snapshot'': を構築するために、次のコマンドのシーケンスを使用す
ることができます:
cd /usr
svn co svn://svn.freebsd.org/base/head src
cd src
make buildworld buildkernel
cd release
make obj
make release
make install DESTDIR=/var/freebsd-snapshot
これらのコマンドを実行した後に、すべての作成された配布ファイル (FTP、CD
ROM イメージなどのための tarball) は、/var/freebsd-snapshot ディレクトリ
で利用可能です。
ports と文書を含む、クリーンな環境で ``-CURRENT snapshot'' を構築するため
に次のコマンドのシーケンスを使用することができます:
cd /usr/src/release
sh release.sh
オプションで、使用する subversion リビジョン、src/, ports/ と doc/ のため
の subversion ツリーのブランチのような、リリースの構築をカスタマイズする
ために、設定ファイルを使用することができます、
cd /usr/src/release
sh release.sh -c $HOME/release.conf
Raspberry Pi (ラズベリ円周率) のような、様々なサポートされた組み込みシス
テムに特有な設定ファイルは、TARGET make(1) 変数に対応しているディレクトリ
に存在しています。例えば、Raspberry Pi (ラズベリ円周率) のためにイメージ
を構築するためには:
cd /usr/src/release
sh release.sh -c arm/RPI-B.conf
Raspberry Pi 3 (ラズベリ円周率 3) のためにイメージを構築するためには:
cd /usr/src/release
sh release.sh -c arm64/RPI3.conf
これらのコマンドを実行した後に、すべての準備されたリリースファイルは、
/scratch ディレクトリで利用可能です。release.conf の CHROOTDIR 変数を指定
することによって、ターゲットディレクトリを変更することができます。
関連項目
cc(1), install(1), make(1), svn(1) (ports/devel/subversion), uname(1),
md(4), make.conf(5), build(7), ports(7), chroot(8), mtree(8), sysctl(8)
FreeBSD Release Engineering,
https://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/freebsd-releng/.
FreeBSD Developers' Handbook,
https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/.
歴史
FreeBSD 1.x は、リリースを作成するために Rod Grimes によってコンパイルさ
れた手動のチェックリストを使用しました。不完全であることは別として、リス
トには、利用可能なファイルシステムに多くの特有の要求が置かれ、実行するた
めにかなり拷問のようでした。
FreeBSD 2.0 リリースの技術的な取り組みの一部として、特筆すべき取り組み
は、無菌の環境でリリースを構築する退屈さのほとんどを少なくとも自動化でき
た形態の src/release/Makefile を得るために費やされました。
FreeBSD 9.0 リリースに関して、src/release/Makefile は、オーバホール
(overhaul) され、ラッパスクリプト src/release/generate-release.sh は、新
しいインストーラの導入をサポートするために取り入れました。
FreeBSD 9.2 のリリースのために、src/release/release.sh は、構築ごとの設定
ファイルをサポートするために導入されました。src/release/release.sh は、
src/release/generate-release.sh スクリプトに大きく基づいています。
複数のブランチに広がる 1000 近い改訂で、src/release/Makefile の svn(1) ロ
グは、リリースエンジニアが経験したいくつかの苦難の生き生きとした歴史的な
記録を含んでいます。
作者
src/release/Makefile は、元々、Rod Grimes, Jordan Hubbard と Poul-Henning
Kamp によって書かれました。
このマニュアルページは、最初に Murray Stokely <murray@FreeBSD.org> によっ
て書かれました。
それは、FreeBSD 9.0 リリースサイクルのために使用された generate-
release.sh スクリプトを含めるために、Nathan Whitehorn
<nwhitehorn@FreeBSD.org> によって更新されました。
それは、FreeBSD 9.2 リリースサイクルのために使用された release.sh スクリ
プトを含めるために、Glen Barber <gjb@FreeBSD.org> によって更新されまし
た。
FreeBSD 13.2 March 4, 2021 FreeBSD 13.2