diff --git a/ja_JP.eucJP/books/handbook/authors.ent b/ja_JP.eucJP/books/handbook/authors.ent index baafc14165..c589b67dba 100644 --- a/ja_JP.eucJP/books/handbook/authors.ent +++ b/ja_JP.eucJP/books/handbook/authors.ent @@ -1,557 +1,569 @@ abial@FreeBSD.org"> ache@FreeBSD.org"> adam@FreeBSD.org"> ade@FreeBSD.org"> adrian@FreeBSD.org"> akiyama@FreeBSD.org"> alc@FreeBSD.org"> alex@FreeBSD.org"> alfred@FreeBSD.org"> amurai@FreeBSD.org"> andreas@FreeBSD.org"> andy@FreeBSD.org"> archie@FreeBSD.org"> asami@FreeBSD.org"> asmodai@FreeBSD.org"> assar@FreeBSD.org"> ats@FreeBSD.org"> awebster@pubnix.net"> babkin@FreeBSD.org"> bde@FreeBSD.org"> ben@FreeBSD.org"> +bean@FreeBSD.org"> + benno@FreeBSD.org"> billf@FreeBSD.org"> bmah@FreeBSD.org"> bmilekic@FreeBSD.org"> bp@FreeBSD.org"> brandon@FreeBSD.org"> brian@FreeBSD.org"> bsd@FreeBSD.org"> cawimm@FreeBSD.org"> cg@FreeBSD.org"> charnier@FreeBSD.org"> +chm@FreeBSD.org"> + chris@FreeBSD.org"> chuckr@glue.umd.edu"> chuckr@FreeBSD.org"> cjh@FreeBSD.org"> +clive@FreeBSD.org"> + cp@FreeBSD.org"> cokane@FreeBSD.org"> cpiazza@FreeBSD.org"> cracauer@FreeBSD.org"> csgr@FreeBSD.org"> cwt@FreeBSD.org"> dan@FreeBSD.org"> danny@FreeBSD.org"> dannyboy@FreeBSD.org"> darrenr@FreeBSD.org"> davidn@blaze.net.au"> dbaker@FreeBSD.org"> dburr@FreeBSD.org"> dcs@FreeBSD.org"> dec@FreeBSD.org"> demon@FreeBSD.org"> deischen@FreeBSD.org"> des@FreeBSD.org"> dfr@FreeBSD.org"> dg@FreeBSD.org"> dick@FreeBSD.org"> dillon@FreeBSD.org"> dima@FreeBSD.org"> dirk@FreeBSD.org"> Dirk.vanGulik@jrc.it"> +dmlb@FreeBSD.org"> + DougB@FreeBSD.org"> dt@FreeBSD.org"> dufault@FreeBSD.org"> dwhite@FreeBSD.org"> dwmalone@FreeBSD.org"> dyson@FreeBSD.org"> eivind@FreeBSD.org"> ejc@FreeBSD.org"> erich@FreeBSD.org"> faq@FreeBSD.org"> fenner@FreeBSD.org"> flathill@FreeBSD.org"> foxfair@FreeBSD.org"> fsmp@FreeBSD.org"> gad@FreeBSD.org"> gallatin@FreeBSD.org"> gclarkii@FreeBSD.org"> gena@NetVision.net.il"> ghelmer@cs.iastate.edu"> gibbs@FreeBSD.org"> gioria@FreeBSD.org"> gj@FreeBSD.org"> gpalmer@FreeBSD.org"> graichen@FreeBSD.org"> green@FreeBSD.org"> grog@FreeBSD.org"> groudier@club-internet.fr"> gryphon@healer.com"> gshapiro@FreeBSD.org"> gsutter@FreeBSD.org"> guido@FreeBSD.org"> hanai@FreeBSD.org"> handy@sxt4.physics.montana.edu"> hrs@FreeBSD.org"> roger@freebsd.org"> helbig@FreeBSD.org"> hm@FreeBSD.org"> hoek@FreeBSD.org"> horikawa@FreeBSD.org"> hosokawa@FreeBSD.org"> hsu@FreeBSD.org"> +iedowse@FreeBSD.org"> + imp@FreeBSD.org"> issei@FreeBSD.org"> itojun@itojun.org"> iwasaki@FreeBSD.org"> jake@FreeBSD.org"> jasone@FreeBSD.org"> jayanth@FreeBSD.org"> jb@cimlogic.com.au"> jdp@FreeBSD.org"> jedgar@FreeBSD.org"> jeh@FreeBSD.org"> jehamby@lightside.com"> jesusr@FreeBSD.org"> jfieber@FreeBSD.org"> jfitz@FreeBSD.org"> jgreco@FreeBSD.org"> jhay@FreeBSD.org"> jhb@FreeBSD.org"> jhs@FreeBSD.org"> jim@FreeBSD.org"> jkh@FreeBSD.org"> jkoshy@FreeBSD.org"> jlemon@FreeBSD.org"> john@starfire.MN.ORG"> jlrobin@FreeBSD.org"> jmacd@FreeBSD.org"> jmas@FreeBSD.org"> jmb@FreeBSD.org"> jmg@FreeBSD.org"> jmz@FreeBSD.org"> joe@FreeBSD.org"> joerg@FreeBSD.org"> jon@FreeBSD.org"> john@FreeBSD.org"> jraynard@FreeBSD.org"> jseger@FreeBSD.org"> julian@FreeBSD.org"> jwd@FreeBSD.org"> jvh@FreeBSD.org"> karl@FreeBSD.org"> kato@FreeBSD.org"> kbyanc@FreeBSD.org"> keith@FreeBSD.org"> kelly@ad1440.net"> ken@FreeBSD.org"> kevlo@FreeBSD.org"> kiri@FreeBSD.org"> kjc@FreeBSD.org"> knu@FreeBSD.org"> kris@FreeBSD.org"> kuriyama@FreeBSD.org"> lars@FreeBSD.org"> lile@FreeBSD.org"> lioux@FreeBSD.org"> ljo@FreeBSD.org"> luoqi@FreeBSD.org"> marcel@FreeBSD.org"> markm@FreeBSD.org"> marko@FreeBSD.org"> martin@FreeBSD.org"> max@FreeBSD.org"> mark@vmunix.com"> mbarkah@FreeBSD.org"> mckay@FreeBSD.org"> mckusick@FreeBSD.org"> md@bsc.no"> winter@jurai.net"> mharo@FreeBSD.org"> mjacob@FreeBSD.org"> mks@FreeBSD.org"> motoyuki@FreeBSD.org"> mph@FreeBSD.org"> mpp@FreeBSD.org"> msmith@FreeBSD.org"> mtaylor@FreeBSD.org"> murray@FreeBSD.org"> nakai@FreeBSD.org"> nate@FreeBSD.org"> nbm@FreeBSD.org"> nectar@FreeBSD.org"> newton@FreeBSD.org"> n_hibma@FreeBSD.org"> nik@FreeBSD.org"> non@FreeBSD.org"> nsayer@FreeBSD.org"> nsj@FreeBSD.org"> nyan@FreeBSD.org"> obrien@FreeBSD.org"> okazaki@FreeBSD.org"> olah@FreeBSD.org"> onoe@FreeBSD.org"> opsys@open-systems.net"> patrick@FreeBSD.org"> paul@FreeBSD.org"> pb@fasterix.freenix.org"> pds@FreeBSD.org"> peter@FreeBSD.org"> phantom@FreeBSD.org"> phk@FreeBSD.org"> pho@FreeBSD.org"> piero@strider.inet.it"> pjchilds@imforei.apana.org.au"> proven@FreeBSD.org"> ps@FreeBSD.org"> pst@FreeBSD.org"> reg@FreeBSD.org"> rgrimes@FreeBSD.org"> rhuff@cybercom.net"> ricardag@ag.com.br"> rich@FreeBSD.org"> rnordier@FreeBSD.org"> roam@FreeBSD.org"> roberto@FreeBSD.org"> rse@FreeBSD.org"> ru@FreeBSD.org"> rv@FreeBSD.org"> rwatson@FreeBSD.org"> sada@FreeBSD.org"> sanpei@FreeBSD.org"> scottl@FreeBSD.org"> scrappy@FreeBSD.org"> se@FreeBSD.org"> sef@FreeBSD.org"> shafeeq@FreeBSD.org"> sheldonh@FreeBSD.org"> shige@FreeBSD.org"> shin@FreeBSD.org"> simokawa@FreeBSD.org"> smace@FreeBSD.org"> smpatel@FreeBSD.org"> sobomax@FreeBSD.org"> sos@FreeBSD.org"> stark@FreeBSD.org"> stb@FreeBSD.org"> steve@FreeBSD.org"> sumikawa@FreeBSD.org"> swallace@FreeBSD.org"> tanimura@FreeBSD.org"> taoka@FreeBSD.org"> takawata@FreeBSD.org"> tedm@FreeBSD.org"> tegge@FreeBSD.org"> tg@FreeBSD.org"> thepish@FreeBSD.org"> tom@FreeBSD.org"> +tomsoft@FreeBSD.org"> + torstenb@FreeBSD.org"> toshi@FreeBSD.org"> trevor@FreeBSD.org"> truckman@FreeBSD.org"> ugen@FreeBSD.org"> uhclem@FreeBSD.org"> ulf@FreeBSD.org"> ume@FreeBSD.org"> unfurl@FreeBSD.org"> vanilla@FreeBSD.org"> wes@FreeBSD.org"> whiteside@acm.org"> wilko@FreeBSD.org"> will@FreeBSD.org"> wlloyd@mpd.ca"> wollman@FreeBSD.org"> wosch@FreeBSD.org"> wpaul@FreeBSD.org"> wsanchez@FreeBSD.org"> yokota@FreeBSD.org"> diff --git a/ja_JP.eucJP/books/handbook/backups/chapter.sgml b/ja_JP.eucJP/books/handbook/backups/chapter.sgml index 8c64e3c7a8..ba71c60b65 100644 --- a/ja_JP.eucJP/books/handbook/backups/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/backups/chapter.sgml @@ -1,862 +1,862 @@ バックアップ この章では この章ではデータのバックアップ方法とバックアップの作成に 使われるプログラムの説明をします. もしあなたがこの章に何かを 付け加えたいのなら, それを &a.doc; へ送ってください. テープメディア 一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ, DLT があります. 4mm (DDS: Digital Data Storage) 4mm テープはワークステーションのバックアップメディアとして QIC から置き換えられつつあります. この傾向は QICドライブの製造のリーダであった Archiveを Connerが買収し QICドライブの製造を中止したことで加速しました. 4mmドライブは小型で静かですが 8mm ドライブの持っているような信頼性の評判はありません. カートリッジは 8mmカートリッジよりも安価で小型 (3 x 2 x 0.5 インチ; 76 x 51 x 12 mm) です. 4mmドライブ は 8mm同様にヘリカルスキャン (訳注: VTRと同様の回転ヘッドを使う方式) を使用しているという理由でヘッドの寿命は短いです. これらのドライブのデータスループットは 150kB/s程度から最大で500kB/s程度の範囲です. データ容量は 1.3GBから 2.0GBです. ハードウェア圧縮が多くのドライブで可能で, およそ 2倍の容量になります. マルチドライブテープライブラリユニットは1つの筐体に 6ドライブを持つことができ自動的にテープを交換します. ライブラリの容量は 240GBに達します. 現在の DDS-3 規格では, 12GB (圧縮時 24GB) までのテープ容量をサポートしています. 4mmドライブは 8mmドライブ同様にヘリカルスキャンを使います. ヘリカルスキャンの利点と欠点は 4mm ドライブ と 8mm ドライブ共通です. テープの寿命は 2000 回のパスあるいは 100 回のフルバックアップです. 8mm (Exabyte) 8mm テープは SCSI テープドライブとして最もよく使われているもので, データ交換用として最良の選択です. ほとんどのサイトには Exabyte の 2GB 8mm テープドライブがあるでしょう (訳注: Unix ワークステーションを何台も置いているようなサイトには 1 台くらいはあるというような意味です). 8mm ドライブは信頼性が高く, 使いやすく, 静かです. カートリッジは安価で小型です (4.8 x3.3 x 0.6 インチ; 122 x 84 x 15 mm). 欠点は, テープとヘッドの相対的な速度が高速なために 比較的ヘッドとテープの寿命が短いことです. データスループットは 250kB/s 程度から 500kB/s 程度の範囲です. データ容量は 300MB から 7GB です. ハードウェア圧縮が多くのドライブで可能で,およそ 2 倍の容量になります. 単一のユニットのドライブから, 1 つの筐体に 6 台のドライブと 120 巻のテープを持ったマルチドライブテープライブラリまで 利用することができます. ライブラリではテープはユニットにより 自動的に交換されます. ライブラリの容量は 840GB 以上に達します. Exabyte 社製の Mammoth というモデルは, テープ一本あたり 12GB (圧縮時 24GB) をサポートしています. このドライブの価格は, 通常のテープドライブの約 2 倍です. データはヘリカルスキャンを使ってテープに記録されます. ヘリカルスキャン方式ではヘッドはメディアに対してある傾き (約6度) に配置されます. テープはヘッドのある円筒の周の 270度にわたって接触します. テープが円筒面を走行する間, 円筒は回転しています. この結果, 高密度のデータのつまったトラックは, 狭い間隔でテープの上端と下端の間を斜めに横切ります. QIC QIC-150 テープとドライブはたぶん最も一般的に使われている ドライブとメディアでしょう. QIC テープドライブは現実的なバックアップドライブとして 少なくとも高価なものではありません. 欠点はメディアのコストです. QIC テープは 8mm や 4mm テープに比較して GB あたりのデータの保存で 5 倍ほど高価です. しかしあなたの必要とする量が半ダース程のテープで十分であれば, QICは正しい選択となるかもしれません. QIC は 最も一般的なテープドライブです. すべてのサイトに QICドライブのどれかの容量のものがあります. 問題は, QIC は同じようなテープ (まったく同じ場合もある) に多様な記録密度があることです. QIC ドライブは静かではありません. これらのドライブはデータ記録を 開始する前に音をたててシークしますし, リード, ライト, シークの時にはっきりと聞こえる音を出します. QIC テープの大きさは (6 x 4 x 0.7 インチ; 152 x 102 x 17 mm). ミニカートリッジ で使われている 1/4 インチ幅のテープについては別に議論します. テープライブラリやチェンジャはありません. データスループットは 150kB/s から 500kB/s の範囲です. データ容量の範囲は 40MB から 15GB です. ハードウェア圧縮が 最近の多くのドライブで使えるようになっています. QIC ドライブは DAT ドライブに置き換えられつつあり, あまり頻繁には利用されなくなっています. データは複数のトラックにわかれてテープに記録されます. トラックはテープメディアの 長さ方向の一端からもう一方の端までです. (訳注: 1トラックの read/write が終わるとテープの走行方向を反転させ次のトラックの read/write を行います) トラックの数と, それに対応するトラックの幅はテープの容量によって変わります. すべてではありませんがほとんどの最近のドライブは 少なくとも読み出しについては (場合によっては書き込みも) 下位互換性があります. QIC はデータの安全性についてはよいといわれています (ヘリカルスキャンドライブに比べて機構は単純でより丈夫です). テープは 5000回のバックアップで寿命となるでしょう. * ミニカートリッジ ]]> DLT DLTはここに示したドライブのタイプの中で 最高速のデータ転送レートです. 1/2 インチ (12.5mm) テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x 25 mm) に入っています. カートリッジのひとつの側面全体がスイングゲートになっています. ドライブの機構がこのゲートを開け, テープリーダを引き出します. テープリーダには楕円形の穴があり, ドライブがテープを引っ掛けるのに使います. 巻き取りのためのリールはドライブの中にあります. ここに挙げた他のカートリッジはすべて ( 9 トラックテープはただ1つの例外です) 送りだしリールと巻き取りリールの両方がカートリッジの中に あります. データスループットは約1.5MB/sで, 4mm, 8mm, QIC テープドライブの3倍です. データ容量は単一のドライブで 10GBから 20GBの範囲です. マルチテープチェンジャ,マルチテープドライブ,5から 900巻のテープを1から20ドライブで扱う マルチドライブテープライブラリがあり, 50GB から 9TB の容量が得られます. 圧縮機能により, DLT Type IV フォーマットは 70GB までの容量をサポートします. データは ( QIC テープのように) テープの走行方向と並行に複数あるトラックへ記録されます. 2 つのトラックに同時書き込みを行います. Read/Write ヘッドの寿命は比較的長いと言えます. テープの走行が止まればヘッドと テープの間の相対運動はありません. AIT AIT は, Sony が発表した新しいフォーマットで, テープ一本あたり 50GB(圧縮時) の容量を持っています. テープには, 記録データ内容の索引情報が記録可能な メモリチップが内蔵されています. ドライブがこの索引情報を読みとることで, テープのどの部分にどのファイルが存在するかを 高速に調べることができるようになっています. 従来のドライブは, この処理に数分の時間を必要としていました. 直接テープのメモリチップと通信することでテープ内容を画面表示する SAMS:Alexandria のようなソフトウェアを使うことで, 40 を超える ATI テープライブラリを操作できるのはもちろんのこと, どのテープのどこに, どのファイルがバックアップされているのか調べたり, 正しいテープをセットしたり, テープ上のデータをリストアしたりすることが可能です. このようなテープライブラリにかかる費用は $20,000 台です. 業務用でないものはもう少し安価でしょう. 新品のテープを最初に使う場合 新品の完全な空テープを読もうとしたり書き込もうとすると処理 は失敗するでしょう. 次のようなコンソールメッセージが出るでしょう. sa0(ncr1:4:0): NOT READY asc:4,1 st0(ncr1:4:0): Logical unit is in process of becoming ready テープに識別ブロック (Identifire Block:block number 0) がありません.QIC-525標準の採用されている QICテープドライブのすべてで識別ブロックをテープに書きます. 2つの解決方法があります. (訳注: 方法1)mt fsf 1 によってテープドライブは識別ブロックをテープに書きます. (訳注: 方法2)フロントパネルのボタンを押してテープをとりだします. 再びテープを入れ,データをテープに &man.dump.8; します. &man.dump.8; はそのうちに DUMP: End of tape detected と表示し, コンソールには HARDWARE FAILURE info:280 asc:80,96と表示されるでしょう. mt rewindを使ってテープを巻戻します. この次からはテープの操作は成功するでしょう. バックアッププログラム よく使われる3つのプログラムは &man.dump.8;, &man.tar.1;, &man.cpio.1; です. ダンプとリストア &man.dump.8; と &man.restore.8; は伝統的な Unixのバックアッププログラムです. これらはドライブのファイルシステム上のファイル, リンク, ディレクトリをディスクブロックの集まりとして処理します. &man.dump.8; はデバイスやファイルシステム全体をバックアップし, 一部分のバックアップや, &man.ln.1; によるソフトリンクや 他のファイルシステムをマウントを行った, 1 つ以上のファイルシステムにまたがる ディレクトリツリーのバックアップはできません. &man.dump.8; はファイルやディレクトリを構成する データブロックをテープに書くだけで, ファイルやディレクトリをテープに書くことはありません. &man.dump.8; には初期の ATT UNIX のバージョン 6 (1975 年ごろ) に由来する癖が残っています. デフォルトのパラメタは 9 トラックテープ (6250 bpi) に適したものになっていて現在の高密度メディア (最大 62,182 ftpi) に適していません. 現在のテープドライブの容量を有効に利用するため, デフォルト値をコマンドラインで置き換えなければなりません. &man.rdump.8; と &man.rrestore.8; は他のコンピュータに接続されているテープドライブに ネットワーク経由でバックアップをします. どちらのプログラムもリモートテープドライブにアクセスするために &man.rcmd.3; と &man.ruserok.3; に依存しています. このためユーザがバックアップを実行するためには rhosts によるリモートアクセスが必要です. &man.rdump.8; と &man.rrestore.8; の引数はリモートコンピュータに適切なものを用います. &man.rrestore.8; はリモートコンピュータから使うのに適しています. (例えば FreeBSD コンピュータより komodo という名前の Sun に接続されている Exabyte テープドライブへ /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrsa8 /dev/rda0a 2>&1 として rdumpしたような場合の restoreに使います) 警告: セキュリティは rhostsの管理にかかっています. あなたの状況を注意深く調べてください. Tar &man.tar.1; ATT Unix のバージョン 6 (1975ごろ) にさかのぼる事ができます. &man.tar.1; はファイルシステムと協調して機能し, ファイルやディレクトリをテープに書きます. &man.tar.1; は &man.cpio.1; で使えるようなフルレンジのオプションは持ちませんが &man.cpio.1; で使うような奇妙なコマンドパイプラインは必要ありません. 大部分の &man.tar.1; にはネットワーク経由のバックアップの機能はありませんが, FreeBSD で使用されている GNU の &man.tar.1; は, rdump とおなじ構文でリモートデバイスを扱うことができます. komodo というホスト名の Sun に繋いである Exabyte のテープデバイスに対して &man.tar.1; を実行するには, 次のようにします. /usr/bin/tar cf komodo:/dev/nrsa8 . 2>&1 リモートデバイスをサポートしていない tar を使用している場合は, パイプラインと &man.rsh.1; を使うことで, リモートテープデバイスにデータを送る事ができます. &prompt.root; tar cf - . | rsh hostname dd of=tape-device obs=20b もしあなたがネットワークを越えるバックアップのセキュリティに 困っているなら &man.rsh.1; の代わりに &man.ssh.1; を使うべきです. Cpio &man.cpio.1; は本来, Unix ファイルを磁気メディアで交換するためのプログラムです. &man.cpio.1; はバイトスワッピング, 多くの異なるアーカイブフォーマットの書き込みのオプション (それ以外にも多数のオプションがあります)があり, パイプで他のプログラムにデータを渡す事もできます. この最後に挙げた特徴により, &man.cpio.1; はインストールメディアについては優れた選択です. &man.cpio.1; は stdin からの入力でなければならず, ディレクトリツリーの探索や ファイルリストについての機能はありません. &man.cpio.1; はネットワーク経由のバックアップの機能はありません. リモートテープドライブにはパイプラインと &man.rsh.1; を使って送る事ができます. (コマンド使用例はまだです) Pax &man.pax.1; は tarcpio に対する IEEE/POSIX の回答です. 長年の間, 様々なバージョンの tarcpio は, 互いにわずかながら非互換性を有していました. 各々をしらみ潰しに標準化する代わりに, POSIX は新しいアーカイブユーティリティを作ることにしました. pax は専用に開発された新しいフォーマットに加えて, いくつもの cpio や tar のフォーマットの読み書きに対応しようと試みています. コマンド群は tar よりも cpio の方にいくぶん似ています. Amanda Amanda (Advanced Maryland Network Disk Archiver) は単一のプログラムではなくクライアント / サーバ型のバックアップシステムです. Amanda サーバは, Amanda クライアントであるネットワークで サーバに接続された複数のコンピュータから 一つのテープドライブへバックアップをおこないます. このような場合の一般的な問題はいくつもの大容量の ディスクからデータディレクトリをテープにバックアップするには 時間がかかりすぎてしまうという事です. Amanda はこの問題を解決します. Amanda は同時に複数のファイルシステムのバックアップをおこなう時に 「ホールディングディスク」を使う事ができます. Amandaの設定ファイルに書いたすべてのファイルシステムの フルバックアップを特定の間隔でとるために「アーカイブセット」 と呼ばれるテープグループを作ります. これには夜間に作られるすべてのファイルシステムの増分 (あるいは差分として) のバックアップも含みます. 障害の起きたファイルシステムの回復には最も新しい フルバックアップと増分のバックアップが必要です. 設定ファイルでバックアップのコントロールと Amanda によるネットワークトラフィック量を設定します. Amanda はデータをテープに書くのにバックアッププログラムの いずれかを使うでしょう. Amanda はその一部分でもパッケージでも利用可能ですが, デフォルトではインストールされません. 何もしない 何もしない というのはコンピュータのプログラムではありませんが, バックアップの戦略として最も広く採用されている物です. これには初期投資が必要ありません. したがわなければならないバックアップスケジュールもありません. ただ何もしないだけです. もしデータに何かが起きたら, 苦笑いして耐えてください. あなたにとって時間やデータの価値が少ないか あるいはまったくないのであれば 何もしない のはあなたのコンピュータに最も適した バックアッププログラムでしょう. しかし注意してください. Unix は便利なツールです. 6 ヶ月も使っていれば価値のあるファイルの 山ができ上がっているでしょう. 何もしない/usr/obj やその他の, コンピュータによってつくり出された ディレクトリツリーについては適切な方法です. 一つの例はこのハンドブックのファイルで, これらは SGML のファイルより生成された物です. HTML ファイルのバックアップを作る必要はありません. SGML のソースファイルは定期的にバックアップします. どのバックアッププログラムが最適でしょう? 定期的に &man.dump.8; しましょう. Elizabeth D. Zwicky はここで検討したプログラムすべてについて 拷問的なテストをおこないました. すべてのデータと Unixファイルシステムの状態すべてを保存するには明らかに &man.dump.8; でしょう. Elizabeth は大きく変化に富んだ異常な状態 (いくつかはあまり異常でもない状態のものもあります) になっているファイルシステムで, それぞれのプログラムでファイルシステムの バックアップとリストアを行ってテストしました. 特色のある状態には, ホールを持つファイル, ホールとヌルブロックを持つファイル, 奇妙な文字をファイル名に持つファイル, 読み出し不可, 書き込み不可のファイル, デバイスファイル, バックアップ中にファイルのサイズを変更する, バックアップ中にファイルの作成/削除をおこなうなどがあります. 彼女は1991年10月の LISA Vで結果の発表をしています.torture-testing Backup and Archive Programs を参照してください. 緊急時のリストア手順 災難の起きる前に 起き得るどのような災難に対しても以下の 4ステップだけが必要な準備です. ステップ 1では, ファイルシステムテーブル(/etc/fstab) やブートメッセージで示されるすべてのディスクの disklabelをそれぞれ2コピーづつプリント (例えば disklabel da0 | lpr を実行します) します. ステップ 2では, boot.flpfixit.flp にそのシステムのすべてのデバイスドライバが 含まれているか確認します. 最も簡単な確認の方法は, フロッピーをドライブに入れてリブートし, ブートメッセージを確認することです. あなたのシステムのデバイスがすべて含まれ, 機能していれば, step 3へ飛んでください. そうでないなら, そのシステムのすべてのディスクをマウントでき, テープドライブにもアクセスできる 2種類のカスタムブートフロッピーディスクを作る必要があります. これらのフロッピーには &man.fdisk.8;, &man.disklabel.8;, &man.newfs.8;, &man.mount.8;, と利用したいバックアッププログラムが 入っていなければなりません. これらのプログラムはスタティックリンクされた プログラムである必要があります. &man.dump.8; を使うのであればフロッピーに &man.restore.8; を入れる必要があります. ステップ 3では, 通常の方法でバックアップを作ります. 最新のバックアップの後でおこなわれた変更は 回復することはできません. バックアップテープにライトプロテクトをしてください. ステップ 4では, フロッピー (boot.flpfixit.flp あるいはステップ 2で作った2枚のカスタムブートフロッピーディスクです) とバックアップテープのテストをします. 手順のノートを作りましょう. このノートはブートフロッピーディスク, バックアップテープに入れておきプリントアウトしておきます. あなたがリストアをおこなうような時は おそらく錯乱状態でしょうからこのノートはバックアップを 破壊してしまうようなことを防ぐのに役立つでしょう (どのようにして破壊するって? tar xvf /dev/rsa0 とする替りに偶然 tar cvf /dev/rsa0 とタイプしてバックアップテープに上書きしてしまうかも しれません). 訳注: 上書きはライトプロテクトをしておけば防げますが, なんらかの原因でプロテクトがはずれているかもしれません. ちなみに訳者の経験から言えば上のようなミスタイプは 結構起きます. 安全性を増すために, 毎回ブートフロッピーディスクを作り, 2 巻のバックアップテープを取ります. 一方を離れた場所に保管します. 離れた場所は同じ建物の地下室ではいけません. 世界貿易センタービルにあった数多くの会社は 苦い経験よりこの教訓を得ました. 離れた場所とはコンピュータやディスクドライブから かなり離れていて物理的に分離されていなければなりません. ブートフロッピーディスクを作るスクリプトの一例 /mnt/sbin/init gzip -c -best /sbin/fsck > /mnt/sbin/fsck gzip -c -best /sbin/mount > /mnt/sbin/mount gzip -c -best /sbin/halt > /mnt/sbin/halt gzip -c -best /sbin/restore > /mnt/sbin/restore gzip -c -best /bin/sh > /mnt/bin/sh gzip -c -best /bin/sync > /mnt/bin/sync cp /root/.profile /mnt/root cp -f /dev/MAKEDEV /mnt/dev chmod 755 /mnt/dev/MAKEDEV chmod 500 /mnt/sbin/init chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt chmod 555 /mnt/bin/sh /mnt/bin/sync chmod 6555 /mnt/sbin/restore # # create the devices nodes デバイスノードを作る # cd /mnt/dev ./MAKEDEV std ./MAKEDEV sd0 ./MAKEDEV sd1 ./MAKEDEV sd2 ./MAKEDEV st0 ./MAKEDEV pty0 cd / # # create minimum filesystem table 最小限のファイルシステムテーブル # cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < 災難の後に 重要な問題は, ハードウェアが生き残ったかどうかです. 定期的なバックアップを取っていれば ソフトウェアについて心配する必要はありません. ハードウェアがダメージを受けていたら, 最初にそのダメージを受けた部品を交換してください. ハードウェアに問題がなければ, フロッピーをチェックしてください. カスタムブートフロッピーディスクを使っているのであれば シングルユーザ(boot: プロンプトの出た時に -s とタイプしてください) でブートしてください. それから次の 「ファイルシステムを1つずつ回復する」 を読んでください. boot.flpfixit.flp を使っているのであればこのまま読み続けてください. boot.flp を入れてブートしてください. 本来のインストールメニューが表示されるはずです. (ここで) Fixit--Repair mode with CDROM or floppy.オプションを選びます. 指示の通り fixit.flp を入れてください. restore とその他の必要なプログラムは /mnt2/standに置かれています. ファイルシステムを一つずつ回復する 最初のディスクのrootパーティションを &man.mount.8; (例えば mount /dev/da0a /mnt のように) マウントして見てください. ディスクラベルが破壊されている場合は &man.disklabel.8; を使ってあらかじめプリントしておいた通りに パーティションを作り直しラベルをつけてセーブしてください. &man.newfs.8; を使いファイルシステムを作り直します. ルートパーティションを読み書き可能にマウント (mount -u -o rw /mnt) しなおします. バックアッププログラムとバックアップテープを使って このファイルシステムのデータを回復します (例えば restore vrf /dev/sa0とします). ファイルシステムをアンマウント (umount /mntなど) して, 障害を受けたファイルシステムそれぞれについて 繰り返してください. システムが動き出したら, 新しいテープにデータをバックアップしてください. どのような理由で再び事故が起きたりデータが 失われるかはわかりません. これに時間を費す事で, 後々の災難から救われる事になります. * 災難対策をしていませんでした. どうしたらいいでしょう? ]]> フロッピーへのバックアップはどうですか? データをフロッピーにバックアップすることはできますか? 実はフロッピーはバックアップ向きのメディアとは言えません. というのは: 特に長期間に渡って保存する場合, 信頼性が低い. バックアップ, リストアがとても遅い. 容量が小さい(ハードディスク全体の日々のバックアップに 1ダース, 長期間なら本当にたくさん). けれども, データをバックアップする他の手段がない場合には, まったくバックアップをしないよりもフロッピーを使うほうが良い でしょう. これを行う場合には, 高品質のものを使うようにしてください. まわりに何年も転がっていたフロッピーは使わない方よいでしょう. 評判のよいメーカの新品を使うことが理想です. どうやってデータをフロッピーにバックアップ するのですか? フロッピーへバックアップする最も良い方法は tar &man.tar.1; コマンドに (マルチ・ボリューム)     オプションを付けて, 複数のフロッピーにまたがるバックアップも できるようにする方法です. カレントディレクトリの全てのファイルとサブディレクトリを バックアップするには, 以下のようにします (root で): &prompt.root; tar Mcvf /dev/rfd0 * 1枚目のフロッピーがいっぱいになると &man.tar.1; は 次のボリュームを入れるようプロンプトを表示します. ( &man.tar.1; は, さまざまなメディアを扱えるので ボリュームと表示します. ここではフロッピーのことです) Prepare volume #2 for /dev/rfd0 and hit return: これは(ボリューム番号が増えながら) 指定された全てのファイルが 保存されるまで繰り返されます. バックアップを圧縮することはできませんか? 残念ながら, &man.tar.1; はマルチ・ボリュームに保存する場合は オプションを使うことができません. もちろん, すべてのファイルを &man.gzip.1; してから, フロッピーに &man.tar.1; して, ファイルを &man.gunzip.1; することはできます! リストアはどうしますか? 保存したファイル全てをリストアするには: &prompt.root; tar Mxvf /dev/rfd0 指定したファイルのみをリストアするには1枚目のフロッピーを セットして: &prompt.root; tar Mxvf /dev/rfd0 filename &man.tar.1; は, 必要なファイルを見つけるまで, 続きのフロッピーを セットするよう表示します. 別の方法として, どのフロッピーにファイルが入っているのかが 分かっているなら, そのフロッピーをセットして上記と同じコマンドを 使うこともできます. 最初のファイルが前のフロッピーから続いて いる場合は, &man.tar.1; は, 頼みもしないのに, そのファイルはリストア できないと警告します! diff --git a/ja_JP.eucJP/books/handbook/basics/chapter.sgml b/ja_JP.eucJP/books/handbook/basics/chapter.sgml index 9253c66088..3fa186e7ab 100644 --- a/ja_JP.eucJP/books/handbook/basics/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/basics/chapter.sgml @@ -1,596 +1,596 @@ Unix の基礎知識 訳: &a.jp.nakai;, 1996 年 10 月 12 日. この章では 改訂: Chris Shumway - cshumway@cdrom.com, 2000 年 3 月 10 日. + cshumway@osd.bsdi.com, 2000 年 3 月 10 日. この章では FreeBSD オペレーティングシステムの基本的なコマンドと機能について記述しています. あなたが FreeBSD の初心者なら, 何か質問する前にこの章を読んでおいた方がきっといいはずです. 許可属性(permissions; パーミッション) FreeBSD は BSD UNIX を起源とする歴史を持ち, いくつかの鍵となる UNIX 思想にもとづいた基本設計がされています. まず最も際だった特徴として最初に言えるのは, FreeBSD がマルチユーザのオペレーティングシステムだということです. FreeBSD は同時に働いている複数のユーザすべてを, 完全に分離したタスク上で処理する能力を持っています. また FreeBSD は, ハードウェアデバイス, 周辺装置, メモリ, CPU 時間等への要求を, 各ユーザが平等に利用できるように適切に共有し, 管理する役割を担っています. システムがマルチユーザをサポートしているため, システムが管理する資源はすべて, 誰がその資源を読み・書き・実行できるかを支配する, 一組の許可属性を持っています. これらの許可属性は 3 つの部分からなる 8 進数の形で格納されています. それはそのファイルの所有者(owner)に対するもの, そのファイルが所属するグループ(group)に対するもの, その他(others)に対するものの 3 つです. これを数字を使って表現すると, 次のようになります. 許可属性 ディレクトリの表示 0 読み込み不可, 書き込み不可, 実行不可 --- 1 読み込み不可, 書き込み不可, 実行可能 --x 2 読み込み不可, 書き込み可能, 実行不可 -w- 3 読み込み不可, 書き込み可能, 実行可能 -wx 4 読み込み可能, 書き込み不可, 実行不可 r-- 5 読み込み可能, 書き込み不可, 実行可能 r-x 6 読み込み可能, 書き込み可能, 実行不可 rw- 7 読み込み可能, 書き込み可能, 実行可能 rwx ls -l で表示される詳細なディレクトリリストでは, ファイルの所有者, グループ, その他への許可属性を示す欄があるのがわかります. 次に示すのは, その部分だけ抜き出したものです. -rw-r--r-- 左から右へ見たときに最初にあたる文字は, それが 普通のファイルなのか, ディレクトリなのか, キャラクタ型のデバイス特殊ファイルなのか, ブロック型のデバイス特殊ファイルなのか, ソケットなのか, その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です. その次の rw- と書かれた 3 文字は, そのファイルの所有者に許可を与えるものです. その次の r-- の 3 文字は, そのファイルが所属しているグループに許可を与えます. 最後の r-- の 3 文字は, システムに存在するその他のユーザに許可を与えます. - は許可が与えられていないことを示します. このファイルの例では, ファイルの所有者はこのファイルを読み書きでき, ファイルの所属しているグループに属するユーザはファイルを読むことだけでき, そのどちらでもないユーザは, このファイルを読むだけできるように許可属性が与えられています. 上の表によれば, このファイルに与えられた許可属性は 644 となります. ここで各数字は, このファイルの許可属性の 3 つの部分を表しています. ファイルについてはここまでの説明で十分です. しかし, デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は, 大部分のハードウェアをファイルとして取り扱います. そのため, プログラムからは普通のファイルとまったく同じようにオープンし, データの読み書きができるようになっています. これらのデバイス特殊ファイルは /dev ディレクトリに収められています. ディレクトリもまた, ファイルと同様に扱われます. それは読み込み/書き込み/実行の許可属性を持ちます. ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます. ディレクトリが実行可能になっているとき, それはその中が探索できること, たとえば, そのディレクトリ中のファイルリストが参照できることを意味します. この他にも許可属性はありますが, いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます. ファイルの許可属性そのものについて, また, それらの設定のしかたに関する詳しい情報は, &man.chmod.1; マニュアルページを参照してください. ディレクトリ構造 FreeBSD の用いているファイルシステムは多くの基本的なシステム動作を決定するもので, その階層構造は極めて重要です. ディレクトリ構造に関する完全な記述が &man.hier.7; のマニュアルページにありますので, ここでは繰り返しません. 詳しい情報は, &man.hier.7; をご覧ください. 最も重要なディレクトリは, すべてのディレクトリの根(root)にあたる / ディレクトリです. このディレクトリは起動時に一番最初にマウントされ, 起動時に必要な基本システムが含まれています. また, ルートディレクトリには, 追加したい他のファイルシステムをマウントするためのマウントポイントも含まれます. マウントポイントとはルートファイルシステムに存在する, 追加のファイルシステムと接続するためのディレクトリのことです. 標準的なマウントポイントには /usr, /var, /mnt, /cdrom があります. 通常これらのディレクトリについては, /etc/fstab というファイル中のエントリが参照されます. /etc/fstab さまざまなファイルシステムとマウントポイントの表であり, システムが参照します. /etc/fstab に書かれたファイルシステムは オプションが指定されていなければ, 起動時に &man.rc.8; スクリプトによって自動的にマウントされます. /etc/fstab ファイルの書式やオプションに関しての詳細は &man.fstab.5; をご覧ください. シェル FreeBSD では日々の作業のほとんどは, 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます. シェルの主な仕事はコマンドを入力チャンネルから受け取り, そしてそれらを実行することです. 大部分のシェルはさらに組み込みの機能を持っていて, 日々の作業, ファイル管理やファイル名の展開, コマンドライン編集, コマンドマクロ, 環境変数などに便利です. FreeBSD には sh(Bourne Shell) や csh(C-shell) が含まれています. また, これ以外にもたくさんのシェルが FreeBSD Ports コレクションから利用可能です. tcsh や bash などの高機能なものは, これに含まれています. 「あなたは, どのシェルを使いますか?」という質問は, まったく趣味の問題です. あなたが C のプログラマだったとすれば, tcsh のような C 風のシェルの方が落ち着くかもしれません. Linux から来た人や UNIX のコマンドラインインタフェイスになじみがなければ, bash を試すのも良いでしょう. ポイントは, それぞれのシェルは, あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ, そして, どのシェルを使うことにするかを決めるのはあなた自身だということです. シェルの一般的な機能の一つに, ファイル名の補完があります. コマンドやファイル名の最初の数文字を与えて TAB キーを押すことで, シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます. 例をあげましょう. 二つのファイル foobar, foo.bar が あったとします. foo.bar の方を削除しようとするとき rm fo[TAB].[TAB] と入力します. するとシェルは rm foo[BEEP].bar と出力するでしょう. [BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です. これは複数のファイルがマッチしたため, ファイル名の補完を完全に行なえなかったことを伝えています. foobarfoo.bar は 両方とも fo ではじまりますが, foo までなら補完できます. ここで . を入力して TAB を押せば, シェルはファイル名の残りの部分を補完できます. もう一つあげられるシェルの機能として, 環境変数があります. 環境変数とは, シェルの環境変数空間におけるキーと値とのペアです. この変数空間は, そのシェルから起動されたプログラムから参照でき, それを利用してプログラムの設定を保存するのに利用されます. 下の表は, 一般的な環境変数とその意味を示したものです. 変数名 意味 USER 現在のログインユーザのユーザ名. PATH コロンで区切られた実行ファイル探索のための ディレクトリのリスト. DISPLAY 接続する X11 ディスプレイのネットワーク名(存在する場合のみ). SHELL 現在のシェル. TERM ユーザの端末名. 端末のケーパビリティを決定するのに使われる. TERMCAP 種々の端末の機能を実現する端末のエスケープコードの データベースのエントリ. OSTYPE オペレーティングシステムの種別. たとえば FreeBSD. MACHTYPE システムが動作している CPU のアーキテクチャ. EDITOR ユーザの選んだテキストエディタ. PAGER ユーザの選んだテキストページャ. MANPATH コロンで区切られたマニュアルページ探索のための ディレクトリのリスト. 環境変数をセットしたりその値を見る方法は, それぞれのシェルごとに多少異なります. たとえば, csh や tcsh 等の C シェルでは setenv を使います. sh や bash 等の Bourne シェルでは setexport を使います. たとえば, EDITOR 環境変数の値を /usr/local/bin/emacs に セットするか変更するならば次のようにします. &prompt.user; setenv EDITOR /usr/local/bin/emacs Bourne シェルでは次のようになります. &prompt.user; export EDITOR="/usr/local/bin/emacs" ほとんどのシェルでは, コマンドライン中の変数名の前に $ 文字を置くことで, 環境変数を展開させることができます. たとえば, echo $TERM$TERM が セットされている内容を表示します. それはシェルが $TERM を展開して echo に渡しているからです. シェルはさまざまな特殊文字を, 特別なデータを表すものとして扱います. その特殊文字はメタキャラクタと呼ばれます. もっとも一般的なものは * で, これはファイル名に含まれる, あらゆる文字を表します. これらの特殊なメタキャラクタはファイル名の展開に使われます. たとえば, echo * と入力すると ls と入力したのとほとんど同じ結果を得られます. これはシェルが * とマッチするすべてのファイルを 受け取って echo のコマンドラインに渡し, 表示するからです. これらの特殊文字をシェルに解釈させないようにするため, 特殊文字の前にバックスラッシュ文字 (\) を置くことができます. echo $TERM は, あなたの端末が何にセットされているかを表示します. echo \$TERM$TERM と そのまま表示します. シェルの変更 シェルを変更する一番簡単な方法は chsh コマンドを使うことです. chsh を実行すると 環境変数 EDITOR で示されたエディタが立ち上がります. 環境変数をセットしていなかった時は vi が立ち上がります. Shell: の行を適宜変更してください. chsh オプションをつけると, エディタを起動せずにシェルを変更することが可能です. たとえば, シェルを bash に変えたいなら, 次のようにしてください. &prompt.user; chsh -s /usr/local/bin/bash chsh をパラメータなしで実行し, エディタでシェルを変更しても同じことができます. 使おうと思っているシェルは必ず /etc/shells 中に書かれているものでなければなりません. シェルを Ports コレクションから インストールしていたのであれば, すでにそれは行なわれていますが, 手動でインストールした場合は, それを忘れずに行ってください. たとえば, bash を手動で /usr/local/bin にインストールした場合 以下のようにする必要があります. &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells そして chsh を実行してください. テキストエディタ さまざまな FreeBSD の設定は, テキストファイルを編集することで行われます. そのため, テキストエディタの扱いに慣れると良いでしょう. FreeBSD には, 基本システムの一部として二, 三提供されるものと, Ports collection から利用できる, たくさんのテキストエディタが用意されています. 最も学習が簡単なエディタは, easy editor の略で ee と呼ばれるものです. ee を立ち上げるには, コマンドラインから ee filename と入力します. ここで filename は, 編集しようとしているファイルの名前です. たとえば, /etc/rc.conf を編集するには ee /etc/rc.conf と入力します. 一旦 ee の中に入れば, エディタの機能を操作するコマンドはすべてディスプレイの上部に 表示されています. キャレット ^ 文字は キーボードのコントロールキーを意味しますので, ^e はコントロールキーと e を一緒に押すという意味になります. ee を終了するにはエスケープキーを押し, そして leave editor を選びます. ファイルが更新されていたときは, エディタは変更をセーブするかどうかプロンプトを出します. FreeBSD には, 基本システムの一部として vi, Ports コレクションの一部として emacsvim といった, より強力なテキストエディタが用意されています. これらのエディタはやや学習が複雑ですが, より強力で高い機能性を提供します. しかし, あなたが多量のテキストを編集することを考えているなら, vimemacs といった強力なエディタを習得することは, より多くの時間を節約することでしょう. さらに詳しい情報を得るには... オンラインマニュアル FreeBSD についてのもっとも包括的な文書は, マニュアルページの形式になっているものです. FreeBSD システム上のほとんどすべてのプログラムには, 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています. これらのマニュアルは man コマンドで見ることができます. man コマンドの使い方は簡単です. &prompt.user; man コマンド名 コマンド名 のところには, 知りたいコマンドの名前を入れます. たとえば ls コマンドについて知りたい場合には, 次のように入力します. &prompt.user; man ls オンラインマニュアルは, セクション番号で分類されています. ユーザコマンド システムコールとエラー番号 C のライブラリ関数 デバイスドライバ ファイル形式 ゲームや娯楽 さまざまな情報 システムの管理と操作のためのコマンド カーネル開発者のための情報 時折, 同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります. たとえば, chmod ユーザコマンドと chmod() システムコールの場合がそれに該当します. この場合, man コマンドにセクション番号を与えることで, どちらを参照したいかを指定することができます. &prompt.user; man 1 chmod 上のようにすれば, ユーザコマンド chmod のマニュアルページが表示されます. オンラインマニュアルの特定セクションへの参照は, 慣習的に書かれている文書で括弧の中に示されます. すなわち, &man.chmod.1; は chmod ユーザコマンドを, &man.chmod.2; はシステムコールの方を示しています. コマンドの名前を知っていて, 単純にその使い方を知りたい場合はここまでの説明で十分でしょう. しかし, もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? man に スイッチをつければ, コマンド解説(description)の文章から, 指定したキーワードを検索することができます. &prompt.user; man -k mail このコマンドにより, mail というキーワードをコマンド解説に含むコマンドの一覧が表示されます. 実際には, これは apropos コマンドを使う場合と同等の機能です. それでは, /usr/bin にあるさまざまなコマンドすべてを見ていて, それらが実際にどう働くのかが, まったく見当もつかないときには どうしたら良いでしょう? そのときは単純に, &prompt.user; cd /usr/bin &prompt.user; man -f * とするか, あるいは同じ働きをする &prompt.user; cd /usr/bin &prompt.user; whatis * としてください. GNU の Info ファイル FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています. これらのプログラムには, マニュアルページに加えて info ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています. この文書は info コマンド, あるいは emacs をインストールしているなら emacs の info モードで読むことができます. &man.info.1; コマンドを使うには, 単に次のように入力します. &prompt.user; info h と入力すると, 簡単な手引きを読むことができます. クイックコマンドリファレンスは ? を入力してください. diff --git a/ja_JP.eucJP/books/handbook/boot/chapter.sgml b/ja_JP.eucJP/books/handbook/boot/chapter.sgml index 5ebe20bedc..946ca29f5d 100644 --- a/ja_JP.eucJP/books/handbook/boot/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/boot/chapter.sgml @@ -1,569 +1,569 @@ FreeBSD の起動のプロセス この章では FreeBSD は通常, 起動(bootstrap)を三段階に分けて行ないます. これには基本的に, 互いに順番に呼び出される三つのプログラム(二つの 起動ブロック(boot block)と ローダ(loader))が使われています. これらのプログラムはそれぞれ, その前に呼び出されるプログラムの情報に基づいて動作し, より洗練された機能を提供します. その後カーネルが起動し, デバイスの検出と初期化を行ないます. そしてカーネルの起動が終わると, 制御はユーザープロセスの &man.init.8; へ移されます. &man.init.8; はまず ディスクが利用可能であることを確かめ, ファイルシステムのマウント, ネットワークで利用するネットワークカードのセットアップ, そして通常 FreeBSD システムで初期時に起動されるすべてのプロセスの起動, といったユーザーレベルでのリソース(資源)設定を行ないます. 起動ブロック: 起動ステージ 1 および 2 起動(bootstrap)とは, コンピュータが接続されたデバイスを検出, 初期化し, 必要となるプログラムを動作させることを指します. 起動には起動の際の動作が記録された, 特殊な読み出し専用メモリチップを利用します. その動作は通常, メモリテストやデバイスの設定を行なう他のチップに制御を渡し, そして設定された内容をプログラムに提供するというものです. 標準的な個人向けコンピュータでは, BIOS (起動を行なう部分) と CMOS (設定を記録する部分) によって起動を実現しています. これらはディスクが存在すること, そしてオペレーティングシステムをロードするためのプログラムが ディスク上のどこにあるのかを認識しています. この章では上に述べたような起動の初期の過程については扱いません. 焦点を合わせるのは, ディスク上のプログラムに制御が移された後の内容についてです. 起動ブロックは(通常), ローダを見つけて実行する役割を持っています. したがって, ファイルシステム上のプログラムを見つけること, 実行できること, そしてその動作に関して最低限の設定が可能である必要があります. boot0 まず実際に最初にあるのは boot0 と呼ばれる起動ブロックです. これは マスターブートレコード(MBR; Master Boot Record) という, システムが起動時にプログラムを検索するディスク上の特殊な部分に存在します. この部分は, 単に起動可能なスライスのリストが格納されています. boot0 は非常に単純なプログラムです. これは, MBR にあるプログラムは 512 バイトの大きさでなければならないという制限があるためです. boot0 は, 下のような出力をします. boot0 のスクリーンショット F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 boot1 boot1 は起動スライス(slice)の起動セクタにあります. 起動セクタは boot0 が存在し, MBR にある他のプログラムが 起動のプロセスを続けるために必要なプログラムを探す部分です. boot1 も非常に単純なプログラムです. これは boot0 同様に, 512 バイトの大きさでなければならないという制限があるためです. boot1 は boot2 を検索し, 実行するため, そのスライスの情報を保持する FreeBSD のディスクラベル(disklabel) に関する最低限の情報を持っています. boot2 boot2 はもう少し高機能です. これは FreeBSDのファイルシステム上でファイルを見つける能力を持ち, 実行するカーネルやローダを指定するための簡単なインターフェイスを提供する事ができます. ローダ(loader)はさらに高機能なもので, 使いやすく簡単な起動設定が行なえる手段を提供します. boot2 は通常それを起動します. 以前の boot2 は, カーネルを直接起動する機能しかありませんでした. boot2 のスクリーンショット >> FreeBSD/i386 BOOT Default: 0:wd(0,a)/kernel boot: ローダ(loader): 起動ステージ 3 ローダは三段階の起動プロセスの最終段階です. ローダは通常, ファイルシステム上の /boot/loader として存在しています. /boot/boot0, /boot/boot1, /boot/boot2 というファイルがありますが, これらは MBR, 起動セクタ, ディスクラベルの実際のコピーではありません. ローダは, よりさまざまなコマンド群をサポートした 強力なインタープリタによって提供される簡易組み込みコマンド群を利用することで, ユーザが利用しやすい設定手段となるように設計されています. ローダプログラムの処理の流れ ローダは初期化の際にコンソールとディスクの検出を行ない, どのディスクから起動しているかを調べます. そして必要な変数を設定してからインタープリタを起動し, 簡易コマンドを解釈します. ローダは次に /boot/loader.rc を読み込み, 通常, 変数の標準値を定義した /boot/defaults/loader.conf と, そのマシンにローカルな変数を定義した /boot/loader.conf を読み込みます. loader.rc はそれらの変数にもとづき, 選択されたモジュールとカーネルをロードします. ローダは最後に, 標準設定で 10 秒のキー入力待ち時間を用意し, 入力がなければカーネルを起動します. 入力があった場合, 簡易コマンド群が使えるプロンプトが表示され, ユーザは変数を調整したり, すべてのモジュールをアンロードしたり, モジュールをロードしたりすることができます. その後, 最終的な起動や再起動へ移行します. この処理に関するより技術的な説明は &man.loader.8; にあります. ローダの組み込みコマンド 簡易コマンド群は, 次のようなもので構成されています. autoboot seconds seconds で与えられた時間内に入力がなければ, カーネルの起動へと進みます. カウントダウンを表示し, 標準設定では 10 秒間です. boot -options kernelname すぐにカーネルの起動へ進みます. オプション, カーネル名が指定されている場合は, それらが使われます. boot-conf すべてのモジュールの設定を, 起動時と同じように変数にもとづいて自動的に行ないます. このコマンドは, まず unload を行なって, 変数—普通 kernel など—を変更した場合にのみ有効に働きます. help topic /boot/loader.help を読み込み, ヘルプメッセージを表示します. topicindex 指定された場合, 利用可能な topic を表示します. include filename 指定されたファイル名のファイルを処理します. ローダはファイルを読み込み, 行単位で解釈します. エラーが発生した場合, include コマンドの実行はその時点で停止します. load type filename 指定されたファイル名のカーネル, カーネルモジュール, あるいは type に指定された種類のファイルをロードします. ファイル名以降に指定された引数はファイルへと渡されます. ls path 指定された path にあるファイルを表示します. path が指定されていなければ, ルートディレクトリを表示します. が指定されていればファイルサイズも表示されます. lsdev モジュールがロード可能なすべてのデバイスを表示します. もし が指定されていれば, より詳細な出力がされます. lsmod ロード済みのモジュールを表示します. が指定されていれば, より詳細な内容が出力されます. more filename LINES 単位でスクロールを停止しながら指定されたファイルを表示します. reboot すぐにシステムを再起動します. set variable set variable=value ローダの環境変数を設定します. unload すべてのロード済みモジュールを削除します. ローダの使用例 次にあげるのは, ローダの実践的な使用例です. 普段使っているカーネルをシングルユーザモードで起動します. boot -s 普段使っているカーネルとモジュールをアンロードし, 古い(もしくは別の)カーネルをロードします. unload load kernel.old kernel.GENERIC とすると, インストールディスクに入っていた generic カーネルを指定することができます. また, 直前にインストールされていたカーネル(たとえば, カーネルを自分で設定したり, アップグレードしたりした場合)を指定するには kernel.old とします. 普段のカーネルで使っているモジュールを 指定したカーネルでロードする場合は, 下のようにします. unload set kernel="kernel.old" boot-conf カーネルの設定スクリプト(通常, カーネル起動時に設定される内容を自動化するスクリプト)をロードします. load -t userconfig_script /boot/kernel.conf カーネル起動時の応答 カーネルがローダ(通常は) かboot2 (ローダを迂回して)によってロードされると, 起動フラグを調べます. もし起動フラグがあれば, それに応じて動作を調整します. カーネル起動フラグ 良く使われる起動フラグは次のとおりです. カーネル初期化中に, ルートファイルシステムとしてマウントするデバイスを尋ねます. CDROM から起動します. 起動時にカーネルコンフィグレーションを行なう UserConfig を実行します. シングルユーザモードで起動します. カーネル起動時により詳細な情報を表示します. 起動フラグはこの他にもあります. それらについては &man.boot.8; を参照してください. Init: プロセス制御の初期化 カーネルの起動が完了すると, init というユーザプロセスに制御が移されます. これは /sbin/init, もしくは loaderinit_path 変数で指定される場所にあります. 自動再起動(automatic reboot)の動作 自動再起動では, システム上で利用できるファイルシステムの一慣性を確認します. もしそれに問題があって fsck がその不一致を修復できなければ, 管理者に直接に処置させるため init はシステムをシングルユーザモードへと移行させます. シングルユーザモード このモードには, 自動再起動の処理中か, ユーザが起動時に を指定た場合, あるいは loaderboot_single 変数を設定することによって移行します. また, マルチユーザモードから 再起動オプション() や停止(halt)オプション()なしで shutdown を呼び出すとこのモードに移行します. /etc/ttys でシステムコンソール consoleinsecure に設定されている場合, システムはシングルユーザモードに移行する前に root のパスワードを入力するように求めます. /etc/ttys の insecure コンソール # name getty type status comments # # This entry needed for asking password when init goes to single-user mode # If you want to be asked for password, change "secure" to "insecure" here # # 訳) このエントリは init がシングルユーザモードへ移行する際にパスワードを要 # 求させるために必要です. もし, パスワードの要求を望む場合, ここの "secure" を # "insecure" へ変更してください. # console none unknown off insecure insecure コンソールとは, あなた自身, コンソールが物理的に安全でないと考えていて, root パスワードを知る人だけがシングルユーザモードを使えるようにしたいという意味であり, コンソールを安全でない状態で使いたいという意味ではありません. そのため, 安全性を求めるならば secure でなく insecure を選んでください. マルチユーザモード init がファイルシステムが正常であると判断するか, ユーザがシングルユーザモードを終了すると, システムはマルチユーザモードへ移行し, リソースの設定を始めます. リソース設定(rc) リソース設定システムはデフォルト設定を /etc/defaults/rc.conf から, そのシステム独自の細かな設定を /etc/rc.conf から読み込みます. そして /etc/fstab に記述されるシステムファイルシステムをマウントし, ネットワークサービスの開始, さまざまなシステムデーモンの開始, そして最後に, ローカルにインストールされた package の起動スクリプトの実行へと進みます. リソース設定システムのに関する参考資料は, &man.rc.8; にあります. これはスクリプトそのものを調べることと同じくらい優れたものです. シャットダウン動作 shutdown を用いてシステムを意図的にシャットダウンした場合, init/etc/rc.shutdown というスクリプトの実行を試みます. そして, すべてのプロセスへ終了(terminate)シグナルを送り, 続いてうまく終了できなかったプロセスへ 強制終了(kill)シグナルを送ります. diff --git a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml index 6b3ce28198..0080a9d0f0 100644 --- a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml @@ -1,1892 +1,1907 @@ 開発の最前線 改訂: &a.jim;, 2000 年 3 月. 原作: &a.jkh;, &a.phk;, &a.jdp;, &a.nik;, およびたくさんのフィードバック. この章では - あるリリースから次のリリースまでの期間にも, FreeBSD の開発は - 休みなく続けられています. + あるリリースから次のリリースまでの期間にも, + FreeBSD の開発は休みなく続けられています. この開発の最前線に興味を持っている人のために, 手元のシステムを最新の開発ツリーに同期させておくための, - とても使いやすい仕掛けが何種類も用意されています. 注意: - 開発の最前線は, 誰でもが扱えるという性質のものではありません! + とても使いやすい仕掛けが何種類も用意されています. + 注意: 開発の最前線は, + 誰もが扱えるという性質のものではありません! もしもあなたが, 開発途中のシステムを追いかけようか, - それともリリース - バージョンのどれかを使い続けようかと迷っているのなら, + それともリリースバージョンのどれかを使い続けようかと迷っているのなら, きっとこの章が参考になるでしょう. -CURRENT vs. -STABLE - FreeBSD には二つの開発ブランチがあります. -CURRENT と -STABLE です. - この章ではそれぞれについて少しだけ説明し, どのようにしてあなたの - システムを対応するツリーに対して常に最新の状態にに保つかについて - 記述します. まず -CURRENT を論じ, ついで -STABLE を論じます. + FreeBSD には二つの開発ブランチがあります. + それは -CURRENT と -STABLE です. + この章ではそれぞれについて簡単に説明し, + どのようにしてあなたのシステムを対応するツリーに対して, + どうやって常に最新の状態に保つかについて扱います. + まずは -CURRENT, 次に -STABLE について説明します. 訳: &a.hanai;, 1996 年 11 月 6 日. - 最新のFreeBSDを追いかける + 最新の FreeBSDを 追いかける - これを読むならば, 心に止めておいて欲しいことがあります. - -CURRENT とは FreeBSD の開発における 切断面 - であり, 故にあなたが FreeBSD を使い始めたばかりなら - あなたはこれがすることについて十分検討を重ねた方がいいでしょう. + これを読む前に, + 心にとめておいて欲しいことがあります. + -CURRENT とは FreeBSD の開発の最前線だということです. + もし FreeBSD を使い始めたばかりなら, + これを運用することについて十分検討を重ねた方が良いでしょう. FreeBSD-current ってなに? - FreeBSD-CURRENT とは, 文字通りに, 日々変更されている - FreeBSD のソース - のスナップショット以外の何ものでもありません. - 中には現在開発途上のソフトウェア, 実験的な変更, - あるいは過渡的な機能などが含まれています. また, - この中に入っている機能がすべて次の公式リリースに - 入るとはかぎりません. FreeBSD-CURRENT - をソースからほとんど毎日コンパイルしている人はたくさん - いますが, 時期によっては FreeBSD-CURRENT - はコンパイルさえできない状態になっていることもあります. - これらの問題は一般的には可能な限り素早く解決されますが, - FreeBSD-CURRENT のソースが不幸をもたらすか, それとも非常に - 素晴らしい機能をもたらすかというのは文字通り, - ある与えられた 24 時間の間 - のどの部分であなたがソースを手に入れたか, - による場合もあります. + FreeBSD-CURRENT とは文字通り, + 日々変更されている + FreeBSD のソースのスナップショット以外の何ものでもありません. + 中には現在開発途上のソフトウェア, + 実験的な変更, あるいは過渡的な機能などが含まれています. + また, この中に入っている機能がすべて, + 次の公式リリースに入るとは限りません. + FreeBSD-CURRENT をソースからほぼ毎日コンパイルしている人は + たくさんいますが, + 時期によってはコンパイルさえできない状態になっていることもあります. + 一般的に, これらの問題は可能な限り迅速に解決されますが, + FreeBSD-CURRENT のソースが不幸をもたらすか, + それとも非常に素晴らしい機能をもたらすかというのは文字通り, + ある与えられた 24 + 時間の間の, + どの部分であなたがソースを手に入れたかによる場合もあるのです. 誰が FreeBSD-current を必要としてるの? - FreeBSD-CURRENT は, - 主に次の三つの重要なグループを対象としています. + FreeBSD-CURRENT は, + 主に次の三つの重要なグループを対象としています. - - - ソースツリーのある部分に関して活発に作業している - FreeBSD グループのメンバー. 彼らにとっては - 最新のもの にしておくのが - 絶対に必要なことなのです. + + + ソースツリーのある部分に関して活発に作業している + FreeBSD グループのメンバ. + 彼らにとっては最新のものにしておくのが + 絶対に必要なことなのです. - 活発にテストをする FreeBSD グループのメンバー. 彼らは, - FreeBSD-CURRENT を 健全である - ことを出来るだけ確認するために種々の問題と戦うのに - 時間を費やすのを厭わない人々です. 彼らはまた, - 様々な変更に関する提案や FreeBSD - の大まかな方向付けを行ないたいと思っている - 人々でもあります. + 活発にテストしている FreeBSD グループのメンバ. + 彼らは, FreeBSD-CURRENT + が健全であることを可能な限り確認するために, + 種々の問題と戦う時間を惜しまない人々です. + 彼らはまた, 様々な変更に関する提案や + FreeBSD の大まかな方向付けを行ないたいと思っている + 人々でもあります. - 単に, 様々な事に目を向け, 参考のために - (例えば, 動かすためではなく 読むため - に) 最新のソースを使いたいと思っている FreeBSD - (または他の) グループのまわりにいるメンバー. - これらの人々はまた, - 時々コメントやコードを寄稿してくれます. - - + 単に, 様々な事に目を向け, 参考のために + (たとえば動かすためではなく読むために) + 最新のソースを使いたいと思っている FreeBSD + (または他の) グループのまわりにいるメンバ. + これらの人々はまた, + 時々コメントやコードを寄稿してくれます. + + - FreeBSD-CURRENT - に期待しては<emphasis>いけない</emphasis>ことは? + FreeBSD-CURRENT + に期待しては<emphasis>いけない</emphasis>ことは? - - なにか新しくカッコイイモノがあると聞き, 自分の周囲では - 一番にそれを持ちたいがためにリリース前のコードの断片を - 追いかけること. - - - - バグを修正するための素早い方法. - - - - 我々によって 公式にサポートされている - こと. 私たちは 3 つの 公式な FreeBSD-CURRENT - のグループの一つに実際に属する - 人々を助けるのにベストを尽くしますが, - 技術的なサポートを行なうには 単に「時間が足りない」のです. - これは我々が外の人を助けるの好まない, - ケチで意地悪い人間だと いうことではなく (もしそうなら - FreeBSD なんかやっていません), 文字通り我々は一日に 400 - ものメッセージに答え かつ FreeBSD - の作業をすることなど出来ない! ということなのです. もし, - たくさんの質問に答えるか, それとも FreeBSD - を良くする作業を続けるかという選択が与えられた場合, - あなた方のほとんどは後者を支持する, - と私は確信しています. - - + + なにか新しくカッコイイモノがあると聞き, + 自分の周囲では一番にそれを持ちたいがために, + リリース前のコードの断片を追いかけること. + + + + バグを修正するための素早い方法. + + + + わたしたちが公式にサポートすること. + わたしたちは 3 つの公式な + FreeBSD-CURRENT のグループの一つに, + 実際に属する人々を助けるのにベストを尽くしますが, + 技術的なサポートを行なうには, 単に「時間が足りない」のです. + これはわたしたちが外の人を助けるの好まない, + ケチで意地悪い人間だということではなく + (もしそうなら FreeBSD なんかやっていません), + 文字通りわたしたちは一日に 400 ものメッセージに答え, + かつ FreeBSD + の作業をすることなど出来ない! + ということなのです. + もし, たくさんの質問に答えるか, + それとも FreeBSD を良くする作業を続けるか, + という選択が与えられた場合, + あなた方のほとんどは後者を支持するとわたしは確信しています. + + FreeBSD-CURRENT を使う - - - - &a.current;と&a.cvsall;に加わって下さい. - これは単に良い考えであるというだけでなく, - 必須のことなのです. もし - FreeBSD-current - メーリングリストに入っていなければ, - 様々な人がシステムの現在の状態について - 述べているコメントを決して見ることはありませんし, - 従って他の人が既に見つけて解決している多くの問題に戸惑っ - てあきらめてしまうでしょう. さらに言うと, - システムを正常に保つための - 重要な情報を見逃してしまう可能性もあります. - - &a.cvsall; メーリングリストでは, - それぞれの変更についての commit - ログを見ることができますし, - それに関して起こり得る副作用の情報を得ることができ, - もう一つの加わるに値するメーリングリストです. - - これらのメーリングリストに入るには, &a.majordomo; - へ + + + + &a.current; + と + &a.cvsall; + に加わってください. + これは単に良い考えであるというだけでなく, + 必須のことなのです. + もし + FreeBSD-current + メーリングリストに入っていなければ, + さまざまな人がシステムの現在の状態について + 述べているコメントを見ることは決してありませんし, + 従って他の人が既に見つけて解決している + 多くの問題に戸惑ってあきらめてしまうでしょう. + さらに言うと, システムを正常に保つための + 重要な情報を見逃してしまう可能性もあります. + + &a.cvsall; メーリングリストでは, + それぞれの変更についての + commit ログを見ることができます. + また, それに関して起こり得る副作用の情報を得ることができますので, + 参加する価値のあるメーリングリストです. + + これらのメーリングリストに入るには, + &a.majordomo; へ subscribe freebsd-current subscribe cvs-all - と書いたメールを送って下さい. オプションとして本文に - help と書けば, Majordomo - はあなたへ我々がサポ ートする様々なメーリングリストに参加 - / 脱退する方法に関する詳しい ヘルプを送ります. - + と書いたメールを送ってください. + オプションとして本文に + help + と書けば, Majordomo からあなたへ, + わたしたちがサポートする様々なメーリングリストに参加 + /脱退する方法に関する, 詳しいヘルプが送られます. + + + + ftp.FreeBSD.org + からのソースの入手. + 以下の 3 つの方法で行なうことができます. + + + + cvsup を + この supfile + を用いて使用する. + これは 2 番目に推薦される方法です. + なぜなら, cvsup によって一度全体を入手し, + 後は変更されたところだけを入手することができるからです. + たくさんの人が自動的にソースを最新のものに保つために + cvsup を cron から起動しています. + これを行なうための非常に簡単な方法は, 単に + +
&prompt.root; pkg_add -f \ +ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz +
+ + とタイプすることです. +
- - ftp.FreeBSD.org - からのソースの入手. 以下の3つの方法で行なうこと - が出来ます. - - - - 下に述べられているCTMを用いる. - 均一なレートの, 良質の TCP/IP - 接続を持っていない人には, - これが一番いい方法でしょう. - - - - cvsup を この supfile - を用いて使用する. これは 2 番目に推薦される方法です. - なぜなら, cvsup によって一度全体を入手し, - 後は変更されたところだけを入手することが - 出来るからです. - たくさんの人が自動的にソースを最新のものに保つために - cvsup を cron から起動しています. - これを行なうための非常に簡単な方法は, 単に - -
&prompt.root; pkg_add -f \ -ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
- - とタイプすることです. -
- - - ftp を使う. FreeBSD-current - のソースツリーは常に - ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/ - に 公開 されています. - 我々はまた全体を compress/tar して入手できる - wu-ftpd を使っています. 例えば, - - usr.bin/lex - - があったとすると, - - ftp> cd usr.bin -ftp> get lex.tar + + ftp を使う. + FreeBSD-current のソースツリーは常に + + ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/ + で公開されています. + わたしたちはまた, 全体を compress/tar して入手できる + wu-ftpd を使っています. + たとえば, - とすることにより, ディレクトリ全体(この場合, - usr.bin/lex以下全体) を tar - ファイルとして入手することができます. - -
-
+ usr.bin/lex - - 以上のことをまとめると, - 必要に応じて迅速なアクセスをする必要があり, - 接続のバンド幅が問題でなければ cvsup - か ftp を使いましょう. そうでなければ - CTM を使いましょう. - - もしソースを, - 眺めるだけでなく走らせるために入手しているのであれば, - 一部だけ選ぶのではなく, current - の全体を手に入れてください. なぜなら, - ソースの様々な部分が他の部分の更新に依存しており, - 一部のみをコンパイルしようとすると, - ほぼ間違いなくトラブルを起こすからです. - - current をコンパイルする前に - /usr/src にある Makefile - をよく読んでください. アップグレードの処理の一部として, - 少なくとも一回は最初に make - world を行なうべきでしょう. &a.current; を読めば, - 次のリリースへ向けて, 時々必要になる - 他のブートストラップの方法に関して - 常に最新情報を得ることが出来ます. - + があったとすると, - - アクティブになって下さい! もし FreeBSD-CURRENT - を走らせているなら我々はそれに関するコメント, - 特に拡張やバグ潰しに関する提案, を欲しています. - コードを伴う提案はもっとも歓迎されるものです! - -
+ ftp> cd usr.bin +ftp> get lex.tar + + とすることにより, ディレクトリ全体(この場合, + usr.bin/lex以下全体) を tar + ファイルとして入手することができます. +
+ + + CTMを用いる. + (接続料が高額だったり, e-mail でのアクセスしかできないような) + あまり良質でない TCP/IP 接続の場合には, CTM + を利用すると良いでしょう. ただし, + これには多くの手間がかかりますし, + 壊れたファイルを受けとってしまう可能性もあります. + そのため, 最近ではあまり使われなくなっており, + 長い間使用できなくなってしまう事態が発生する可能性があります + (訳注: 保守する人が少ないためです). + 9600bps 以上の速度で接続しているなら, + CVSup + を利用されることを推奨します. + + +
+ + + + もし, ソースを眺めるだけでなく, + 走らせるために入手しているのであれば, + 一部だけ選ぶのではなく, current + の全体を手に入れてください. + なぜなら, ソースのさまざまな部分が他の部分の更新に依存しており, + 一部のみをコンパイルしようとすると, + ほぼ間違いなくトラブルを起こすからです. + + current をコンパイルする前に + /usr/src にある Makefile + を良く読んでください. + アップグレードの処理の一部として, + 少なくとも一回は最初に + make world + を行なうべきでしょう. + &a.current; を読めば, + 次のリリースへ向けて時々必要になる他のブートストラップの方法に関して, + 常に最新情報を得ることが出来ます. + + + + アクティブになって下さい! + もし FreeBSD-CURRENT + を走らせているなら, わたしたちはそれに関するコメント, + 特に拡張やバグ潰しに関する提案, を欲しています. + コードを伴う提案はもっとも歓迎されるものです! + +
- FreeBSD の安定状態の持続 + FreeBSD の安定状態の持続 あなたが FreeBSD をプロダクション環境下で使っていて -CURRENT 系列からの修正の最新版を得ていることを確実にしたいなら -STABLE を使っていた方がいいでしょう. これは新しいリリースが まとめられた時 -RELEASE がこれから分岐するツリーです. たとえば, あなたが 3.4-RELEASE のコピーを持っていたとして, それは単に CD-ROM にまとめられた -STABLE 系列の snapshot に過ぎません. -RELEASE 以降に -STABLE にマージされた差分を入手するには -STABLE 系列を - 追跡する必要があります. + 追跡する必要があります. - 訳: &a.jp.iwasaki;. + 訳: &a.jp.iwasaki;. FreeBSD-STABLE ってなに? - FreeBSD-STABLE は, - 次の本流のリリースを目指した新機能をあまり採り入 - れない保守的な変更のための開発の支流です. - 実験的またはテスト未完の変更はこの支流には取り入れられません - (最新の FreeBSD を追いかける - 参照). + FreeBSD-STABLE は, + 次の本流のリリースを目指した新機能をあまり採り入れない, + 保守的な変更のための開発の支流です. + 実験的, もしくはテスト未完の変更はこの支流には取り入れられません + (最新の FreeBSD を追いかける参照). 誰が FreeBSD-STABLE を必要としているの? - もしあなたが仕事で使用しているとか, なによりも FreeBSD - システムの安定性を最重要視するなら, - stable を追いかけることを考えるべきで - しょう. stable - の支流は前のリリースに関して効果的にバグフィックスされた - 流れであるため, 最新のリリース ( - &rel.current;-RELEASE 執筆時点) - をインストールしているのであれば, 特にそうです. - - - stable - ツリーが常に完全に互換性があり安定するように努力し - ていますが, たまに間違いがあることに注意してください (結局, - 内容が吟味 - されずに素早く送られた変更を含むソースがまだあるのです). - また, current を - stable - へ移行する前に完璧なテストフィックスに最善を尽くしますが, - 私たちのテストはすべてのケースを十分に網羅して - いるとは限りません. もし何か stable - で不具合があるようでしたら, - 私たちにすぐに教えてください - (次の節参照). - + もしあなたが仕事で使用しているとか, なによりも FreeBSD + システムの安定性を最重要視するなら, + stable を追いかけることを考えるべきでしょう. + stable + の支流は前のリリースに関して効果的にバグフィックスされた流れであるため, + 最新のリリース + ( + &rel.current;-RELEASE 執筆時点) + をインストールしているのであれば, 特にそうです. + + + stable + ツリーが常に完全に互換性があり安定するように努力していますが, + たまに間違いがあることに注意してください + (結局, 内容が吟味されずに素早く送られた変更を含むソースがまだあるのです). + また, current を + stable + へ移行する前に完璧なテストフィックスに最善を尽くしますが, + わたしたちのテストはすべてのケースを十分に網羅しているとは限りません. + もし何か stable で不具合があるようでしたら, + わたしたちにすぐに教えてください + (次の節参照). + FreeBSD-STABLE を使う - - - &a.stable; へ加わってください. このメーリングリスト - では, stable の構築に関連する事柄や, - その他の注意すべき点 に関する情報が流れています. - また開発者は議論の余地がある修正や変更を考えている場合に, - このメーリングリストで公表し, 提案された変更に - 関して問題が生じるかどうかを返答する機会を - ユーザに与えます. - - また, &a.cvsall; メーリングリストでは, - それぞれの変更がなされると - 起こりうる副作用に関するすべての適切な情報と一緒に commit - log を読むことができます. subscribe - しておきたいもう一つのメーリングリストです. - - メーリングリストに参加するには, &a.majordomo - へメッセージの本文に - 次のように書いたメールを送ってください: - - + + + &a.stable; へ加わってください. + このメーリングリストでは, + stable の構築に関連する事柄や, + その他の注意すべき点 に関する情報が流れています. + また開発者は議論の余地がある修正や変更を考えている場合に, + このメーリングリストで公表し, + 提案された変更に関して問題が生じるかどうかを返答する機会をユーザに与えます. + + また, &a.cvsall; メーリングリストでは, + それぞれの変更がなされると, + 起こりうる副作用に関するすべての適切な情報と一緒に + commit log を読むことができます. subscribe + しておきたいもう一つのメーリングリストです. + + メーリングリストに参加するには, + &a.majordomo; + へメッセージの本文に次のように書いたメールを送ってください: + + subscribe freebsd-stable subscribe cvs-all - オプションとして本文に `help' と書けば, Majordomo - は私たちがサポートする様々なメーリングリストに参加 / - 脱退する方法に関する詳しいヘルプを送付します. - + オプションとして本文に `help' と書けば, + Majordomo はわたしたちがサポートするさまざまなメーリングリストに参加 / + 脱退する方法に関する詳しいヘルプを送付します. + - + もし, あなたが新しいシステムをインストールしようとしていて それを可能な限り安定なものにしておきたいなら, - 最新のブランチの snapshot を - ftp://releng4.freebsd.org/pub/FreeBSD - から取得し, これを一般のリリースのものと同様に - インストールしてください. - - もし, 既に FreeBSD の以前のリリースが動いている場合で, - これをソースからアップグレードしようとするならば, ftp.FreeBSD.org より簡単に - これを行う事が出来ます. これには次の 3 つの方法があります. - + 最新のブランチの snapshot を + + ftp://releng4.freebsd.org/pub/FreeBSD + から取得し, + これを一般のリリースのものと同様にインストールしてください. + + もし, 既に FreeBSD の以前のリリースが動いている場合で, + これをソースからアップグレードしようとするならば, + ftp.FreeBSD.org より簡単に + これを行う事が出来ます. これには次の 3 つの方法があります. + - - - CTM - 機能を使用する. 転送レートが安定している TCP/IP - 接続でない場合は, この方法が適しています. - - - - cvsup を - この supfile を用いて使用する. - 一度コレクション全体を入手してしまえば, - 前回からの変更部分だけですむので, 2 - 番目に推奨される方法です. - 多くの人が cron から cvsup を実行し, - 自動的にソースコードを最新の状態に保っています. - これを簡単に扱うには次のようにタイプしてください. - -
&prompt.root; pkg_add -f \ -ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
-
- - - ftp を使用する. FreeBSD-STABLE - 用のソースツリーは - 常に次のところで公開されています: - ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/ - - 私たちはまた, tar/compress - でツリー全体を入手できる wu-ftpd - を使用しています. 例えば : - - usr.bin/lex - - に対して: - - ftp> cd usr.bin -ftp> get lex.tar + + + CTM + 機能を使用する. 転送レートが安定している TCP/IP + 接続でない場合は, この方法が適しています. + - とすることにより, ディレクトリ全体を tar - ファイルとして入手することができます. - -
-
+ + cvsup を + この supfile + を用いて使用する. + 一度コレクション全体を入手してしまえば, + 前回からの変更部分だけですむので, 2 + 番目に推奨される方法です. + 多くの人が cron から cvsup を実行し, + 自動的にソースコードを最新の状態に保っています. + これを簡単に扱うには次のようにタイプしてください. + +
+ &prompt.root; pkg_add -f \ +ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz +
+
- - 基本的には, - ソースに迅速でオンデマンドなアクセスが必要で, - 接続のバンド幅が問題でなければ, cvsup - か ftp を使いましょう. そうで - ない場合は CTM - を使いましょう. - + + ftp を使用する. FreeBSD-STABLE + 用のソースツリーは + 常に次のところで公開されています: + ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/ - - stable をコンパイルする前に, - /usr/src にある Makefile をよ - く読んでください. - 少なくとも一回はアップグレードの処理の一部として最初に - make world - を実行するべきでしょう. &a.stable; を読めば, - 次のリリースに移行する - に当たって時々必要となる既存システムからの - 新システムの構築手順に - ついての最新情報が得られるでしょう. - -
+ 私たちはまた, tar/compress + でツリー全体を入手できる wu-ftpd + を使用しています. 例えば : + + usr.bin/lex + + に対して: + + ftp> cd usr.bin +ftp> get lex.tar + + とすることにより, ディレクトリ全体を tar + ファイルとして入手することができます. + + + + + + 基本的には, + ソースに迅速でオンデマンドなアクセスが必要で, + 接続のバンド幅が問題でなければ, cvsup + か ftp を使いましょう. そうで + ない場合は CTM + を使いましょう. + + + + stable をコンパイルする前に, + /usr/src にある Makefile をよ + く読んでください. + 少なくとも一回はアップグレードの処理の一部として最初に + make world + を実行するべきでしょう. &a.stable; を読めば, + 次のリリースに移行する + に当たって時々必要となる既存システムからの + 新システムの構築手順に + ついての最新情報が得られるでしょう. + +
- あなたのソースを同期させる + ソースの同期 訳: &a.jp.iwasaki;. 13 September 1997. インターネット接続 (または電子メール) を使用して, あなたの興味の対象によって FreeBSD プロジェクトのソースのある一部分または全体の最新を 追いかける方法は色々あります. 私たちが提供している基本的なサービスは Anonymous CVS, CVSup と CTM です: Anonymous CVSCVSuppull 同期モデルを採用しています. CVSup の場合, ユーザ (または cron スクリプト) が cvsup 起動し, どこかにある cvsupd サーバとやりとりしてファイルを 最新状態にします. 届けられる更新情報はその時点の最新のものであり, また必要な時にだけ取り寄せられます. 興味のある特定のファイルやディレクトリに 限定して更新することも簡単にできます. クライアント側のソースツリーの状態・ 設定ファイルの指定に従い, サーバによって更新情報が 素早く生成されます. Anonymous CVS は, このプログラムがリモートの CVS リポジトリから直接変更点を pull できるようにした &man.cvs.1; への拡張であるという点で, CVSup よりもずっと単純です. CVSup は効率の点ではるかにまさっていますが, Anonymous CVS の方が簡単に利用できます. 一方, CTM はあなたが持っているソースとマスタアーカイブ上に あるそれとの対話的な比較をおこないませんし, あるいは向こう側から変更点を pull したりもしません. そのかわりに, 前回の実行時からの変更を認識するスクリプトが マスタ CTM マシン上で一日に数回実行され, すべての変更を compress して通し番号を振り, さらに電子メールで転送できるようにエンコードします (印字可能な ASCII キャラクタのみです). 受信した後は, これらの CTM のデルタ は自動 的にデコード, 検査してユーザのソースのコピーに変更を適用する &man.ctm.rmail.1; によって処理可能となります. この処理は CVSupAnonymous CVS よりずっと効率 的であり, pull モデルというよりむしろ push モデルで あるため, 私たちのサーバ資源の負荷は軽くなります. もちろん他のトレードオフもあります. うっかりアーカイブ の一部を消してしまっても, CVSup は壊れた部分を検出して再構築してくれます. CTM はこれをやってくれませんし, Anonymous CVS はおそらく他の何よりも深く混乱してしまうことが多いでしょう. もしソースツリーの一部を消してしまったら, (最新の CVS ベースデルタから) 一からやり直し, CTM か anoncvs を使って悪い部分を消去し, 再同期させることによって すべてを再構築しなければなりません. Anonymous CVS, CTM, CVSup についての 詳しい情報については, 以下の節を参照してください. <command>make world</command> の利用 FreeBSD のどれか特定のバージョン (stable, current など) について, ローカルのソースツリーを同期させたら, そのソースツリーを使ってシステムを 再構築しなければなりません. バックアップを作成する - + システムを再構築する前にバックアップを 作成することの重要性は, いくら強調してもし過ぎると言うことはありません. システム全体の再構築とは (以降に書かれた手順に従っている限り)難しい作業ではありませんが, どんなに注意していたとしても, あなた自身, あるいはソースツリーで作業している他の人達に手違いがあった時には, システムが起動しなくなってしまう状態になることがあるのです. まず, バックアップがきちんと作成されていることを確認して下さい. そして, fix-it フロッピーを用意して下さい. 私は今までに, 一度もバックアップや fix-it フロッピーのお世話になったことはありませんし, これからもそうなるようなことはないと思っていますが, どういう場合であっても用意しておいて損はないでしょう. メーリングリストに参加する - + もともと, -STABLE と -CURRENT のコードブランチは, 開発中のものです. FreeBSD の作業に貢献してくださっている人達も人間ですから, 時にはミスをすることだってあるでしょう. そのような間違いは, 単に警告を示す見慣れない 診断メッセージをシステムが,表示するような, 全く害のないものであることもあれば, システムを起動できなくしたり, ファイルシステムを破壊してしまうような, 恐ろしい結果を招くものかも知れません. 万が一, このような問題が生じた場合, 問題の詳細と, どのようなシステムが影響を受けるかについて書かれた 注意(heads up)の記事が 適切なメーリングリストに投稿され, そして, その問題が解決されると, 問題解決(all clear)のアナウンス記事が同様に 投稿されます. -STABLE や -CURRENT ブランチを試したり, それらに 追随していくときに FreeBSD-stable@FreeBSD.ORGFreeBSD-current@FreeBSD.ORG を読まないというのは, 自ら災難を招くことになるでしょう. 訳注: これらのメーリングリストは英語でやりとりされているため, 日本語での投稿は歓迎されません. 英語でのやりとりができない人は, FreeBSD 友の会 の運営しているメーリングリストをあたってみるのがいいでしょう. <filename>/usr/src/UPDATING</filename> を読む 何を始めるにしろ, まず最初に /usr/src/UPDATING (もしくはあなたがソースコードを どこにコピーしたにせよそれに相当するファイル) を読みましょう. このファイルにはあなたが遭遇するかも知れない問題に対する重要な情報を 含んでいたり, あなたが特定のコマンドを実行しなければならなくなった時 その順序を指示したりするはずです. UPDATING があなたが読んだ事柄と矛盾している時は UPDATING が優先します. UPDATING を読むということは, 前述の 適切なメーリングリストを購読する代わりにはなりません. 二つの要求は相補的なもので排他的なものではないのです. <filename>/etc/make.conf</filename> の確認 - + まず, /etc/defaults/make.conf/etc/make.conf を調べてください. そこには 最初から標準的なものが (多くのものはコメントアウトされていますが) 含まれています. ソースからシステムを再構築するときに make が /etc/make.conf に付け加えられた設定を使用します. /etc/make.conf に追加された設定は make を実行したときに常に使われることを覚えておいてください. そのため, システムに必要な設定を書いておくと良いでしょう. (FreeBSD の開発者でない) 標準的なユーザならおそらく, /etc/defaults/make.confCFLAGSNOPROFILE のコメントをはずすことを考えると思います. もし, 浮動小数点演算ユニット(386DX, 486DX, Pentium と, それより上のクラスのマシン)がある場合には, HAVE_FPU の行のコメントをはずすことができます. </para> <!-- hrs:2000/01/13 386DX doesn't have FPU. --> - + <para>この定義は, FreeBSD 2.2.2 以降で廃止されました. </para> </note> - + <para>他の定義 (COPTFLAGS, NOPORTDOCS など) の定義行についても, コメントを外す必要があるかどうか調べておきましょう. </para> </sect2> - + <sect2> <title><filename>/etc/group</filename> の更新 - + /etc ディレクトリには, システム起動時に実行されるスクリプトだけでなく, あなたのシステムの設定に関連する情報の大部分が 含まれています. そのディレクトリに含まれる スクリプトは, FreeBSD のバージョンによって多少異なります. また, 設定ファイルのなかには, 稼働中のシステムが日々利用している ものもあります. 実際には, /etc/group などがそれに該当します. make world のインストールの段階では, 特定のユーザ名, あるいはグループが存在していることを 要求する場面があります. システムのアップグレードを行なう際には, それらのグループが削除, あるいは変更されて存在していない可能性が 考えられますが, そういった場合, システムのアップグレードを 行なっている間に, 問題が発生する原因になります. この種の例でもっとも記憶に新しいのは, ppp サブシステムがインストールされる時, そのサブシステムが利用する 解決方法は, /usr/src/etc/group を調べ, 自分のシステムのグループ名リストと比較することです. 最新のファイルに含まれていて, あなたのファイルに含まれていない グループ名があれば, あなたのファイルにそのグループ名をコピーして下さい. 同様に, 名前が異なるにも関わらず, /etc/group/usr/src/etc/group で同じ GID を持っているグループ名があれば, /etc/group に含まれる, 該当するすべてのグループ名を変更しておかなければなりません. もし, あなたがもっと神経質な人なら, あなたが名前を変更したり, 削除してしまったグループが所有しているファイルを, 次のようにして調べることもできます. &prompt.root; find / -group GID -print これは GID(グループ名もしくは数字で示されたグループ ID)で 指定されたグループが所有するすべてのファイルを表示します. - + コンパイルは, シングルユーザモードで行なった方が良いでしょう. そうすることで多少速度が向上する, というちょっとした利点が あるだけでなく, システムの再インストールは重要なシステムファイル, 標準コマンド, ライブラリ, インクルードファイルなどを操作します. 稼働中のシステムに(特に他のユーザがログインしている時に)そのような 変更を加えることは, トラブルを引き起こす原因となります. </para> <para>自信家の方は, このステップを省略しても構いません.</para> - + <note> <title>FreeBSD 2.2.5-RELEASE 以降の場合 以下に詳しく述べられているように, 2.2.5-RELEASE 以降, ビルド(システムの構築)とインストールの行程を分離して行なうことが可能になりました. そのため, マルチユーザモードで新しいシステムのビルドを行ない, その後, シングルユーザモードに移行してから インストールを行なうことができます. - + 稼働中のシステムでシングルユーザモードに移行するには, スーパユーザ(root)権限で次のコマンドを実行します. &prompt.root; あるいはシステムを再起動し, ブートプロンプトから フラグを設定することで, シングルユーザモードで システムを起動させることができます. 起動後, シェルプロンプトから 次のように実行して下さい. &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a これはファイルシステムをチェックした後, / を読み書き可能にして再マウント, /etc/fstab に指定されている, それ以外の UFS ファイルシステムをすべてマウントしてから スワップを有効にします. - + <filename>/usr/obj</filename> の削除 - + システムが再構築される時, 構築されたものは(デフォルトで) /usr/obj 以下のディレクトリに格納され, そのディレクトリの下は /usr/src と同じ構造となります. - + このディレクトリをあらかじめ削除しておくことにより, make world の行程にかかる時間を短縮させ, 依存問題に悩まされるようなトラブルを回避することができます. /usr/obj 以下のファイルには, 変更不可(immutable)フラグ(詳細は &man.chflags.1; 参照)がセットされているものがあります. そのため, まず最初にそのフラグを変更しなければなりません. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * <title>全バージョンに共通すること まず, カレントディレクトリを /usr/src に 変更しなければなりません. 次のように実行して下さい. &prompt.root; cd /usr/src (もちろん, ソースコードが他のディレクトリにある場合には, /usr/src ではなく, ソースコードのあるディレクトリに移動して下さい). - + make world を行なうには, &man.make.1; コマンドを使用します. このコマンドは, Makefile というファイルから, FreeBSD を構成するプログラムの再構築方法や, どういう順番でそれらを構築すべきかといったような 指示を読み込みます. コマンドラインの一般的な書式は, 次のとおりです. &prompt.root; make この例では, が &man.make.1; に渡されるオプションになります. どのようなオプションが利用できるかについては, マニュアルページを 参照して下さい. は, Makefile に渡される変数であり, この変数は Makefile の動作をコントロールします. また, /etc/make.conf で設定される変数も 同様です. これは変数を設定するもう一つの方法として用意されています. &prompt.root; make -DNOPROFILE=true target - + は, プロファイル版のライブラリを構築しないことを指定する もう一つの記法で, /etc/make.conf 中の NOPROFILE= true # Avoid compiling profiled libraries の行に対応します. target は, &man.make.1; に どのように動作するのかを指示するためのものです. 各々の Makefile には, 数多くの異なる ターゲット(target) が定義されていて, 指定されたターゲットによって, 動作が決まります. Makefile に書かれているターゲットには, あなたが指定しても意味を持たないものも含まれます. これらは, システムの再構築に必要な段階を, 多くの さらに細かい段階に分割するため, 構築の過程で利用されるものです. 大抵の場合, &man.make.1; にパラメータを指定する必要はないでしょうから, コマンドラインは次のようなものになるでしょう. &prompt.root; make target 出力の保存 実行される &man.make.1; からの出力は, ファイルに保存すると良いでしょう. もし, 何か障害が発生した場合, エラーメッセージのコピーに加え, どの時点でそれが起こったのか, 完全なリストが手元に残ります. 何が悪かったのか, あなた自身がそれから理解することはできないかも 知れません. しかし, FreeBSD メーリングリストに投稿して, 誰か他の人からの助言を得るために利用することができます. ファイルに保存する最も簡単な方法は, &man.script.1; コマンドを 使い, 引数に出力を保存したいファイル名を指定することです. これを make world の直前に行ない, 再構築が終了してから exit と入力すると, 出力を保存することができます. &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make world … compile, compile, compile … &prompt.root; exit Script done, … 出力を保存する場合, /tmp ディレクトリの中に 保存してはいけません. このディレクトリは, 次の再起動で削除されてしまう可能性があります. 出力の保存には, (上の例のように)/var/tmproot のホームディレクトリが適しています. - + FreeBSD-2.2.2 と, それ以前のバージョン /usr/src/Makefile には, システム全体を再構築しインストールを行なう world ターゲットが含まれています. それを, 次のように使って下さい. - + &prompt.root; make world - + FreeBSD-2.2.5 と, それ以降のバージョン FreeBSD-2.2.5 から(実際には, -CURRENT ブランチで最初に作成され, 2.2.2 と 2.2.5 の間の時点で -STABLE に導入されたのですが), world ターゲットは buildworldinstallworld の二つに分割されました. その名前が示すように, buildworld/usr/obj 以下に新しい完全な ディレクトリツリーを構築し, installworld は, そのツリーを 現在のマシンにインストールします. これは, 二つの理由から非常に有用です. まず第一に, 稼働中のシステムに全く影響を与えることなく, 安全にシステムの構築作業を行えることです. 構築作業は何にも依存せず独立して行なわれるため, マルチユーザモードで稼働中のシステムでも, 何一つ 悪影響を与えずに buildworld を 実行することができます. ただし, installworld は シングルユーザモードで行なうことをおすすめします. 第二に, NFS マウントを利用することで, ネットワーク上の複数のマシンをアップグレードすることが 可能な点があげられます. 例えば三台のマシン, マシン A, マシン B, マシン C をアップグレードしたい場合には, まず マシン A で make buildworldmake installworld を実行します. それから, マシン B とマシン C で /usr/src を NFS マウントし, make installworld とすることで 構築済みのシステムを各マシンにインストールすることができるのです. 一方, world ターゲットも残されていますので, FreeBSD-2.2.2 の場合として示されている方法と同じように, このターゲットを利用することもできます. make world は, make buildworld に続けて make installworld を実行します. make buildworldmake installworld のコマンドを分けて実行する場合には, それぞれ同じ引数を &man.make.1; に渡さなければなりません. 次のように実行したとすると, - + &prompt.root; make -DNOPROFILE=true buildworld 構築されたシステムは次のようにしてインストールする必要があります. - + &prompt.root; make -DNOPROFILE=true installworld そうしないと, make buildworld の段階で 構築されていない, プロファイル版ライブラリのインストールを 試みることになります. (訳注: もちろん, それには失敗するのでエラーが発生します. ) - + -CURRENT と, それ以降 もし, -CURRENT を追跡しているなら, make コマンドに オプションを渡すことができます. このオプションにより, make は 同時に複数のプロセスを生成するようになります. これは, 実際に複数の CPU を備えているマシンに対して 非常に有効に働きます. また, コンパイルプロセスの大部分は CPU の処理ではなく入出力の処理に費やされるため, 単一の CPU を持つマシンでも同じように有効です. 単一の CPU を持つ典型的なマシンでは, 次のように実行します. &prompt.root; make -j4 target この時 &man.make.1; は, 最大 4 個までのプロセスを同時に実行します. メーリングリストに投稿された経験的な報告によると, 4 個という指定が最も良いパフォーマンスを示すようです. もし, 複数の CPU を備えたマシンで SMP 設定が行なわれたカーネルを 利用しているなら, 6 から 10 の間の値を設定し, 速度がどれくらい 向上するか確認してみて下さい. 注意して欲しいのですが, (この原稿を書いている時点では)この機能はまだ 実験段階です. そのため, ソースツリーへ変更が加えられたときに これが正常に機能しなくなる可能性があります. もし, このオプションを用いてシステムの構築に失敗した場合には, 障害を報告する前に, もう一度オプションを付けずに試してみて下さい. - + システムの構築にかかる時間 すべてが順調に進んでいたとしても, 一時間半から丸一日程度の時間がかかります. 一般的に言って, 200MHz の P6(訳注: Intel PentiumPro のこと) で 32MB 以上のメモリを搭載し, 標準的な SCSI ディスクドライブを利用していた とすると, make world の完了までに およそ一時間半の時間がかかります. この構成よりも性能が低ければ, それよりもさらに時間がかかるでしょう. - + <command>make world</command> で更新されないファイルの更新 - + システムの再構築は, いくつかのディレクトリ ( 特に, /etc, や /var/usr) において, 新規に導入されたり, 変更された設定ファイルによる ファイルの更新は行なわれません. これらのファイルを更新するもっとも簡単な方法は, &man.mergemaster.8; を使うことです. これは自分でやることも可能なので, そうしても かまいません. &man.mergemaster.8; は簡単に使えるので, こちらを使うことを お勧めします. その場合には 次のセクション に進んでください. まず最初にマニュアルページを読んで, /etc のバックアップを取って不測の事態に備えてください. 手動で更新することを選んだ場合, 単にファイルを /usr/src/etc から /etc に コピーしただけでは正常に動作させることはできません. これらのファイルには, インストールという 手順を踏まなければならないものが含まれています. /usr/src/etc ディレクトリは /etc ディレクトリにそのまま置き換えられるような コピーではないからです. また, /etc にあるべきファイルのうちで /usr/src/etc にないものもあります. - + 手動で行う際の 一番簡単な方法は, ファイルを新しいディレクトリにインストールしてから, 以前のものと異なっている部分を調べて更新作業を行なうことです. - + 既存の <filename>/etc</filename> をバックアップする 理論的に考えて, このディレクトリが自動的に 処理されることはありませんが, 念には念を入れておいて 損はありません. たとえば以下のようにして, 既存の /etc ディレクトリを どこか安全な場所にコピーしておきましょう. &prompt.root; cp -Rp /etc /etc.old は再帰的なコピーを行ない, はファイルの更新時間や所有者などを保存します. - + また, 新しい /etc やその他のファイルを インストールするための, 仮のディレクトリを作っておく必要があります. 私はいつもこの仮のディレクトリを /var/tmp/root に置くことにしています. 同様に, 必要なサブディレクトリもこの下に置きます. &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution 上の例は, 必要なディレクトリ構造をつくり, ファイルをインストールします. /var/tmp/root 以下に作られる, たくさんの空のディレクトリは削除する必要があります. 一番簡単なやり方は, 次のとおりです. - + &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null - + これは空ディレクトリをすべて削除します. (空でないディレクトリに関する警告を避けるために, 標準エラー出力は /dev/null に リダイレクトされます) - + この段階の /var/tmp/root には, 本来 / 以下にあるべきファイルが すべて含まれています. 各ファイルを順に見て, 既存のファイルと異なる部分を 調べて下さい. - + /var/tmp/root 以下に インストールされているファイルの中には, /var/tmp/root/ と /var/tmp/root/root/ の中にある シェルスタートアップ ファイルだけですが, 他のものがあるかも知れません. (これは, あなたがこれをどの時点で読んでいるかに依存するので, - + もっとも簡単な方法は, 二つのファイルを比較するコマンド &man.diff.1; を使うことです. - + &prompt.root; diff /etc/shells /var/tmp/root/etc/shells - + これは, あなたの /etc/shells ファイルと 新しい /etc/shells ファイルの 異なる部分を表示します. これらを, あなたが書き換えたものに変更点をマージするか, それとも既存のファイルを新しいもので上書きするかを 判断する材料にして下さい. - + 新しい root ディレクトリ (<filename>/var/tmp/root</filename>) の名前に タイムスタンプを付けておくと, 異なるバージョン間の比較を楽に行なうことができます. 頻繁にシステムの再構築を行なうということは, /etc の更新もまた, 頻繁に行う必要がある ということです. これはちょっと手間のかかる作業です. この作業は, あなたが /etc にマージした, 新しく変更されたファイルの最新のセットのコピーを保存しておくことで 素早く行なうことができます. 下の手順は, それを実現するための一つの方法です. 普通に make world します. /etc や 他のディレクトリを更新したくなったときは, ターゲット ディレクトリに, そのときの日付に基づく名前をつけてください. たとえば 1998 年 2 月 14 日 だとすれば, 以下のようにします. &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution 上に説明されているように, このディレクトリから変更点をマージします. その作業が終了しても, /var/tmp/root-19980214 を 削除してはいけません. 最新版のソースをダウンロードして再構築したら, ステップ 1 にしたがって下さい. 今度は, /var/tmp/root-19980221 (更新作業が一週間おきだった場合) のような名前の, 新しいディレクトリをつくることになるでしょう. この段階で &man.diff.1; を使用し, 二つのディレクトリを比較する再帰的 diff を作成することで, 一週間の間に行なわれたソースへの変更による相違点を調べます. &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 これによって報告される相違点は, 大抵の場合, /var/tmp/root-19980221/etc/etc との場合に比べて 非常に少ないものになります. 相違点が少ないため, 変更点を既存の /etc ディレクトリにマージすることは, 比較的容易になります. ここまで終了したら, /var/tmp/root-* の 二つのうち, 古い方のディレクトリは削除して構いません. &prompt.root; rm -rf /var/tmp/root-19980214 この工程を, /etc へ変更点をマージする 必要があるたび, 毎回繰り返します. ディレクトリ名の生成を自動化するには, &man.date.1; を利用することができます. &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` - + <filename>/dev</filename> の更新 - + DEVFS もし, DEVFS を利用しているなら, この作業はおそらく必要ないでしょう. - + 安全のため, これはいくつかの段階に分けて行ないます. /var/tmp/root/dev/MAKEDEV/dev にコピーします. &prompt.root; cp /var/tmp/root/dev/MAKEDEV /dev /etc を更新するのに &man.mergemaster.8; を使った場合, MAKEDEV スクリプトは既に更新 されているでしょうが, (&man.diff.1; を使って) チェックすることは無駄ではありませんし, 必要なら自分でコピーしてください. ここで, /dev のファイル一覧を記録しておきます. この一覧は, 各ファイルの許可属性, 所有者, メジャー番号, マイナー番号が 含まれている必要がありますが, タイムスタンプは含まれていてはいけません. これを行なう簡単な方法は, &man.awk.1; を使って, いくつかの情報を取り除くことです. &prompt.root; cd /dev &prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out デバイスファイルをつくり直します. &prompt.root; もう一度, ディレクトリのファイル一覧を記録します. 今回は /var/tmp/dev2.out です. この段階で, この二つのファイル一覧を調べて 作成に失敗したデバイスを探して下さい. 違いは一つもないはずなのですが, 安全のために一応チェックして下さい. &prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.out 次のようなコマンドを使用し, ディスクスライスエントリを 再作成することで, ディスクスライスの矛盾を検出することができます. &prompt.root; sh MAKEDEV sd0s1 適当な組み合わせは, 環境によって異なります. - + <filename>/stand</filename> の更新 - + この段階は, 完全な更新を行なう場合にだけ必要な内容を含んでいます. 悪影響はありませんので, 省略しても構いません. - + 完全な更新を行なうために, /stand にあるファイルも同じように 更新したいと考えるかも知れません. これらのファイルは, /stand/sysinstall という バイナリファイルへのハードリンクです. このバイナリファイルは, 他のファイルシステム(特に /usr)が マウントされていない場合にも動作できるよう, 静的にリンクされていなければなりません. &prompt.root; cd /usr/src/release/sysinstall &prompt.root; make all install 1998 年 4 月 2 日以前のソースの場合 もし, 1998 年 4 月 2 日より古いソースコードを使っているか, Makefile のバージョンが 1.68 以降(FreeBSD-CURRENT および FreeBSD-3.X の場合), 1.48.2.21 以降(FreeBSD-2.2.X の場合)でなければ, 次のように NOSHARED=yes オプションを追加する必要があります. &prompt.root; make NOSHARED=yes all install - + 新しいカーネルのコンパイルとインストール 新しいシステムにおけるアドバンテージを完全に得るために, カーネルの再コンパイルをすべきです. 再コンパイルは, ある種のメモリ構造が変更された時には必須です. その場合, &man.ps.1; や &man.top.1; のようなプログラムは, カーネルとソースコードのバージョンが一致しないと 正常に動作しないでしょう. 新しい kernel をコンパイルするには, FreeBSD ハンドブックの指示にしたがってください. 過去に自分で設定したカーネルを構築している場合には, LINT コンフィグレーションファイルを注意深く調べて, 利用できる新しいオプションがあるかどうか確かめて下さい. この文書の以前の版では, カーネルの再構築の前に再起動することを推奨していました. これは以下の点で誤りです. &man.ps.1;, や &man.ifconfig.8;, &man.sysctl.8; といったコマンドが動作しなくなる恐れがあります. そうなると, マシンがネットワークに接続できなくなってしまいます. - + &man.mount.8; のような基本的なユーティリティが機能しなくなり, //usr 等を マウントできなくなってしまうかも知れません. これは, -STABLE の候補を追いかけている場合には あまり発生することはありませんが, -CURRENT を追いかけていて, 大規模なマージが行なわれている間には良く起こります. ローダブルカーネルモジュール (FreeBSD-3.X 以前は LKM と呼ばれていましたが, FreeBSD-3.X 以降は KLD と呼んでいます)は world の一部として 構築されるため, 古いカーネルがクラッシュする可能性があります. これらの理由から, どんな場合においても, 再起動する前に新しいカーネルを再構築し, インストールすることが 最も良い手順になります. 新しいカーネルは, make world (あるいは make installworld) が完了した後で 構築しなければなりません. もし, そうしない場合には (おそらく, あなたはシステムを更新する前にカーネルが構築されることを 確認したいのでしょう) 問題が起こるかも知れません. それは, カーネルソースに対して &man.config.8; コマンドが古いことが原因です. その場合には, 新しいバージョンの &man.config.8; でカーネルを構築することができます. - + &prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAME これは, いつもうまく行くとは限りませんので, 新しいをカーネルをコンパイルする前に make world (あるいは make installworld)を完了させることが推奨されています. - + これで, 作業はおしまいです. すべてがあるべき正しい場所に存在することをチェックしたら, システムを再起動します. これは, 単に &man.fastboot.8; を実行するだけです. </para> <screen>&prompt.root; <userinput>fastboot</userinput></screen> </sect2> <sect2> <title>作業の完了 - + ここまで来れば, FreeBSD システムのアップグレードは成功です. おめでとうございます. - + さて, この時点で, 今までの間違った操作による小さな問題に 気付くことがあるかも知れません. たとえば, 私はかつて /etc/magic をアップグレードの途中で削除し, そのまま /etc にマージしてしまったことがあります. その結果, file コマンドは動作しなくなってしまったのです. すぐに思いついたのは, これを修復するには &prompt.root; cd /usr/src/usr.bin/file &prompt.root; だけで十分ではないか, ということでした. - + <qandaentry> <question> <para>変更が行なわれたら, その度にシステムの再構築が必要になるのでしょうか?</para> </question> <answer> <para> それは変更の性質によるので, なんとも言えません. 例えば, CVSup を実行したとき, 最後に実行したときから比べて 次にあげるようなファイルが更新されていたとします.</para> - + <screen><filename>src/games/cribbage/instr.c</filename> <filename>src/games/sail/pl_main.c</filename> <filename>src/release/sysinstall/config.c</filename> <filename>src/release/sysinstall/media.c</filename> <filename>src/share/mk/bsd.port.mk</filename></screen> <para> このときには, 改めてシステムを再構築する必要はありません. わたしなら, 適切なサブディレクトリに移って <command>make all install</command> を行うと思います. しかし, もし何らかの大きな変更が行なわれているとき, 例えば <filename>src/lib/libc/stdlib</filename> が変更されている場合には, システムを再構築するか, もしくはそのうち, 少なくとも静的にリンクされているもの(と, わたしが追加した 他のプログラムのうち, 静的にリンクされたもの)を 作り直すことでしょう. </para> - + <para>結局のところ, どの時点で現在のシステムをアップグレードするかは あなたが決めることです. 2 週間ごとにシステムを再構築し, その 2 週間の変更を取り込めば 幸せかもしれませんし, 変更のあった部分だけ再構築し, 依存関係を確かめたいと考えるかも知れません. <!-- hrs:2000/02/15 What's "every fortnight say"? s/say/day/? --> </para> - + <para> もちろん, それらはどのくらいの頻度でアップグレードしたいか, そして -STABLE か -CURRENT のどちらを追いかけているのかによります. </para> </answer> </qandaentry> <qandaentry> <question> <para>signal 11(もしくは他のシグナル番号)のエラーがたくさん出て コンパイルが失敗します. 何が起こっているんでしょうか?</para> </question> <answer> <para> これは通常, ハードウェアに問題があることを示しています. システムの再構築は, ハードウェアに対する負荷耐久試験を行なうための 有効な手段の一つで, メモリに関係する問題がよく報告されます. その大部分は, コンパイラが奇妙なシグナルを受け取り, 不可解な異常終了となることで発見されます. </para> - + <para> 本当にこの問題によるものかどうかは, 再構築をもう一度実行し, 異なる段階で異常終了が発生するか, ということから確認できます. </para> - + <para> この場合には, マシンの部品を交換して, どの部分が悪いのかを 調べてみることくらいしかできることはありません. </para> </answer> </qandaentry> <qandaentry> <question> <para>終了したら <filename>/usr/obj</filename> を削除しても かまいませんか?</para> </question> <answer> <para> それはあなたが次の機会に, システムの再構築をどう行なうつもりなのかによります. </para> - + <para><filename>/usr/obj</filename> には, コンパイルの段階で生成された すべてのオブジェクトファイルが含まれています. 通常 <quote/make world/ の最初の段階では, このディレクトリを削除して新しくつくり直すようになっています. その場合には, 構築終了後の <filename>/usr/obj</filename> を保存しておいても, あまり意味はありません. 削除すれば, 大きなディスクスペースを (現在はだいたい 150MB あります) 解放することができます. </para> - + <para> しかし, もしあなたが何を行なおうとしているのか理解しているなら, この段階を省略して <quote/make world/ を行なうことができます. こうすると, ほとんどのソースは再コンパイルされないため, 構築はかなり高速化されます. これは裏をかえせば, デリケートな依存関係の問題によって, システムの構築が奇妙な失敗に終わる可能性があるということです. FreeBSD メーリングリストではしばしば, 構築の失敗が, この段階の省略によるものだということを理解せずに 不満の声をあげる人がいます. </para> - + <para> もし, このような危険を承知した上でシステムの再構築を行なう場合には, 次のように変数 <makevar>NOCLEAN</makevar> を定義して構築します. </para> <screen>&prompt.root; <userinput>make -DNOCLEAN world</userinput></screen> </answer> </qandaentry> <qandaentry> <question> <para>構築を中断した場合, その構築を途中から再開することはできますか?</para> </question> <answer> <para> それは, あなたが問題に気付く前に, どれだけの作業を終えているかによって変わります. </para> <para><emphasis>一般的に</emphasis> (そしてこれは確実でしっかりした 規則ではありませんが), <quote>make world</quote> の過程では, 基本的なツール ( &man.gcc.1;, や &man.make.1; のようなもの) や, システムライブラリの新しいコピーが作成されます. その後まず, これらのツールやライブラリはインストールされてから 自分自身の再構築に使われ, もう一度, インストールされます. 全体のシステム (ここでは &man.ls.1; や &man.grep.1; といった 標準的なユーザプログラムを含みます) は, その新しいシステムファイルを用いて作り直されることになります. </para> <para> もし, 再構築が最終段階に入っていること が(記録しておいた出力を見たりすることで)わかっていたら, (全く悪影響を与えることなく)次のようにすることができます, </para> <screen><emphasis>… fix the problem …</emphasis> &prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make -DNOCLEAN all</userinput></screen> <para> これは, 前回の <quote>make world</quote> の作業をやり直しません. </para> <para>次のメッセージ <screen>-------------------------------------------------------------- Building everything.. --------------------------------------------------------------</screen> が <quote>make world</quote> の出力にある場合には, 上のようにしてもほとんど悪影響が現れることはありません. </para> <para> もしこのメッセージがないとか, よく分からないという場合には, 安全を確保し, 後悔するようなことがないよう, システムの再構築を最初からやり直しましょう. </para> </answer> </qandaentry> <qandaentry> <question> <para>あるマシンを <emphasis/マスタ/ として, 他の多くのマシンを (NFSで) アップグレードできますか?</para> </question> <answer> <para>すべてのコンパイル作業をあるマシンで行ない, 構築されたものを他のマシンにネットワークを経由で <command>make install</command> することができるかどうかは, よく FreeBSD メーリングリストで尋ねられます. </para> - + <para>これはわたしが行った作業ではありませんので, 下に書かれている提案は, 他の人々から頂いたか, Makefile から推論したものです.</para> <para>取るべき適切な方法については, 利用している FreeBSD のバージョンに依存します.</para> <para> アップグレードしたマシンでは, この作業を行った後に <filename>/etc</filename> や <filename>/dev</filename> の 更新を行わなくてはなりません.</para> <para>2.1.7 とそれより古いものについて, Antonio Bemfica は 次に示すような方法を教えてくれました. </para> <screen>Date: Thu, 20 Feb 1997 14:05:01 -0400 (AST) From: Antonio Bemfica <bemfica@militzer.me.tuns.ca> To: freebsd-questions@FreeBSD.org Message-ID: <Pine.BSI.3.94.970220135725.245C-100000@militzer.me.tuns.ca> Josef Karthauser は質問しました: > どなたかネットワークを通してマシンをアップグレードするよい方法は知りませんか まず, メインとなるマシンで make world などをします. そして次のように, リモートのマシンから / や /usr をマウントします: main_machine% mount remote_machine:/ /mnt main_machine% mount remote_machine:/usr /mnt/usr そして, /mnt をインストール先に指定して 'make install' とします: main_machine% make install DESTDIR=/mnt これをネットワーク上の他のマシンについても繰り返してください. わたしの場合には, これでうまくいきました. - + Antonio</screen> <para>この仕組みは (わたしの知る限り) NFS サーバ上の <filename>/usr/src</filename> が書き込み可能である場合にのみ きちんと動作します. FreeBSD-2.1.7 とそれ以前では, この作業に <maketarget>install</maketarget> ターゲットを使います. </para> <para>FreeBSD-2.1.7 と FreeBSD-2.2.0 の間で <quote>reinstall</quote> ターゲットが導入されました. 上にあげた FreeBSD-2.1.7 向けの方法に加え, <quote>install</quote> の代わりに <quote>reinstall</quote> を 使うことができます. </para> <para>この方法では, NFS サーバ上の <filename>/usr/src</filename> ディレクトリへの書き込み権限は必要 <emphasis>ありません</emphasis>.</para> <para>Makefile の 1.68 から 1.107 の間のバージョンには, このターゲットに関するバグがありました. それは NFS サーバへの書き込み権限が <emphasis>必要になる</emphasis> というもので, このバグは FreeBSD-2.2.0 がリリースされる前に修正されました. この時期の -STABLE が動いている古いサーバでは, 問題になるかも知れません. </para> <para>FreeBSD-2.2.5 以降のバージョンでは, <quote>buildworld</quote> と <quote>installworld</quote> ターゲットが利用できます. これらを使ってソースツリーを一つのマシンで構築し, <filename>/usr/src</filename> と <filename>/usr/obj</filename> をリモートマシンで NFS マウントして, そこからインストールすることができます.</para> </answer> </qandaentry> <qandaentry> <question> <para>どのようにすれば make world を高速化できますか?</para> <itemizedlist> <listitem> <para>シングルユーザモードで動かしてください.</para> </listitem> <listitem> <para><filename>/usr/src</filename> と <filename>/usr/obj</filename> ディレクトリを, 異なるディスク上の別のファイルシステムに置いてください. また可能ならば, 異なるディスクコントローラに接続された ディスクを使って下さい. </para> </listitem> <listitem> <para>さらに高速化するには, これらのファイルシステムを <quote>ccd</quote> (連結ディスクドライバ) デバイスを 使って, 別々なディスク上に置いてください.</para> </listitem> <listitem> <para>プロファイル版の作成を無効化して下さい. (<filename>/etc/make.conf</filename> で <quote>NOPROFILE=true</quote> をセットします) 普通, それが必要になることはありません. </para> </listitem> <listitem> <para>また, <filename>/etc/make.conf</filename> の中の <quote>CFLAGS</quote> を, <quote>-O -pipe</quote> のように指定しましょう. <quote>-O2</quote> の最適化はさらに多くの時間を必要とし, しかも <quote>-O</quote> と <quote>-O2</quote> の 最適化には, ほとんど差はありません. <quote>-pipe</quote> を指定することで, コンパイラはテンポラリファイルの代わりにパイプを利用します. その結果, (メモリの利用は増えますが)ディスクアクセスが減ります. </para> </listitem> <listitem> <para>(もしあなたが十分に最近のバージョンの FreeBSD を使っているなら) 複数のプロセスを並列に実行させるため, make に <option>-j<n></option> オプションを指定してください. これはプロセッサが単一か複数かによらず, どちらも同様に恩恵を得ることができます.</para> </listitem> <listitem><para><filename>/usr/src</filename> のある ファイルシステムを, <quote>noatime</quote> オプションを付けてマウント(もしくは再マウント)してください. これは, そのファイルシステムにおいて, 最後にアクセスされた時刻の書き込みを抑制します. おそらく, この情報が必要になることはないでしょう.</para> - + <note> <para><quote>noatime</quote> が利用可能なのは, FreeBSD-2.2.0 以降です.</para> </note> <screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen> <warning> <para>上の例は, <filename>/usr/src</filename> 自身が独立したファイルシステムで あることを想定しています. もしそうでないときには (例えば <filename>/usr</filename> の 一部である場合には), <filename>/usr/src</filename> ではなく 適切なマウントポイントを指定する必要があります. </para> </warning> </listitem> <listitem> <para><filename>/usr/obj</filename> のあるファイルシステムを, <quote>async</quote> オプションをつけてマウント (もしくは 再マウント) してください. これによって, ディスクへの書き込みが非同期になります. つまり, 書き込み命令はすぐに完了するのに対し, 実際にデータがディスクに書き込まれるのは, その数秒後になります. これによって, 書き込み処理の一括化が可能になるため, 劇的なパフォーマンスの向上が期待できます. <!-- hrs:2000/02/15 (for ja-translators) "be clusterd togather" is translated into "clusterization" --> </para> <warning> <para> このオプションを指定すると, ファイルシステムは 壊れやすくなってしまうことに注意してください. このオプションを付けていて, 突然電源が落ちた場合には, 再起動後にファイルシステムが復旧不能になる可能性が 非常に高くなります. </para> <para>もし, <filename>/usr/obj</filename> 自身が独立した ファイルシステムであるならば, これは問題になりません. しかし, 同じファイルシステムに, 他の貴重なデータを置いているときには, このオプションを有効にする前に, バックアップをきちんと取っておきましょう.</para> </warning> <screen>&prompt.root; <userinput>mount -u -o async /usr/obj</userinput></screen> <warning> <para>もし <filename>/usr/obj</filename> 自身が ファイルシステムでない場合には, 適切なマウントポイントを指すように, 上の例の名前を置き換えて下さい. </para> </warning> </listitem> </itemizedlist> </question> </qandaentry> </qandaset> </sect2> </sect1> </chapter> <!-- Local Variables: mode: sgml sgml-declaration: "../chapter.decl" sgml-indent-data: t sgml-omittag: nil sgml-always-quote-attributes: t sgml-parent-document: ("../book.sgml" "part" "chapter") End: --> diff --git a/ja_JP.eucJP/books/handbook/disks/chapter.sgml b/ja_JP.eucJP/books/handbook/disks/chapter.sgml index 25d6bcb495..432bfcbee0 100644 --- a/ja_JP.eucJP/books/handbook/disks/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/disks/chapter.sgml @@ -1,940 +1,964 @@ <!-- The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project - Original revision: 1.23 - $FreeBSD$ + Original revision: 1.25 + $FreeBSD: doc/ja_JP.eucJP/books/handbook/disks/chapter.sgml,v 1.7 2000/08/08 07:27:21 hanai Exp $ --> <chapter id="disks"> <title>ディスク - 概要 + この章では - この章では, FreeBSD 上でどのようにして物理的なディスクやメモリーディスク, + この章では, FreeBSD 上でどのようにして物理的なディスクやメモリディスク, もしくはネットワークに接続されたディスクを使うのか, ということを解説します. BIOS ドライブの番号付け FreeBSD をインストールして設定する前に, 特に複数のハードディスクを持っているならば気をつけておかなければならない重要なことがあります. DOS が動いている PC や WINxxx のような BIOS 依存のオペレーティングシステムでは, BIOS がディスクドライブの順序を構成し, OS はその変化に追従します. これにより, - ユーザーはいわゆる プライマリーマスター 以外のディスクからブートすることができます. + ユーザはいわゆる プライマリーマスター 以外のディスクから起動することができます. この仕組みを用いればシステムのバックアップを取る最も簡単で安価な方法を構築できます. もう一つ同じディスクを買い, Ghost や XCOPY を用いて一つ目のディスクから二つめのディスクへのコピーを定期的に取ればいいのです. そして, 一つ目のディスクに障害が起きた時には, BIOS に対してドライブを論理的に交換するように指示することで簡単に復旧できるのです. この方法はドライブのケーブルを交換するのと同じようなことなのですが, ケースを開ける必要がありません. - SCSI コントローラーを備えたもっと高価なシステムでは, しばしば BIOS に拡張が施されており同じように + SCSI コントローラを備えたもっと高価なシステムでは, しばしば BIOS に拡張が施されており同じように 7 台までのドライブの順番を組み換えることができるようになっています. - 以上のような機能を便利に使っているユーザーは, FreeBSD では同じような結果にならないことに驚くかもしれません. + 以上のような機能を便利に使っているユーザは, FreeBSD では同じような結果にならないことに驚くかもしれません. FreeBSD は BIOS を利用しないため, 論理 BIOS ドライブマッピングについては知らないのです. このため, 特にいくつかのドライブが同じジオメトリを持っている時に, そしてまたあるものをもう一つのクローンとして使っている時に非常にややこしい状況になり得ます. FreeBSD を使う時は, インストール前にドライブの番号付けが自然なものになるように, BIOS の設定を忘れずに戻しておきましょう. もしドライブの番号付けを変更する必要がある場合には, そうすればいいのですが, ハードウェア的にケースを開けジャンパーやケーブルを移動しましょう. Bill と Fred のイケイケ冒険記 Bill は Fred のためにもう一つ FreeBSD 箱を作ろうと古い Wintel 箱を潰しました. Bill は ユニット番号 0 の SCSI ドライブを一つ追加し, そこに FreeBSD を入れました. Fred はこのシステムを使い始めましたが, 数日後その古い SCSI ドライブがたくさんのソフトエラーを吐いているのに気付き, Bill に報告しました. さらに数日後, Bill はその問題に対処しようと決意し, 倉庫のディスクドライブアーカイブから同じ SCSI ドライブを取ってきました. まずドライブのサーフィススキャンを行なってみましたが特に問題なかったため, Bill はこのドライブをユニット番号 4 として付け, ドライブ 0 からドライブ 4 へのイメージコピーを行ないました. 新しいドライブがインストールされ, しかもうまく動いているため, Bill はそれを使い始めてもいいだろうと思いました. そこで彼は SCSI BIOS の機能を使ってシステムがユニット 4 から起動するようにディスクドライブの順序を入れ換えました. - FreeBSD がブートし, 調子良く動き始めました. + FreeBSD が起動し, 調子良く動き始めました. Fred は数日作業を続けましたが, すぐに Bill と Fred は新しい冒険に挑戦することにしました. 新しいバージョンの FreeBSD にアップグレードするのです. Bill は SCSI ユニット 0 のディスクは当てにならないので取りはずし, アーカイブから持ってきた別の新しいドライブと交換しました. そして, 新しいバージョンの FreeBSD を, Fred の持っていた魔法のインターネット FTP フロッピーを用いて新しい SCSI ユニット 0 にインストールしたのです. インストールはうまくいきました. Fred は新しいバージョンの FreeBSD を数日使ってみて, 技術部門でも使えるくらい十分に良いものだと確認しました. 古いバージョンから全ての作業をコピーする時が来たのです. そこで Fred は SCSI ユニット 4 (古い FreeBSD で行なっていた作業の最新のものを置いてあるドライブです) をマウントしました. ところが, Fred は SCSI ユニット 4 には自分の貴重な作業がなにも残っていないことを発見して慌てふためきました. データはどこへ行ったのでしょう? Bill がオリジナルの SCSI ユニット 0 のイメージをユニット 4 にコピーした時, ユニット 4 は「新クローン」になりました. - Bill がユニット 4 からブートするように SCSI BIOS で順序の入れ換えを行なった時, + Bill がユニット 4 から起動するように SCSI BIOS で順序の入れ換えを行なった時, 実はおバカなことにそう変更したと思い込んでいただけなのです. FreeBSD は依然として SCSI ユニット 0 上で動いていたのです. BIOS にこのような変更を行なっても Boot と Loader のコードの一部もしくは全部は選択された BIOS ドライブから取得されるものの, 処理が FreeBSD のカーネルドライバーに引き渡された時から BIOS ドライブの順序は無視され, FreeBSD は通常のドライブ番号順に移行するのです. さきほどの例では, システムはオリジナルの SCSI ユニット 0 で動き続けており, Fred のデータは全て SCSI ユニット 4 ではなくそのディスクに残っていたのです. システムが SCSI ユニット 4 で動いているように見えたのは単に人の期待からくる妄想だったのです. こういった現象の発見のどの時点においてもデータは全く失なわれても損なわれてもいないことを喜びをもって伝えておきます. 古い SCSI ユニット 0 はガラクタの山から見つけ出され, Fred の作業は全て彼のもとへ返ってきたのです (そして Bill は自分が 0 までは数えられることを学んだのでした). この例では SCSI ドライブが用いられましたが, その概念は IDE ドライブにも同じように当てはまります. ディスクの名前付け 物理ディスクには主に二つの種類, IDESCSI がありますが, - 他にも RAID コントローラーによって提供されるものやフラッシュメモリーなどがあります. + 他にも RAID コントローラによって提供されるものやフラッシュメモリなどがあります. これらのディスクの振舞いはかなり異なるため, それぞれにドライバーとデバイスがあります. 物理ディスクへの名前付け ドライブの種類 ドライブのデバイス名 IDE ハードドライブ 4.0-RELEASE では ad, 4.0-RELEASE より前のものでは wd. IDE CD-ROM ドライブ 3.1-RELEASE 以降は acd, 4.0-RELEASE より前のものでは wcd. SCSI ハードドライブ 3.0-RELEASE 以降は da, 3.0-RELEASE より前は sd. SCSI CD-ROM ドライブ cd その他の非標準的 CD-ROM ドライブ ミツミ CD-ROM は mcd, Sony CD-ROM は scd, 松下/パナソニック CD-ROM は matcd フロッピードライブ fd SCSI テープドライブ 3.0-RELEASE 以降は sa, 3.0-RELEASE よりも前では st. IDE テープドライブ 4.0-RELEASE 以降では ast, それよりも前のものでは wst. フラッシュドライブ 3.3-RELEASE 以降の DiskOnChip フラッシュデバイスは fla. RAID ドライブ myxd は Mylex 用, amrd は AMI MegaRAID 用, idad は Compaq Smart RAID 用. これらは全て 4.0-RELEASE 以降. 3.2-RELEASE から 4.0-RELEASE までは id.
スライスとパーティション 物理ディスクは危険な専用(原文はdangerously dedicated)ディスクでない限り, 通常はスライスを含んでいます. スライス番号はデバイス名の後に続き, s という接頭文字が付きます. da0s1 といった感じです. スライスや危険な専用 (原文はdangerously dedicated) ディスクや他のディスクはパーティションを含んでおり, パーティションは a から h までの文字で表現されます. b はスワップパーティション用に予約されており, c はスライスもしくはドライブの全体を表わす未使用パーティションです. このあたりのことは で解説します.
ファイルシステムのマウントとアンマウント ファイルシステムは / を根とする木構造として最もうまく視覚化できます. /dev/usr, ルートディレクトリにあるその他のディレクトリは枝であり, /usr/local のようにそれぞれが自身の枝を持つことができます. 様々な理由がありますが, これらのディレクトリのいくつかは異なるファイルシステム上に構築するのが良いでしょう. /var はログやスプール, そして様々な種類の一時ファイルなどを含むため溢れてしまう可能性があります. ルートファイルシステムが溢れるのは良くないため, たいての場合は /var/ と切り離すのです. あるディレクトリツリーを他のファイルシステムに含まれるようにするもう一つのよくある理由は, それらが別の物理ディスクや, ネットワークファイルシステムや CD-ROM といった仮想ディスクに置かれる場合です. fstab ファイル - ブートプロセスにおいて, /etc/fstab + 起動プロセスにおいて, /etc/fstab にリストされているファイルシステムは自動的にマウントされます (ただし オプションがない場合). /etc/fstab ファイルは以下のようなフォーマットの行からなります. device /mount-point fstype options dumpfreq passno device は上の ディスクの名前付けのセクションで解説したデバイス名 (存在している必要があります) です. mount-point はそのファイルシステムをマウントするディレクトリです (存在していなければなりません). fstype は &man.mount.8; に渡されるファイルシステムタイプです. デフォルトの FreeBSD ファイルシステムは ufs です. options では読み書き可能なファイルシステム用の , か読み込み専用ファイルシステム用の のどちらかと, 他に必要なものをそれに続けます. よくあるのは で, - これはブート中にはマウントしたくないファイルシステムに用います. + これは起動中にはマウントしたくないファイルシステムに用います. 他のオプションはマニュアル &man.mount.8; を参照してください. dumpfreq はファイスシステムを dump すべき日数で, - passno はブート中でファイルシステムがマウントされる時のパスナンバーです. + passno は起動中でファイルシステムがマウントされる時のパスナンバーです. マウントコマンド &man.mount.8; コマンドはファイルシステムをマウントする時に使われるコマンドです. 最も基本的な形は以下の通りです. &prompt.root; mount device mountpoint マニュアル &man.mount.8; にあるように非常にたくさんのオプションがありますが, 最も頻繁に使われるものは次のようなものです. マウントオプション /etc/fstab にあるファイルシステムを全てマウントします. もし があればそれが効きます. 実際のファイルシステムのマウント以外の全てを行ないます. 強制的にファイルシステムをマウントします. ファイルシステムを読み込み専用でマウントします. fstype 与えられたファイルシステムを与えられたファイルシステムタイプでマウントします. もしくは オプションも与えられている場合は与えられたタイプのファイルシステムのみマウントします. ufs がデフォルトのファイルシステムタイプです. (既にマウントされている) ファイルシステムのマウントオプションを更新します. 冗長になります. ファイルシステムを読み書き可能でマウントします. は次のようなオプションを複数カンマで区切って指定します. nodev ファイルシステム上のデバイススペシャルファイルを解釈しません. 便利なセキュリティオプションです. noexec このファイルシステム上のバイナリの実行を許可しません. セキュリティに便利なオプションです. nosuid setuid や setgid といったオプションを解釈しません. セキュリティに便利なオプションです. umount コマンド umount コマンドは, パラメータとしてマウントポイントの一つ, デバイス名, もしくは といったオプションを取ります. 全ての形式において, は強制アンマウント, は冗長性を高めるために用いることができます. はマウントされている全てのファイルシステムをアンマウントするために用いられますが, の後にファイルシステムタイプがリストされていればそれだけがアンマウントされます. はルートファイルシステムはアンマウントしません. ディスクの追加 オリジナルは &a.obrien; によって 1998 年 4 月 26 日に寄贈されました. 現在一つしかドライブがない計算機に新しく SCSI ディスクを追加したいとしましょう. - まずコンピューターの電源を切り, コンピューターやコントローラー, + まずコンピュータの電源を切り, コンピュータやコントローラ, ドライブの製造元の指示に従ってドライブを取り付けます. このあたりの手順は非常にバラエティに富んでいるため, 細かいことはこのドキュメントの範囲外です. - root ユーザーでログインします. ドライブの取り付け後は + root ユーザでログインします. ドライブの取り付け後は /var/run/dmesg.boot を調べて新しいディスクが見つかっていることを確認しておきます. この例では, 新しく付けたドライブは da1 で, 我々はそれを /1 にマウントしたいとしましょう (もし IDE ドライブを付けようとしているのなら, 4.0 以前のシステムでは wd1, ほとんどの 4.x システムでは ad1 になるでしょう). - FreeBSD は IBM-PC 互換のコンピューターで動くため, + FreeBSD は IBM-PC 互換のコンピュータで動くため, PC BIOS のパーティションを考慮に入れる必要があります. これは従来の BSD パーティションとは異なります. PC ディスクは 4 つまでの - BIOS パーティションエントリーを持つことができます. + BIOS パーティションエントリを持つことができます. もしそのディスクを本当に FreeBSD 専用にしたい場合には専用モードで用いることもできます. そうでない場合には, FreeBSD は PC BIOS パーティションのどれか一つの中に入れることになります. FreeBSD では, 従来の BSD パーティションと混乱しないように PC BIOS パーティションのことをスライスと呼びます. - また, 別の OS がインストールされていたコンピューターで使われていたが + また, 別の OS がインストールされていたコンピュータで使われていたが FreeBSD 専用にするディスク上でもスライスを用いることができます. これは, 他の OS の fdisk ユーティリティを混乱させないためです. スライスの場合, ドライブは /dev/da1s1e として加えられるでしょう. これは, SCSI ディスクでユニット番号は 1 (二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で BSD パーティション e, と読みます. 専用ディスクの場合だと単純に /dev/da1e として加えられるでしょう. sysinstall を利用 /stand/sysinstall の使い易いメニューを利用して新しいディスクのパーティション分けやラベル付けを行なうことができます. - root ユーザーでログインするか su - コマンドを用いるかしてルート権限を取得します. + root ユーザでログインするか su + コマンドを用いるかして root 権限を取得します. /stand/sysinstall を実行し, Configure メニューに入ります. FreeBSD Configuration Menu の中でスクロールダウンして Partition の項目を選びます. するとシステムに付けられているハードディスクのリストが表示されるはずです. もし da1 がリストされていない場合には物理的な取り付け及び, /var/run/dmesg.boot ファイルへの dmesg 出力をチェックし直してください. da1 を選んで FDISK Partition Editor に入ります. ディスク全体を FreeBSD で使うために A を選びます. remain cooperative with any future possible operating systems と聞かれたら YES と答えます. W で変更をディスクに書き込みます. ここで - q と入力して FDISK エディターを抜けます. + q と入力して FDISK エディタを抜けます. マスターブートレコードについて聞かれますが, ここでは既に動いているシステムにディスクを追加しようとしているのですから None を選びます. 次に Disk Label Editor に入ります. ここでは従来の BSD パーティションを作成します. 一つのディスクは a から h までのラベルがついた最大 8 つのパーティションを持つことができます. いくつかのパーティションラベルは特殊な用途に用いられます. a パーティションはルートパーティション (/) です. - 従って, システムディスク (つまりブートディスク) のみが a + 従って, システムディスク (つまり起動ディスク) のみが a を持ちます. b パーティションはスワップパーティションに用いられ, 複数のディスクにスワップパーティションを作ることができます. c は専用モードにおけるディスク全体, もしくはスライスモードにおけるスライス全体を指します. 他のパーティションは汎用的に用いられます. sysinstall の Label Editor は非ルートで非スワップなパーティションには e を好んで付けます. - ラベルエディターでは C を用いて一つのファイルシステムを作成します. + ラベルエディタでは C を用いて一つのファイルシステムを作成します. FS (ファイルシステム) かスワップかを聞かれたら FS を選びマウントポイント (例えば /mnt) を入力します. インストール後のモードでディスクを追加する場合, sysinstall は - /etc/fstab にエントリーを追加しないため, + /etc/fstab にエントリを追加しないため, ここで指定するマウントポイントはそれほど重要ではありません. さて, ディスクに新しいラベルを書き込み, そこにファイルシステムを作る準備が整いました. 早速 W を叩いて実行しましょう. sysinstall からの, 新しいパーティションをマウントできない, というエラーは無視してください. Label Editor から抜け, sysinstall を終了します. 最後に /etc/fstab を編集し, 新しいディスクを追加します. コマンドラインユーティリティの利用 - * Using Slices + スライスの利用 + + このセットアップ方法では, + すでにコンピュータに他のオペレーティングシステムがインストールされていても + 正しく協調動作することが可能で, 他のオペレーティングシステムの + fdisk ユーティリティを混乱させることもありません. + 新しいディスクにインストールする場合は, + この方法を用いることが推奨されています. + 後述する専用モードは, + そうしなければならない理由がある時にのみ, + 利用するようにしてください. - + &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 +&prompt.root; fdisk -BI da1 # 新しいディスクの初期化 +&prompt.root; disklabel -B -w -r da1s1 auto # ディスクにラベルを付ける +&prompt.root; disklabel -e da1s1 # 作成したディスクラベルを編集し, パーティションを追加する +&prompt.root; mkdir -p /1 +&prompt.root; newfs /dev/da1s1e # 作成したすべてのパーティションに対してこれを繰り返す +&prompt.root; mount -t ufs /dev/da1s1e /1 # パーティションをマウントする +&prompt.root; vi /etc/fstab # マウントに成功したら, /etc/fstab に適切なエントリを追加する + + IDE ディスクを使う場合は + da の部分を + ad とします. + 4.x より前のシステムでは, + (訳注: ad ではなく) + wd としてください. 専用モード 新しいドライブを他の OS と共有しない場合には専用モードを用いることもできます. このモードはマイクロソフトの OS を混乱させることを憶えておいてください (しかし, それらによって壊されることはありません). 一方, IBM の OS/2 はどんなパーティションでも見つけたら理解できなくても専有します. &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 &prompt.root; disklabel -Brw da1 auto &prompt.root; disklabel -e da1 # create the `e' partition &prompt.root; newfs -d0 /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 もう一つの方法は次の通り. &prompt.root; dd if=/dev/zero of=/dev/rda1 count=2 &prompt.root; disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin &prompt.root; newfs /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 - 仮想ディスク: ネットワーク, メモリー, そしてファイルベースのファイルシステム + 仮想ディスク: ネットワーク, メモリ, そしてファイルベースのファイルシステム FreeBSD にはフロッピーや CD, ハードディスクなどの手元の計算機に取り付けたディスクの他に, 別の形態のディスク, 仮想ディスク, もあります. これには, Network Filesystem のようなネットワークファイルシステムや - Coda, md のようなメモリーベースのファイルシステム, + Coda, md のようなメモリベースのファイルシステム, vnconfig によって作られるようなファイル中に構築されるファイルシステムがあります. vnconfig: ファイル中に構築されるファイルシステム &man.vnconfig.8; を使えば擬似ディスクデバイスを設定し, 有効にすることができます. vnode とはファイルの内部的な表現方法であり, ファイルに関する操作の中心となるものです. つまり, &man.vnconfig.8; はファイルシステムを生成したり操作したりするためにファイルを用いるのです. 一つ例を挙げると, ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます. 既にあるファイルシステムイメージのマウント vnconfig を用いた既存のファイルシステムイメージのマウント &prompt.root; vnconfig vn0 diskimage &prompt.root; mount /dev/vn0c /mnt vnconfig を用いたファイルシステムイメージの新規作成 vnconfig を用いたファイルベースディスクの新規作成 &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; vnconfig -s labels -c vn0 newimage &prompt.root; disklabel -r -w vn0 auto &prompt.root; newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 &prompt.root; mount /dev/vn0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt - md: メモリーファイルシステム + md: メモリファイルシステム - md はメモリーファイルシステムを実現するためにシンプルで効率的な手段です. + md はメモリファイルシステムを実現するためにシンプルで効率的な手段です. 単に, 例えば &man.vnconfig.8; を用いて作成したファイルシステムを取り, 以下のようにします. - md メモリーディスク + md メモリディスク &prompt.root; dd if=newimage of=/dev/md0 5120+0 records in 5120+0 records out &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt ディスククォータ クォータは OS の持っているオプショナルな機能であり, - ファイルシステム毎にユーザーやグループのメンバーが使用するディスク容量やファイルの数を制限することができます. - この機能は, あるユーザーやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます. - この機能を用いることによって使用可能なディスク容量の全てを一人のユーザーが使ってしまうことを防ぐことができます. + ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます. + この機能は, あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます. + この機能を用いることによって使用可能なディスク容量の全てを一人のユーザが使ってしまうことを防ぐことができます. ディスククォータを使うためのシステム設定 ディスククォータの設定を始める前に, まずはカーネルにクォータが組み込まれていることを確認しましょう. - カーネルのコンフィギュレーションファイルに次の行を入れます. + カーネルのコンフィグレーションファイルに次の行を入れます. options QUOTA 標準の GENERIC カーネルでは, この機能は有効になっていませんので, ディスククォータを利用するためには上記を設定後カーネルを構築しなおし, 作成されたカスタムカーネルをインストールしなければいけません. - カーネルのコンフィギュレーションに関しては - FreeBSD カーネルのコンフィギュレーションのセクションをご覧ください. + カーネルのコンフィグレーションに関しては + FreeBSD カーネルのコンフィグレーションのセクションをご覧ください. 次に /etc/rc.conf でディスククォータを有効にする必要があります. 次の行を加えましょう. enable_quotas=YES 起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります. - 通常, ブート時には quotacheck + 通常, 起動時には quotacheck によりそれぞれのファイルシステムのクォータの整合性がチェックされます. quotacheck の役割は, クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです. - これはかなり時間を食う処理であり, ブートにかかる時間に大きな影響を及ぼします. + これはかなり時間を食う処理であり, 起動にかかる時間に大きな影響を及ぼします. このステップをとばしたい人のために次の変数が用意されています. check_quotas=NO もし 3.2-RELEASE よりも前の FreeBSD を使っているならば設定はもっと単純で, 一つの変数のみです. 次の行を /etc/rc.conf で設定してください. check_quotas=YES 最後に, ファイルシステム毎にディスククォータを有効にするために /etc/fstab を編集する必要があります. - ここでユーザーもしくはグループ, あるいはその両方にクォータを設定することができるのです. + ここでユーザもしくはグループ, あるいはその両方にクォータを設定することができるのです. - あるファイルシステム上にユーザー毎のクォータを有効にする場合には, - /etc/fstab 中でクォータを有効にしたいファイルシステムエントリーのオプション部に + あるファイルシステム上にユーザ毎のクォータを有効にする場合には, + /etc/fstab 中でクォータを有効にしたいファイルシステムエントリのオプション部に userquota を加えます. 例えば次のようになります. /dev/da1s2g /home ufs rw,userquota 1 2 同様に, グループクォータを有効にするには userquota キーワードの代わりに groupquota を用います. - ユーザーとグループの両方のクォータを有効にするには次のようにします. + ユーザとグループの両方のクォータを有効にするには次のようにします. /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 デフォルトでは, クォータファイルはそのファイルシステムのルートディレクトリに - ユーザー用, グループ用それぞれ quota.user, quota.group + ユーザ用, グループ用それぞれ quota.user, quota.group という名前で置かれます. さらに詳しい情報は man fstab をご覧ください. マニュアルには別の場所を指定することができると書いてはありますが, あまり勧められません. なぜなら, 様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです. - この時点で, 一度システムをリブートして新しいカーネルで立ち上げましょう. + この時点で, 一度システムを再起動して新しいカーネルで立ち上げましょう. /etc/rc が自動的に適当なコマンドを実行し, /etc/fstab で有効にした全てのクォータ用に初期ファイルを作ってくれます. 従って, 空のクォータファイルを手で作る必要は一切ありません. 通常の運用では quotacheckquotaon, quotaoff といったコマンドを手で動かす必要はないのですが, 慣れるためにもこれらのマニュアルは読んでおきましょう. クォータリミットの設定 一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう. 簡単な方法は次のコマンドを実行することです. &prompt.root; quota -v ディスクの使用状況と, クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう. さあ、edquota でクォータリミットを設定する準備ができました. - ユーザーやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります. + ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります. 割り当てディスク容量を制限 (ブロッククォータ) することもファイル数を制限 (inode クォータ) - することも, 両者を組み合わせることもできるのです. これらの制限はそれぞれさらに二つのカテゴリー, + することも, 両者を組み合わせることもできるのです. これらの制限はそれぞれさらに二つのカテゴリ, ハードリミットとソフトリミット, に分けることができます. - ハードリミットを越えることはできません. あるユーザーが一旦ハードリミットにたっした場合, + ハードリミットを越えることはできません. あるユーザが一旦ハードリミットにたっした場合, そのファイルシステムではそれ以上の割り当ては望めません. 例えばあるファイルシステム上に 500 ブロックのハードリミットが設定されており現在 490 ブロックを使用している場合, さらに 10 ブロックしか使えないのです. 11 ブロックを使おうとすると失敗します. 一方, ソフトリミットはある限られた時間内であれば越えることができます. この時間は猶予期間として知られており, デフォルトでは 1 週間です. - あるユーザーが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり, - それ以上使用することはできなくなります. ユーザーがソフトリミットよりも減らせば猶予期間はリセットされます. + あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり, + それ以上使用することはできなくなります. ユーザがソフトリミットよりも減らせば猶予期間はリセットされます. 以下は edquota コマンドを実行した時に見ることになるであろう例です. edquota コマンドが起動されると環境変数 EDITOR - で指定されるエディターに入ります. EDITOR が設定されていない場合には + で指定されるエディタに入ります. EDITOR が設定されていない場合には vi が起動されます. ここでクォータリミットを編集します. &prompt.root; edquota -u test Quotas for user test: /usr: blocks in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: blocks in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) 通常, クォータが有効になっているファイルシステム毎に 2 行あります. 一つはブロックリミット用でもう一つは inode リミット用です. クォータリミットを変更したいところを書き変えるだけでかまいません. - 例えばこのユーザーのブロックリミットを, 「ソフトリミットは 50 で ハードリミットは 75」から「ソフトリミットは + 例えばこのユーザのブロックリミットを, 「ソフトリミットは 50 で ハードリミットは 75」から「ソフトリミットは 500 で ハードリミットは 600」に変更する場合, /usr: blocks in use: 65, limits (soft = 50, hard = 75) から /usr: blocks in use: 65, limits (soft = 500, hard = 600) - へ書き換えます. 新しいクォータリミットはエディターを終了すれば設定されます. + へ書き換えます. 新しいクォータリミットはエディタを終了すれば設定されます. ある範囲の uid に対してクォータリミットを設定したい場合がありますが, このような時には edquota コマンドの オプションを使うといいでしょう. - まず, あるユーザーに割り当てたいクォータリミットを設定し, 次に + まず, あるユーザに割り当てたいクォータリミットを設定し, 次に edquota -p protouser startuid-enduid - を実行するのです. 例えばユーザー test にお望みのクォータリミットが付いているとしましょう. + を実行するのです. 例えばユーザ test にお望みのクォータリミットが付いているとしましょう. 次のコマンドにより 10,000 から 19,999 の間の uid に対して同じクォータリミットを付けることができるのです. &prompt.root; edquota -p test 10000-19999 さらに詳しいことは man edquota をご覧ください. クォータリミットとディスク使用状況のチェック quotarepquota といったコマンドを使ってクォータリミットやディスクの利用状況をチェックすることができます. - quota コマンドは個々のユーザーやグループのクォータやディスク利用状況をチェックするのに使えます. - スーパーユーザーのみが他のユーザーや所属していないグループのクォータと利用状況を見ることができます. - repquota コマンドはクォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリーを得るのに使えます. + quota コマンドは個々のユーザやグループのクォータやディスク利用状況をチェックするのに使えます. + スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます. + repquota コマンドはクォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得るのに使えます. - 以下は二つのファイルシステムにクォータ制限がかけられているユーザーに対する + 以下は二つのファイルシステムにクォータ制限がかけられているユーザに対する quota -v コマンドの出力例です. Disk quotas for user test (uid 1002): Filesystem blocks quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 - 上の例で, /usr ファイルシステム上ではこのユーザーは現在 + 上の例で, /usr ファイルシステム上ではこのユーザは現在 50 ブロックというソフトリミットを 15 ブロックオーバーし 5 日間の猶予期間が残っています. - アスタリスク * はクォータリミットを越えているユーザーを示していることに注意してください. + アスタリスク * はクォータリミットを越えているユーザを示していることに注意してください. - 通常, そのユーザーが全く使っていないファイルシステムは, クォータリミットが付けられているとしても + 通常, そのユーザが全く使っていないファイルシステムは, クォータリミットが付けられているとしても quota コマンドの出力には現われません. オプションを用いればそのようなファイルシステム, 上の例では /usr/var, を表示することができます. NFS 上の クォータ - クォータは NFS サーバー上のクォータサブシステムにより実行されます. + クォータは NFS サーバ上のクォータサブシステムにより実行されます. &man.rpc.rquotad.8; デーモンにより, NFS クライアント上の &man.quota.1; - コマンドは情報を得ることができ, クライアントマシン上のユーザーが自分のクォータの統計を見ることができます. + コマンドは情報を得ることができ, クライアントマシン上のユーザが自分のクォータの統計を見ることができます. /etc/inetd.conf において以下のように rpc.rquotad を有効にしましょう. rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad そして以下のように inetd を再起動します. &prompt.root; kill -HUP `cat /var/run/inetd.pid`
diff --git a/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml index c50bd793f7..36ca2568fd 100644 --- a/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml @@ -1,3653 +1,3679 @@ FreeBSD の入手方法 CDROM 出版社 FreeBSD は BSDi から出されている CDROM から入手できます:
BSDi 4041 Pike Lane, Suite F Concord, CA 94520 USA Phone: +1 925 691-2800 Fax: +1 925 674-0821 Email: info@osd.bsdi.com WWW: http://www.osd.bsdi.com/
FTP サイト FreeBSD の公式な情報は anonymous FTP によって以下の場所から 入手できます:
ftp://ftp.FreeBSD.org/pub/FreeBSD/.
FreeBSD ミラーサイトデーターベース FreeBSD ハンドブックの “ミラーサイト一覧” よりも正確です.というのはその情報を DNS から取得するので, 静的に記述されたリストよりも信頼性が高いのです. さらに, FreeBSD は以下のミラーサイトから anonymous FTP によって 入手できます. もし FreeBSD を anonymous FTP によって手にいれる場合は, 近くのサイトを利用するようにしてください. Argentina, Australia, Brazil, Canada, China, Czech Republic, Denmark, Estonia, Finland, France, Germany, Hong Kong, Hungary, Ireland, Israel, Japan, Korea, Lithuania, Netherlands, New Zealand, Poland, Portugal, Russia, Saudi Arabia, South Africa, Spain, Slovak Republic, Slovenia, Sweden, Taiwan, Thailand, UK, Ukraine, USA. アルゼンチン 何か問題がある場合は,このドメインの hostmaster hostmaster@ar.FreeBSD.org に連絡してください. ftp.ar.FreeBSD.org/pub/FreeBSD/ オーストラリア 何か問題がある場合は, このドメインの hostmaster hostmaster@au.FreeBSD.org に連絡してください. ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.au.FreeBSD.org/pub/FreeBSD/ ブラジル 何か問題がある場合は, このドメインの hostmaster hostmaster@br.FreeBSD.org に連絡してください. ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/ カナダ 何か問題がある場合は, このドメインの hostmaster hostmaster@ca.FreeBSD.org に連絡してください. ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/ 中国 何か問題がある場合は, このドメインの hostmaster phj@cn.FreeBSD.org に連絡してください. ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ チェコ 何か問題がある場合は, このドメインの hostmaster hostmaster@cz.FreeBSD.org に連絡してください. ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ 連絡先: calda@dzungle.ms.mff.cuni.cz デンマーク 何か問題がある場合は,このドメインの hostmaster hostmaster@dk.FreeBSD.org に連絡してください. ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ エストニア 何か問題がある場合は, このドメインの hostmaster hostmaster@ee.FreeBSD.org に連絡してください. ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ フィンランド 何か問題がある場合は, このドメインの hostmaster hostmaster@fi.FreeBSD.org に連絡してください. ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ フランス 何か問題がある場合は, このドメインの hostmaster hostmaster@fr.FreeBSD.org に連絡してください. ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ ドイツ 何か問題がある場合は, このドメインのミラー管理者 de-bsd-hubsr@de.FreeBSD.org に連絡してください. ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ 香港 ftp://ftp.hk.super.net/pub/FreeBSD/ 連絡先: ftp-admin@HK.Super.NET. ハンガリー 何か問題がある場合は, このドメインの hostmaster mohacsi@ik.bme.hu に連絡してください. ftp://ftp.hu.FreeBSD.org/pub/FreeBSD/ アイルランド 何か問題がある場合は, このドメインの hostmaster hostmaster@ie.FreeBSD.org に連絡してください. ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ イスラエル 何か問題がある場合は, このドメインの hostmaster hostmaster@il.FreeBSD.org に連絡してください. ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.il.FreeBSD.org/pub/FreeBSD/ 日本 何か問題がある場合は, このドメインの hostmaster hostmaster@jp.FreeBSD.org に連絡してください. ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/ 韓国 何か問題がある場合は, このドメインの hostmaster hostmaster@kr.FreeBSD.org に連絡してください. ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.kr.FreeBSD.org/pub/FreeBSD/ リトアニア 何か問題がある場合は, このドメインの hostmaster hostmaster@lt.FreeBSD.org に連絡してください. ftp://ftp.lt.FreeBSD.org/pub/FreeBSD/ オランダ 何か問題がある場合は, このドメインの hostmaster hostmaster@nl.FreeBSD.org に連絡してください. ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ ニュージーランド 何か問題がある場合は, このドメインの hostmaster hostmaster@nz.FreeBSD.org に連絡してください. ftp://ftp.nz.FreeBSD.org/pub/FreeBSD/ ポーランド 何か問題がある場合は,このドメインの hostmaster hostmaster@pl.FreeBSD.org に連絡してください. ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ ポルトガル 何か問題がある場合は, このドメインの hostmaster hostmaster@pt.FreeBSD.org に連絡してください. ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.pt.FreeBSD.org/pub/FreeBSD/ ロシア 何か問題がある場合は, このドメインの hostmaster hostmaster@ru.FreeBSD.org に連絡してください. ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/ サウジアラビア 何か問題がある場合は, ftpadmin@isu.net.sa に連絡してください. ftp://ftp.isu.net.sa/pub/mirrors/ftp.freebsd.org/ 南アフリカ 何か問題がある場合は, このドメインの hostmaster hostmaster@za.FreeBSD.org に連絡してください. ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ スロヴァキア共和国 何か問題がある場合には, このドメインの hostmaster hostmaster@sk.FreeBSD.org に連絡してください. ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ スロベニア 何か問題がある場合には, このドメインの hostmaster hostmaster@si.FreeBSD.org に連絡してください. ftp://ftp.si.FreeBSD.org/pub/FreeBSD スペイン 何か問題がある場合は, このドメインの hostmaster hostmaster@es.FreeBSD.org に連絡してください. ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ スウェーデン 何か問題がある場合は, このドメインの hostmaster hostmaster@se.FreeBSD.org に連絡してください. ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ 台湾 何か問題がある場合は, このドメインの hostmaster hostmaster@tw.FreeBSD.org に連絡してください. ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ タイ ftp://ftp.nectec.or.th/pub/FreeBSD/ 連絡先: ftpadmin@ftp.nectec.or.th. ウクライナ ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ 連絡先: freebsd-mnt@lucky.net. イギリス 何か問題がある場合は, このドメインの hostmaster hostmaster@uk.FreeBSD.org に連絡してください. ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/ アメリカ 何か問題がある場合は, このドメインの hostmaster hostmaster@FreeBSD.org に連絡してください. ftp://ftp.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.FreeBSD.org/pub/FreeBSD/ ftp://ftp8.FreeBSD.org/pub/FreeBSD/ ftp://ftp9.FreeBSD.org/pub/os/FreeBSD/
Anonymous CVS 訳: &a.jp.sugimura;, 1998 年 7 月 19 日. <anchor id="anoncvs-intro">導入 Anonymous CVS (もしくは, anoncvs として知られています) は離れたところにある CVS リポジトリと同期を取るために FreeBSD に付属している CVS ユーティリティに含まれている機能です. 他にもありますが, それは FreeBSD のユーザが, 特別な権限なしに FreeBSD プロジェクトの公式な anoncvs サーバに読み取り専用で CVS の操作をすることができるようにするためのものです. それを使うには, 単に CVSROOT 環境変数を設定して適切な anoncvs サーバを指定し, cvs login を使って パスワード anoncvs を入力してください. そして次に &man.cvs.1; コマンドを使うことで, 手元にあるリポジトリと同じようにアクセスできるようになります. CVSup と anoncvs のサービスは本質的に同じ機能ではないかということも言われていますが, ユーザが同期を取る方法を選ぶときに影響を与える, さまざまなトレードオフが存在します. 要約して言えば, CVSup はネットワーク資源の使い方においては非常に効率が良く技術的にもはるかに洗練されたものですが, 相当な手間がかかります. CVSup を使うには特別なクライアントをまずインストールして設定しなくては 1 bit も取ってくることができませんし, さらにそのとき CVSup で取ってくることができるのは, コレクション(collection) と呼ばれる, かなり大きなかたまりだけです. それに対して anoncvs では, CVS モジュールの名前を指定することで特定のプログラムの (lsgrep のような) 個々のファイルから調べることができます. もちろん, anoncvs は CVS リポジトリの読み取り専用の操作に対してのみ適しているので, もしあなたが FreeBSD プロジェクトのものと共有されたなにか ローカルなリポジトリを作ってそこでの開発を 行おうというときには, CVSup だけが唯一の手段となってしまいます. <anchor id="anoncvs-usage">Anonymous CVS を使う &man.cvs.1; を設定して Anonymous CVS リポジトリを使うには単に CVSROOT 環境変数を設定して FreeBSD プロジェクトの anoncvs サーバを指定するだけのことです. この文書を書いているときには, 次のサーバが利用できるようになっています. USA: :pserver:anoncvs@anoncvs.freebsd.org:/ncvs (cvs login コマンドを使い, プロンプトが表示されたらパスワード anoncvs を入力してください) CVS はかつて存在した (もしくは, 時にはこれから存在するものも :) ほとんどどんなバージョンの FreeBSD のソースを check out することができますが, あなたは &man.cvs.1; の リビジョン () のオプションや FreeBSD プロジェクトのリポジトリの中で それをどのように指定したらいいものかということを よく知っておく必要があります. タグには 2 種類あって, リビジョンタグとブランチタグがあります. リビジョンタグは特定の改訂版を指しており, それはいつも同じものを意味しています. 一方ブランチタグは, 指定されたときの指定された開発の流れにおける 最も新しい改訂版を示しています. ブランチタグは特定の改訂版を指していないために, その意味はきょうと明日では違うものになっているでしょう. ユーザが興味を持つと思われるブランチタグの一覧です (Ports Collectionに有効なタグは HEAD だけだという事を心に留めておいてください). HEAD 主要部をなす流れ, すなわち FreeBSD-CURRENT のための名前です. また, どのリビジョンも 指定されなかったときにはこれになります. RELENG_4 FreeBSD-4.X の開発のための流れです. FreeBSD-STABLE としても知られています. RELENG_3 FreeBSD-3.X の開発のための流れです. 3.X-STABLE としても知られています. RELENG_2_2 FreeBSD-2.2.X の開発のための流れです. 2.2-STABLE としても知られています. このブランチは大部分が すたれています. ユーザが興味を持つであろうリビジョンタグの一覧です. これらはいずれも Ports Collection には無効です. Ports Collection は複数のリビジョンを持ちません RELENG_4_1_1_RELEASE FreeBSD 4.1.1 です. RELENG_4_1_0_RELEASE FreeBSD 4.1.0 です. RELENG_4_0_0_RELEASE FreeBSD 4.0 です. RELENG_3_5_0_RELEASE FreeBSD-3.5 です. RELENG_3_4_0_RELEASE FreeBSD-3.4 です. RELENG_3_3_0_RELEASE FreeBSD-3.3 です. RELENG_3_2_0_RELEASE FreeBSD-3.2 です. RELENG_3_1_0_RELEASE FreeBSD-3.1 です. RELENG_3_0_0_RELEASE FreeBSD-3.0 です. RELENG_2_2_8_RELEASE FreeBSD-2.2.8 です. RELENG_2_2_7_RELEASE FreeBSD-2.2.7 です. RELENG_2_2_6_RELEASE FreeBSD-2.2.6 です. RELENG_2_2_5_RELEASE FreeBSD-2.2.5 です. RELENG_2_2_2_RELEASE FreeBSD-2.2.2 です. RELENG_2_2_1_RELEASE FreeBSD-2.2.1 です. RELENG_2_2_0_RELEASE FreeBSD-2.2.0 です. ブランチタグを指定したときには, 普通はその開発の流れにおける 最も新しいバージョンのファイルを受け取ることができます. もし以前のバージョンのものが欲しいときには, 日付を オプションを使って指定すればよいです. これ以上のことは &man.cvs.1; man page を見てください. 本当はなにかする前には &man.cvs.1; のマニュアルページの全体をちゃんと読んでからのほうがいいのですが, Anonymous CVS の使い方の本質的なところを簡単に例を挙げて説明します. -CURRENT (&man.ls.1;) をちょっと確認してから消してみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs co ls &prompt.user; cvs release -d ls &prompt.user; cvs logout &man.ls.1; のバージョンを 3.X-STABLE ブランチから調べてみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs co -rRELENG_3 ls &prompt.user; cvs release -d ls &prompt.user; cvs logout &man.ls.1; の変更点のリストを (unified diff で) 作ってみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls &prompt.user; cvs logout 他のどんなモジュールの名前が 使われているか検索してみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; more modules/modules &prompt.user; cvs release -d modules &prompt.user; cvs logout 他の資料 次の資料は CVS を学ぶのに役に立つでしょう. CVS チュートリアル. Cal Poly によるものです. Cyclic Software, 商用として CVS を保守しています. CVSWeb は FreeBSD Project の CVS のための WWW インターフェースです. CTM を使う 訳: &a.hanai;, 1997 年 9 月 13 日. CTM はリモートのディレクトリツリーを中央のツリーに同期させるための 手段です. これはFreeBSDのソースツリーの配布を行なうために開発されまし たが, 時が経つにつれて別の目的にも有用であることがわかるかも しれません. デルタを作り出す処理に関するドキュメントは現在ほとんど ありません. 従って, もしあなたがCTM を他のことに使いたいなら &a.phk;にさらなる情報を問い合わせてください. なぜ<application>CTM</application>を使うの? CTM を使うことにより FreeBSD ソースツリーのローカルコピーを手にいれることができます. ソースツリーが使えることの魅力は数多くあります. 完全な cvs ツリーを追いかけるにしても, ひとつのブランチを追いかける にしても CTM は必要な情報を与えてくれます. もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が 行なえないとしたら, あるいは単に変更が自動的に送られてきて ほしいというのであれば CTM はそんなあなたのために 作られたのです. アクティブなブランチでは 1 日に最大三つまでのデルタを受け取る必要があります. これが自動的に e-mail で送られてくるという方法を ぜひ検討してみてください. デルタのサイズは常にできるだけ小さく保たれています. 大抵の場合5KBよりも小さく, たまに(10回に1回程度)10-50KBになり, ときおり100KBかもっと大きくなるでしょう. 開発ソースから直接に得られたものを使うことについては, あらかじめパッケージにされたリリースとは違い, いろいろと注意することが あります. これは特に “current” のソースを選んでいるときは重要です. 最新の FreeBSD を追いかけるを読むことをお勧めします. <application>CTM</application>を使うには何が必要? 二つのものが必要でしょう: CTM プログラムとそれに与える (“current” レベルを得るための)最初のデルタです. CTM プログラムはバージョン2.0のリリース以来FreeBSDの一部にな りました. もしソースのコピーを持っているなら /usr/src/usr.sbin/CTMにあります. もしFreeBSDの2.0以前のバージョンなら, 最新のCTMのソースを直接 ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/ から入手できます. CTM に与える “デルタ” は二つの方法, FTPまたはe-mail, で得ること ができます. もしインターネットにFTPアクセスできるなら, 次のFTPサイト: ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/ または, その ミラーサイト が CTM へのアクセスをサポートします. 適切なディレクトリに FTP して README ファイルを入手し, そこからスタートしてください. e-mail によってデルタを得たいという場合は: CTM 配布メーリングリストのいずれかに参加するために &a.majordomo; へ subscribe のメールを送ってください. “ctm-cvs-cur” は完全な cvs ツリー をサポートします. “ctm-src-cur” は開発先端ブランチをサポートします “ctm-src-2_2” は 2.2 リリースのブランチのサポートです. (もし majordomo を使って参加する方法を知らないのであれば, 最初に help という語を含むメッセージを送ってください. — 使い方の説明が送られてくるでしょう.) メールで CTM による更新ファイルを受け取り始めると, 中身を取り出して使用 するために ctm_rmail プログラムを使うかもしれません. それを完全 に自動で行ないたいなら, /etc/aliases から ctm_rmailプロ グラムを直接使うこともできます. さらに詳しいことはctm_rmail manページを御覧ください. CTM デルタを得るためにどの方法を使うのであっても, ctm-announce@FreeBSD.org メーリングリストに参加するべきです. このメーリングリストは将来的には CTMシステムの操作に関する アナウンスがポストされる唯一の場になるでしょう. メーリングリストに加わるためにはsubscribe ctm-announce と書いた一行だけのメールを &a.majordomo; へ送ってください. はじめて<application>CTM</application>を使い始める CTM デルタを使い始めるためには, これは以降作られる全ての デルタの出発点を手にいれる必要があります. 最初にあなたが何をすでに持っているかをはっきりさせましょう. すべての人は “空”のディレクトリから始めなければなりません. ツリーをサポートしてるあなたの CTM を稼働するためには 指定した“空” のデルタを使う必要があります. いくつかの分岐点 では, あなたの都合により CD 内に分配されている“スタータ” デルタを使用できるようになっています. しかしながら, これは 頻繁に行われることではありません. 適切な出発点が決まれば, その出発点を CTM が 維持するツリーへ変換するための “スタータ” 初期デルタを使う必要が あります. 移行デルタは番号の後ろに X をつけたものがそうです (たとえばsrc-cur.3210XEmpty.gz). X の後ろは最初の開始ポイントに対応します. Empty は 空のディレクトリです. ルールとして Empty からの移行デルタは 100 デルタごとに 作られます. ところで, これらは非常に大きいです! XEmptyのデルタは 数十MBの gzip で圧縮されたデータというのが普通です. 一度スタートするためのベースデルタを得ると, それに続く多数の全てのデルタも必要になるでしょう. <application>CTM</application>を日常で使う デルタを適用するためには, 単に &prompt.root; cd /where/ever/you/want/the/stuff &prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* とします. CTM はどれがgzipされているか理解します. 従って最初に gunzipしておく必要はありません. ディスクの節約にもなります. 全体の処理に関して確信するまでは CTM は(ソース)ツリーに対して 何もしません. また, デルタを確かめるためには フラグを使うことができます. このフラグがあると CTM はツリーに対して実際には何も行ないません. 単にデルタの完全性を確認し, 現在のツリーに問題なく使用できるかを確認 するだけです. CTM には他にもオプションがあります. 詳細に関しては マニュアルページを参照するかソースを見てください. もし誰かが “ユーザ インターフェース” の部分に関して助けてくれるなら私はとても嬉しいです. なぜならどういうオプションが何を, どのように, いつ行なうようにするべきか決めかねているからです. 以上でやることは本当に全部です. 新しいデルタを入手した時には, ソースを最新のものにするためにそれを CTMに通すだけです. もしデルタを再ダウンロードするのが 骨の折れる作業であれば, デルタを 消さないでおいてください. なにかおかしなことが起こった場合には置いておけば良かった と思うかもしれません. もしフロッピーディスクしか持っていない状況 であってもコピーを取るのに fdwriteを使うことを考えてください. ローカルの変更を保存する 開発者としてはソースツリー中のファイルを 使って実験したり変更したく なるものです. CTM はローカルの変更を制限つきでサポートします: ファイル foo の存在をチェックする前に, foo.ctm を参照しにいきます. このファイルが存在する場合, CTM は foo の代りにこれを処理します. この動作はローカルの変更を保持する簡単な手段を 提供します: 単に変更したいファイルを拡張子 .ctm 付きのファイル名で コピーするだけです. あとは自由にコードをハックでき, .ctm ファイルの方は CTM が最新状態に保ってくれます. <application>CTM</application> のその他の面白いオプション 更新で変更されるファイルを正確に知る CTM のソースリポジトリに対する変更のリストを オプションを使って決定することができます. これは, 変更のログを保存したい, 変更されたファイルをなんらかの方法で 前・後処理したい, または単にこだわりたい :-) 場合には, 役に立つでしょう. 更新前にバックアップを取る CTM の更新によって変更されるファイルすべてのバックアップを 取りたくなることがあります. オプションを指定すると CTM は デルタで変更されるファイルすべてを backup-file としてバックアップするようになります. 更新で変更されるファイルを制限する CTM の更新の範囲を制限したり一連のデルタのから ほんの数ファイルを抽出したくなることがあります. オプションを用い正規表現を指定することで, CTM が処理するファイルのリストを制御することが できます. 例えば, lib/libc/Makefile の最新のコピーを保存してある CTM デルタのコレクションから抽出するには, 以下のコマンドを実行します. &prompt.root; cd /where/ever/you/want/to/extract/it/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* CTM デルタで指定されたファイルごとに, そして オプションがコマンドラインで指定された順序で適用されます. すべての そして オプションが適用された後に更新対象と選択された場合に限り, CTM はそのファイルを処理します. <application>CTM</application>の将来計画 重要なもの なんらかの CTM システムへの認証機構を用い, 不正な CTM の更新の検出を可能とする. CTM へのオプションを整理する. さもないと混乱し, 直観に反したものになります. その他 ports コレクションに対するデルタもあるのですが, これに興味を持っている人はまだ少ないようです. もしこれに対するメーリングリストが欲しい時はセットアップを行ないますので, わたしの方まで連絡ください. CTM サイト CTM/FreeBSD は以下のミラーサイトから anonymous FTP によって入手できます. もし CTM を anonymous FTP によって手にいれる場合は, 近くのサイトを利用するようにしてください. 何か問題がある場合は, &a.phk;に連絡してください. カリフォルニア, サンフランシスコ近辺, 公式なソース ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/ ドイツ, トリエル ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM/ 南アフリカ, ctm, sup, CVSupなどの古い差分ファイルのバックアップサーバ ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/ 台湾/中華民国, チャーイー(嘉義) ftp://ctm.tw.FreeBSD.org/pub/freebsd/CTM/ ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/CTM/ ftp://ctm3.tw.FreeBSD.org/pub/freebsd/CTM/ 近くにミラーサイトがない場合やミラーが不完全な場合は, http://ftpsearch.ntnu.no/ftpsearchFTP search を試してください. FTP search はノルウェーの Trondheim にある, フリーの素晴らしい アーカイブサーバです. CVSup を使う 訳: &a.jp.iwasaki;, 1997 年 2 月 27 日. 紹介 CVSup は, リモートのサーバホストにあるマスタ CVS リポジトリから ソースツリーを配布し更新するための ソフトウェアパッケージです. FreeBSD のソースは, カリフォルニアにある中心的な開発マシンの CVS リポジトリの 中でメンテナンスしています. CVSup を使用することで, FreeBSD ユーザは 簡単に自分のソースツリーを最新の状態に しておくことができます. CVSuppull モデルとよばれる更新のモデルを採用しています. pull モデルでは, 各クライアントが更新したい場合に更新したい時点で, サーバに更新の問い合わせをおこないます. サーバはクライアントからの 更新の要求を受け身の状態で待ちます. したがって, すべての更新はクライアント主導でおこなわれます. サーバは頼まれもしない更新情報を送るようなことはしません. ユーザは CVSup クライアントを手動で実行して更新をおこなうか, cron ジョブを設定して定期的に自動実行する必要があります. 用語 CVSup のように大文字で表記しているものは, ソフトウェアパッケージ 全体を指します. 主な構成物は, 各ユーザマシンで実行するクライアントである cvsup, FreeBSD の各ミラーサイトで実行するサーバ cvsupd です. FreeBSD の文書やメーリングリストを読んだ際に, sup についての言及を 見かけたかもしれません. supCVSup の前に存在していたもので, 同様の目的で使われていました. CVSup は sup と同じように使用されており, 実際, sup と互換性のあるコンフィグレーションファイルを使用します. CVSup の方がより高速で柔軟性もあるので, もはや sup は FreeBSD プロジェクトでは使用されていません. インストール CVSup をインストールする 最も簡単な方法は, FreeBSD ports コレクション の net/cvsup-bin をインストールすることです. もしくは, net/cvsup でも構いません. ただし, net/cvsup は Modula-3 システムに依存していて, 構築にかかる時間, メモリ, ディスクスペースは比較的大きくなります. もし, あなたに cvsup に関して全く知識がなく, 自動で設定ファイルをセットアップして, クリックするだけで転送を行なえるインターフェイスを提供してくれるような, 単一のパッケージをインストールしたいと考えているなら, cvsupit パッケージを利用して下さい. これは &man.pkg.add.1; するだけで良く, 設定は, その際にメニュー形式で行なうことができるようになっています. CVSup のコンフィグレーション CVSup の動作は, supfile と呼ばれるコンフィグレーションファイルで 制御します. supfile のサンプルは, ディレクトリ /usr/share/examples/cvsup/ の下にあります. supfile には以下の cvsup に関する質問への答えを記述します: どのファイルを受け取りたいのか? どのバージョンのものが欲しいのか? どこから入手したいのか? 自分のマシンのどこに置きたいのか? どこに status ファイルを置きたいのか? 次のセクションで, これらの質問に順番に答えながら典型的な supfile を組み立てていきます. 最初に supfile の全体構造を説明します. supfile はテキストファイルです. コメントは # から行末までです. 空行とコメントだけの行は無視します. 残りの各行には, ユーザが受け取りたいファイル群について記述します. 行の始めは, サーバ側で定義した論理的なファイルのグループである コレクションの名称です. コレクションの名称を指定して, 欲しいファイル群を サーバに伝えます. コレクション名の後には, ホワイトスペースで区切られた 0 個以上のフィールドが続きます. これらのフィールドが上記の質問に対する答えになります. フィールドには 2 種類あります: flag フィールドと value フィールドです. flag フィールドは deletecompress のような 単独のキーワードから成ります. また, value フィールドもキーワードで始まりますが, キーワードの後にはホワイトスペースは入らず, = と二つめの単語が続きます. 例えば, release=cvs は value フィールドです. 通常, supfile には受け取りたいコレクションを一つ以上指定します. supfile を組み立てる一つの方法として, コレクション毎にすべての関係の あるフィールドを明示的に指定する方法があります. しかし, これでは supfile のすべてのコレクションに対して ほとんどのフィールドが同じになるため, 行が非常に長くなってしまい不便になります. これらの問題を避けるため, CVSup ではデフォルトを指定することのできる メカニズムが提供されています. 特殊な擬似コレクション名 *default で始まる行は, supfile 中の後続の コレクションに対して使用する flag フィールドと value フィールドのデフォルトを設定するために利用できます. 個々のコレクションで固有の値を指定すると, デフォルト値を無効にできます. また 行を追加すると, supfile の途中からデフォルト値の変更や追加が可能になります. これまでの予備知識を基に, FreeBSD-current のメインのソースツリーを受け取って更新するための supfile を組み立ててみましょう. どのファイルを受け取りたいのか? CVSup を通して入手できるファイルは コレクション と呼ばれる名前の付けられたグループにまとめられています. 利用可能なコレクションについては ここ で説明しています. ここでは, FreeBSD システムのメインのソースツリー全体 を受け取るための設定例を紹介します. すべてを含む src-all という単一の大きなコレクションがあります. supfile を組み立てる最初のステップとして, これらのコレクションを一行に一つずつ記述します (この場合は一行だけです). src-all どのバージョンのものが欲しいのか? CVSup を使用すると, かつて存在していたことのある, 事実上どのバージョンの ソースでも受け取ることができます. これは cvsupd サーバがすべてのバージョンを含む CVS リポジトリに基づいて動作することにより, 実現されています. tag= および の value フィールドを使用して, 欲しいバージョンの 一つを指定します. tag= のフィールドの指定は正確に行うように十分注意 してください. いくつかのタグは特定のコレクションに 対してのみ有効です. タグの綴りが違っていたり不適切なタグを指定すると, CVSupはユーザが消し たくないファイルまで削除してしまいます. 特に ports-* のコレクション に対しては tag=. だけ を指定するようにしてください. tag= フィールドはリポジトリ中のシンボリックタグを指定します. tag には revision tag と branch tag の二種類があります. revision tag は特定のリビジョンを指します. これは, 毎日同じ状態に保つことになります. 一方 branch tag は, ある時点での開発分流の最新のリビジョンを指します. branch tag は特定のリビジョンを指定している訳ではないので, 今日と明日では 異なるリビジョンを参照することになるかもしれません. 以下はユーザが興味を持っていると思われる branch tag です. tag=. だけが ports コレクションには 適切であることに注意してください. tag=. メインの開発分流であり, FreeBSD-CURRENT として知られています. 注意: . は句読点ではありません. tag の名称です. このタグの指定は総ての コレクションに対して有効です. tag=RELENG_4 FreeBSD-4.X 用の開発分流であり, FreeBSD-STABLE として知られています. tag=RELENG_3 FreeBSD-3.X 用の開発分流です. tag=RELENG_2_2 FreeBSD-2.2.X 用の開発分流であり, 2.2-STABLE として知られています. 以下はユーザが興味を持っていると思われる revision tag です. 以下は ports コレクションには不適切であることに 再度注意してください. tag=RELENG_4_1_1_RELEASE FreeBSD-4.1.1 です. tag=RELENG_4_1_0_RELEASE FreeBSD-4.1.0 です. tag=RELENG_4_0_0_RELEASE FreeBSD-4.0 です. tag=RELENG_3_5_0_RELEASE FreeBSD-3.5 です. tag=RELENG_3_4_0_RELEASE FreeBSD-3.4 です. tag=RELENG_3_5_0_RELEASE FreeBSD-3.0 です. tag=RELENG_3_3_0_RELEASE FreeBSD-3.3 です. tag=RELENG_3_2_0_RELEASE FreeBSD-3.2 です. tag=RELENG_3_1_0_RELEASE FreeBSD-3.1 です. tag=RELENG_3_0_0_RELEASE FreeBSD-3.0 です. tag=RELENG_2_2_8_RELEASE FreeBSD-2.2.8 です. tag=RELENG_2_2_7_RELEASE FreeBSD-2.2.7 です. tag=RELENG_2_2_6_RELEASE FreeBSD-2.2.6 です. tag=RELENG_2_2_5_RELEASE FreeBSD-2.2.5 です. tag=RELENG_2_2_2_RELEASE FreeBSD-2.2.2 です. tag=RELENG_2_2_1_RELEASE FreeBSD-2.2.1 です. tag=RELENG_2_2_0_RELEASE FreeBSD-2.2.0 です. tag 名を示した通りにタイプされているか十分注意してく ださい. CVSup は tag 名が正しいかどうかを見分けることはできません. tag が間違っていた場合, たまたまファイルがまったく存在しない正しい tag が 指定されたものとしてCVSup は動作します. その場合は, 現在あるソースが削 除されるでしょう. branch tag を指定した際には, 通常はその開発分流の最新バージョンの ファイルを受け取ります. いくらか前のバージョンを受け取りたい場合は, の value フィールドを使って日付を指定することで, これを実現することが できます. &man.cvsup.1; のマニュアルページで, その方法を説明しています. 例として, FreeBSD-current を受け取りたいとします. 次の行を supfile の始めに追加します: *default tag=. tag= フィールドも date= フィールドも指定しなかった場合に 動き出す重要な特殊なケースがあります. そのケースでは, 特定のバージョンの ファイルを受け取るのではなく, サーバの CVS リポジトリから実際の RCS ファイルを直接受け取ります. 一般的に開発者はこの処理のモードが 好きなようです. 彼らのシステム上にリポジトリそのものの コピーを維持することで, リビジョン履歴を閲覧し過去のバージョンの ファイルを検査できるようになります. しかし, これには大きなディスクスペースが必要になります. どこから入手したいのか? 更新情報をどこから入手するかを cvsup に伝えるために host= フィールドを使用します. CVSup ミラーサイト のどこからでも入手できますが, ネット上での最寄りのサイトを選ぶべきでしょう. この例では, 仮想上の FreeBSD 配布サイト cvsup666.FreeBSD.org を使用します: *default host=cvsup666.FreeBSD.org CVSup を実行する前にホスト名を 実在のものに変更する必要があります. どのように cvsup を実行しても, この設定は を 使用してコマンドラインで変更することができます. 自分のマシンのどこに置きたいのか? prefix= フィールドは, cvsup に受け取ったファイルをどこに置くかを 伝えます. この例では, ソースファイルを直接メインのソースツリー /usr/src に置きます. src ディレクトリはすでにファイルを受け取るために 選択したコレクションで暗黙に指定しているので, これは正しい仕様となります: *default prefix=/usr どこに status ファイルを置きたいのか? cvsup クライアントは base ディレクトリと呼ばれる場所に, ある status ファイルを維持しています. すでに受け取った更新情報を追従し続けることで, これらのファイルは CVSup がより効果的に動作することを支援します. 標準の base ディレクトリ /usr/local/etc/cvsup を使用します: *default base=/usr/local/etc/cvsup supfile に指定がない場合は, この設定をデフォルトで使用しますので, 実際には上の行は必要ありません. base ディレクトリが存在しない場合は作成しておきましょう. base ディレクトリが存在しない場合, cvsup クライアントは実行を拒否します. その他もろもろの supfile の設定: 通常 supfile に入れておくべき行がもう一つあります: *default release=cvs delete use-rel-suffix compress release=cvs は, サーバがメインの FreeBSD CVS リポジトリから その情報を取得するように指示します. ほとんどの場合はこのようにしておきますが, ここでの説明の範疇をこえるような 状況では他の指定をすることも可能です. deleteCVSup にファイルを削除することを許可します. CVSup が ソースツリーを完全に最新の状態に 保てるようにするためには, これは常に 指定しておくべきでしょう. CVSup は, これらの責任範囲のファイルだけを 慎重に削除します. たまたま存在する他の余分なファイルについては, まったく手をつけずに残しておきます. use-rel-suffix は ... 神秘的なものです. これについて本当に知りたい人は, &man.cvsup.1; のマニュアルページをご覧ください. でなければ, 何も考えずに指定してみてください. compress は通信チャネルで gzip 形式の圧縮の使用を有効にします. ご使用のネットワーク接続が T1 speed 以上である場合, この圧縮を使用しない方がよいかもしれません. そうでない場合は十分に役に立ちます. supfile の例のまとめ: 以下は supfile の例の全体です: *default tag=. *default host=cvsup666.FreeBSD.org *default prefix=/usr *default base=/usr/local/etc/cvsup *default release=cvs delete use-rel-suffix compress src-all 拒否ファイル(refuse file) 既に述べたように, CVSup取り寄せ法(pull method)を用いるのですが, これは基本的に次のようなことを意味します. まずあなたが CVSup サーバに接続します. するとサーバは あなたがダウンロードできるのはこれこれですと言います. それに対し, あなたが使っているクライアントは わかりました. では, これとこれとこれをもらいますと答えます. デフォルトの設定の CVSup クライアントは, 設定ファイルで選んだコレクションとタグに適合する すべてのファイルを取得します. しかし, これは常にあなたの望む動作と一致するとは限りません. 特に doc や ports や www のツリーを同期させる場合などはそうでしょう. ほとんどの人は四か国語も五か国語も操れるわけではありませんから, 特定の言語のファイルのダウンロードは必要ないでしょう. Ports コレクションを CVSup で取得する場合には, 各コレクションを個別に指定することができます (たとえば, 単に ports-all とするかわりに ports-astrology, ports-biology などと書きます). 一方, doc と www のツリーは言語別のコレクションになっていません. そこであなたは CVSup のたくさんある洗練された機能の一つ, 拒否ファイル(refuse file) 機能を使う必要があります. 拒否ファイル(refuse file)CVSup に対し, コレクションに含まれる一部のファイルを取得することを伝えます. 言い換えれば, それはクライアントに対し, サーバから来る一部のファイルを拒否するよう指定するということです. 拒否ファイルは base/sup/refuse にあります(もしファイルがない場合には作成してください). base は supfile 内で定義されています. - デフォルトでは /usr/sup です. つまり, + デフォルトでは /usr/local/etc/cvsup です. つまり, 拒否ファイルのデフォルトは - /usr/sup/refuse + /usr/local/etc/cvsup/refuse ということになります. 拒否ファイルの書式は, 単にダウンロードしたくないファイルや ディレクトリの名前が書いてあるだけの非常にシンプルなものです. たとえば, 私は英語以外はドイツ語を少し話せるだけで, しかもドイツ語のアプリケーションの必要を感じないので 拒否ファイルは以下のように書いています. ports/chinese ports/german ports/japanese ports/korean ports/russian ports/vietnamese doc/es_ES.ISO_8859-1 doc/ja_JP.eucJP 他の言語についても同様です. 拒否ファイルの中ではリポジトリの名前が ディレクトリの先頭部分に対応することに注意してください. この実に便利な機能を使うと まったく必要としないファイルをダウンロードする必要がなくなり, インターネット接続の回線が遅かったり従量制で課金されている人は 貴重な時間を節約できるようになります. 拒否ファイルの詳細や CVSup が持つその他の便利な機能に関しては マニュアルページを参照してください. <application>CVSup</application> の実行 さて, 更新の準備ができました. これを実行するコマンドラインは実に簡単です: &prompt.root; cvsup supfile もちろん, ここでの supfile は作成したばかりの supfile のファイル名です. X11 環境で実行するものと仮定して, cvsup は 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します. go ボタンを押して, 実行を監視してください. この例では実際の /usr/src ツリーを更新しているので, cvsup にファイルを更新するのに必要なパーミッションを与えるために, ユーザ root で実行する必要があります. コンフィグレーションファイルを作ったばかりで, しかも以前にこのプログラムを実行したことがないので, 神経質になるのは無理もない話だと思います. 大切なファイルに触らずに試しに実行する簡単な方法があります. どこか適当な場所に空のディレクトリを作成して, コマンドラインの引数で指定するだけです: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest 指定したディレクトリは, すべての更新されるファイルの 更新先ディレクトリとして使用します. CVSup/usr/src の下のファイルを検査しますが, 変更や削除はまったくおこないません. かわりに /var/tmp/dest/usr/src に更新されたすべてのファイルが置かれるようになります. この方法で実行した場合は, CVSup は base ディレクトリの status ファイルを更新せずにそのままにします. これらのファイルの新しいバージョンは指定されたディレクトリ に書き込まれます. /usr/src の読み取り許可がある限り, このような試し実行のためにユーザ root になる必要はありません. X11 を利用していないとか単に GUI が気に入らない場合は, cvsup 起動時にコマンドラインに 二つほどオプションを追加する必要があります: &prompt.root; cvsup -g -L 2 supfile オプションは cvsup に GUI を使用しないように伝えます. X11 を利用していない場合には自動的に指定されますが, そうでない場合は 明示的に指定します. オプションは cvsup にファイル更新中の詳細情報をプリントアウト するように伝えます. 冗長性には から までの三つのレベル があります. デフォルトは 0 であり, エラーメッセージ以外はまったく出力 しません. たくさんの他のオプション変数があります. それらの簡単な一覧は cvsup -H で表示されます. より詳しい説明はマニュアルページをご覧ください. 動作している更新の方法に満足したら, &man.cron.8; を使って cvsup を定期的に 実行させる準備をすることができます. cron から起動する際には, 明示的に cvsup が GUI を使わないようにする必要があります. <application>CVSup</application> ファイルコレクション CVSup 経由で入手できるファイルコレクションは 階層的に組織化されています. いくつか大きなコレクションがあり, それらは小さなサブコレクションに 分割されています. 大きなコレクションは, そのサブコレクション毎に 受信することと同じことになります. 下の一覧ではコレクション間の階層関係を 字下げして表現します. 最も一般的に使用するコレクションは src-all, ports-all です. 他のコレクションは特別な目的を持つ人達だけが使用しており, ミラーサイトはそれらのすべてを 持っていないかもしれません. cvs-all release=cvs メインの FreeBSD CVS リポジトリであり, 暗号のコードを含んでいます. distrib release=cvs FreeBSD の配布とミラーに関連するファイルです. doc-all release=cvs FreeBSD ハンドブックおよびその他のドキュメントの ソースです. ports-all release=cvs FreeBSD の ports コレクションです. ports-archivers release=cvs アーカイビングのツール. ports-astro release=cvs 天文学関連の ports. ports-audio release=cvs サウンドサポート. ports-base release=cvs /usr/ports のトップにあるその他のファイル. ports-benchmarks release=cvs ベンチマークプログラム. ports-biology release=cvs 植物学関連のプログラム. ports-cad release=cvs CAD ツール. ports-chinese release=cvs 中国語サポート. ports-comms release=cvs 通信ソフトウェア. ports-converters release=cvs 文字コードコンバータ. ports-databases release=cvs データベース. ports-deskutils release=cvs コンピュータが発明される前に 卓上で使われていたものたち. ports-devel release=cvs 開発ユーティリティ. ports-editors release=cvs エディタ. ports-emulators release=cvs 他の OS のエミュレータ. ports-ftp release=cvs FTP クライアントとサーバ. ports-games release=cvs ゲーム. ports-german release=cvs ドイツ語サポート. ports-graphics release=cvs グラフィックユーティリティ. ports-irc release=cvs インターネットリレーチャット(IRC)用のユーティリティ ports-japanese release=cvs 日本語サポート. ports-java release=cvs Java ユーティリティ ports-korean release=cvs 韓国語サポート. ports-lang release=cvs プログラミング言語. ports-mail release=cvs メールソフトウェア. ports-math release=cvs 数値計算ソフトウェア. ports-mbone release=cvs MBone アプリケーション. ports-misc release=cvs 色々なユーティリティ. ports-net release=cvs ネットワーキングソフトウェア. ports-news release=cvs USENET ニュースのソフトウェア. ports-palm release=cvs 3Com Palm(tm) シリーズ用ソフトウェア. ports-print release=cvs 印刷ソフトウェア. ports-russian release=cvs ロシア語サポート. ports-security release=cvs セキュリティユーティリティ. ports-shells release=cvs コマンドラインシェル. ports-sysutils release=cvs システムユーティリティ. ports-textproc release=cvs 文書処理ユーティリティ (デスクトップパブリッシングは含まない). ports-vietnamese release=cvs ベトナム語サポート. ports-www release=cvs World Wide Web 関連のソフトウェア. ports-x11 release=cvs X window システムをサポートする ports. ports-x11-clocks release=cvs X11 上で動作する時計の数々. ports-x11-fm release=cvs X11 上で動作するファイラ. ports-x11-fonts release=cvs X11 のフォントとフォントユーティリティ. ports-x11-toolkits release=cvs X11 のツールキット. ports-x11-servers 各種 X11 サーバ ports-x11-wm release=cvs X11 のウィンドウマネージャ. src-all release=cvs メインの FreeBSD ソース群であり, 暗号のコードを含んでいます. src-base release=cvs /usr/src のトップにあるその他のファイル. src-bin release=cvs シングルユーザモードで必要な ユーザユーティリティ (/usr/src/bin). src-contrib release=cvs FreeBSD プロジェクト外部からの ユーティリティおよびライブラリ, 比較的無修正 (/usr/src/contrib). src-crypto release=cvs FreeBSD プロジェクトの外部で開発された暗号ユーティリティとライブラリ. ほとんどそのままの形で使われます. (/usr/src/crypto). src-eBones release=cvs Kerberos と DES (/usr/src/eBones). 現在の FreeBSD リリースでは使われていません. src-etc release=cvs システムコンフィグレーションファイル (/usr/src/etc). src-games release=cvs ゲーム (/usr/src/games). src-gnu release=cvs GNU Public License 下にあるユーティリティ (/usr/src/gnu). src-include release=cvs ヘッダファイル (/usr/src/include). src-kerberos5 release=cvs Kerberos5 セキュリティパッケージ (/usr/src/kerberos5). src-kerberosIV release=cvs KerberosIV セキュリティパッケージ (/usr/src/kerberosIV). src-lib release=cvs ライブラリ (/usr/src/lib). src-libexec release=cvs システムプログラムであり, 通常は他のプログラムから実行される (/usr/src/libexec). src-release release=cvs FreeBSD の release を構築するために必要なファイル (/usr/src/release). src-secure release=cvs DES (/usr/src/secure). src-sbin release=cvs シングルユーザモード用の システムユーティリティ (/usr/src/sbin). src-share release=cvs 多様なシステム間で共有可能なファイル (/usr/src/share). src-sys release=cvs カーネル (/usr/src/sys). src-sys-crypto release=cvs カーネル用の暗号コード (/usr/src/sys/crypto). src-tools release=cvs FreeBSD の保守用の色々なツール (/usr/src/tools). src-usrbin release=cvs ユーザユーティリティ (/usr/src/usr.bin). src-usrsbin release=cvs システムユーティリティ (/usr/src/usr.sbin). www release=cvs World Wide Web のデータ用のソースです. distrib release=self CVSup サーバ自身のコンフィグレーションファイルです. CVSup ミラーサイトが使用します. gnats release=current GNATS バグトラッキングデータベースです. mail-archive release=current FreeBSD 関連メーリングリストのアーカイブ. www release=current インストールされた World Wide Web のデータです. WWW ミラーサイトが使用します. 詳細について CVSup の FAQ や CVSup に関するその他の情報については The CVSup Home Page をご覧ください. CVSup のほとんどの FreeBSD 関連の議論は &a.hackers; でおこなわれています. ソフトウェアの新しいバージョンは &a.announce; で アナウンスされます. 質問とバグ報告はプログラムの作者, cvsup-bugs@polstra.com へ 送ってください. CVSup サイト FreeBSD の CVSup サーバは以下のサイトで稼働しています: アルゼンチン cvsup.ar.FreeBSD.org (保守担当 msagre@cactus.fi.uba.ar) オーストラリア cvsup.au.FreeBSD.org (保守担当 dawes@xfree86.org) cvsup3.au.FreeBSD.org (保守担当 FreeBSD@admin.gil.com.au) オーストリア cvsup.at.FreeBSD.org (保守担当 postmaster@wu-wien.ac.at) ブラジル cvsup.br.FreeBSD.org (保守担当 cvsup@cvsup.br.FreeBSD.org) cvsup2.br.FreeBSD.org (保守担当 tps@ti.sk) cvsup3.br.FreeBSD.org (保守担当 camposr@matrix.com.br) カナダ cvsup.ca.FreeBSD.org (保守担当 dan@jaded.net) cvsup2.ca.FreeBSD.org (保守担当 mitayai@dreaming.org) 中国 cvsup.cn.FreeBSD.org (保守担当 phj@cn.FreeBSD.org) チェコ cvsup.cz.FreeBSD.org (保守担当 cejkar@dcse.fee.vutbr.cz) デンマーク cvsup.dk.FreeBSD.org (保守担当 jesper@skriver.dk) エストニア cvsup.ee.FreeBSD.org (保守担当 taavi@uninet.ee) フィンランド cvsup.fi.FreeBSD.org (保守担当 count@key.sms.fi) cvsup2.fi.FreeBSD.org (保守担当 count@key.sms.fi) フランス cvsup.fr.FreeBSD.org (保守担当 hostmaster@fr.FreeBSD.org) cvsup2.fr.FreeBSD.org (保守担当 ftpmaint@uvsq.fr) ドイツ cvsup.de.FreeBSD.org (保守担当 wosch@FreeBSD.org) cvsup2.de.FreeBSD.org (保守担当 cvsup@nikoma.de) cvsup3.de.FreeBSD.org (保守担当 ag@leo.org) cvsup4.de.FreeBSD.org (保守担当 cvsup@cosmo-project.de) cvsup5.de.FreeBSD.org (保守担当 rse@freebsd.org) アイスランド cvsup.is.FreeBSD.org (保守担当 adam@veda.is) + + アイルランド + + + + + cvsup.ie.FreeBSD.org + (保守担当 dwmalone@maths.tcd.ie), + トリニティ大学, ダブリン + + + + + 日本 cvsup.jp.FreeBSD.org (保守担当 cvsupadm@jp.FreeBSD.org) cvsup2.jp.FreeBSD.org (保守担当 max@FreeBSD.org) cvsup3.jp.FreeBSD.org (保守担当 shige@cin.nihon-u.ac.jp) cvsup4.jp.FreeBSD.org (保守担当 cvsup-admin@ftp.media.kyoto-u.ac.jp) cvsup5.jp.FreeBSD.org (保守担当 cvsup@imasy.or.jp) cvsup6.jp.FreeBSD.org (保守担当 cvsupadm@jp.FreeBSD.org) 韓国 cvsup.kr.FreeBSD.org (保守担当 cjh@kr.FreeBSD.org) cvsup2.kr.FreeBSD.org (保守担当 holywar@mail.holywar.net) リトアニア cvsup.lt.FreeBSD.org (保守担当 domas.mituzas@delfi.lt) オランダ cvsup.nl.FreeBSD.org (保守担当 xaa@xaa.iae.nl) cvsup2.nl.FreeBSD.org (保守担当 cvsup@nl.uu.net) ノルウェー cvsup.no.FreeBSD.org (保守担当 Per.Hove@math.ntnu.no) ポーランド cvsup.pl.FreeBSD.org (保守担当 Mariusz@kam.pl) ポルトガル cvsup.pt.FreeBSD.org (保守担当 jpedras@webvolution.net) ロシア cvsup.ru.FreeBSD.org (保守担当 ache@nagual.pp.ru) cvsup2.ru.FreeBSD.org (保守担当 dv@dv.ru) cvsup3.ru.FreeBSD.org (保守担当 fjoe@iclub.nsu.ru) cvsup4.ru.FreeBSD.org (保守担当 zhecka@klondike.ru) スロヴァキア共和国 cvsup.sk.FreeBSD.org (保守担当 tps@tps.sk) cvsup2.sk.FreeBSD.org (保守担当 tps@tps.sk) スロベニア cvsup.si.FreeBSD.org (保守担当 blaz@si.FreeBSD.org) 南アフリカ cvsup.za.FreeBSD.org (保守担当 markm@FreeBSD.org) cvsup2.za.FreeBSD.org (保守担当 markm@FreeBSD.org) スペイン cvsup.es.FreeBSD.org (保守担当 jesusr@FreeBSD.org) スウェーデン cvsup.se.FreeBSD.org (保守担当 pantzer@ludd.luth.se) 台湾 cvsup.tw.FreeBSD.org (保守担当 jdli@freebsd.csie.nctu.edu.tw) cvsup2.tw.FreeBSD.org (保守担当 ycheng@sinica.edu.tw) cvsup3.tw.FreeBSD.org (保守担当 foxfair@FreeBSD.org) ウクライナ cvsup2.ua.FreeBSD.org (保守担当 freebsd-mnt@lucky.net) cvsup3.ua.FreeBSD.org (保守担当 ftpmaster@ukr.net), キエフ cvsup4.ua.FreeBSD.org (保守担当 phantom@cris.net) イギリス cvsup.uk.FreeBSD.org (保守担当 joe@pavilion.net) cvsup2.uk.FreeBSD.org (保守担当 brian@FreeBSD.org) cvsup3.uk.FreeBSD.org (保守担当 ftp-admin@plig.net) アメリカ cvsup1.FreeBSD.org (保守担当 skynyrd@opus.cts.cwu.edu), ワシントン州 cvsup2.FreeBSD.org (保守担当 jdp@FreeBSD.org), カリフォルニア州 cvsup3.FreeBSD.org (保守担当 wollman@FreeBSD.org), マサチューセッツ州 cvsup4.FreeBSD.org (保守担当 rgrimes@FreeBSD.org), オレゴン州 cvsup5.FreeBSD.org (保守担当 mjr@blackened.com), アリゾナ州 cvsup6.FreeBSD.org (保守担当 jdp@FreeBSD.org), フロリダ州 cvsup7.FreeBSD.org (保守担当 jdp@FreeBSD.org), ワシントン州 cvsup8.FreeBSD.org (保守担当 hostmaster@bigmirror.com), ワシントン州 cvsup9.FreeBSD.org (保守担当 qbsd@uswest.net), ミネソタ州 cvsup10.FreeBSD.org (保守担当 jdp@FreeBSD.org), カリフォルニア州 cvsup11.FreeBSD.org (保守担当 cvsup@research.uu.net), バージニア州 cvsup12.FreeBSD.org (保守担当 will@FreeBSD.org), インディアナ州 + + + cvsup13.FreeBSD.org + (保守担当 dima@valueclick.com), + カリフォルニア州 + + + + cvsup14.FreeBSD.org + (保守担当 freebsd-cvsup@mfnx.net), + カリフォルニア州 + 以下の CVSup サイトは, CTM ユーザのことを特に考慮して運用されています. 他の CVSup のミラーサイトとは異なり, これらのサイトでは CTM を使って最新の状態を保っています. つまり, もし以下の サイトから cvs-allrelease=cvsCVSup すれば, CTMcvs-cur のデルタを使って更新するのに適した CVS のリポジトリ (必須となる .ctm_status ファイルも含まれています.) を入手することができます. これにより, これまで CVSup を使って cvs-all 全部を入手していたユーザも CTM のベースデルタを使って 最初からリポジトリを構築し直すことなく CVSup から CTM へと移行すること が可能です. この機能は, リリースタグを cvs として cvs-all ディストリビューションを入手する時のみ 利用できるものですので注意してください. 他のディストリビューションやリリースタグを 指定した場合でも指定したファイルを入手することは可能ですが, これらのファイルを CTM で更新することはできません. また, CTM の現在のバージョンではタイムスタンプを保存しないため, 以 下のサイトのファイルのタイムスタンプは 他のミラーとは異なる物となってい ますので注意が必要です. 利用するサイトを以下のサイトと他のサイトの間で 変更することはお勧めできません. ファイルの転送は問題なくできますが, 少々非能率的です. ドイツ ctm.FreeBSD.org (保守担当 blank@fox.uni-trier.de) AFS サイト FreeBSD の AFS サーバは以下のサイトで稼働しています: スウェーデン ファイルは以下の場所にあります: /afs/stacken.kth.se/ftp/pub/FreeBSD/ stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se (保守担当 ftp@stacken.kth.se)
diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml index f74fca9e7d..6fe5db5b9b 100644 --- a/ja_JP.eucJP/books/handbook/ports/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -1,1103 +1,1111 @@ アプリケーションのインストール: Ports Collection 改訂: &a.jim;, 1999 年 11 月 22 日. 原作: さまざまな人々 この章では FreeBSD Ports Collection を利用することで, 非常に幅広いアプリケーションのコンパイルとインストールを 最小限の労力で行なうことができます. それは普通スケルトンと呼ばれる, アプリケーションを FreeBSD 上でコンパイルしインストールするために必要となる最小限のファイルのセットで構成されてます. やってみたことのある方はよくご存知でしょうが, オープンな規格とは全くの誇大広告であって, あるプログラムを異なるバージョンの Unix 上で動作させることは退屈で手間のかかる仕事です. 求めているプログラムが自分のシステムでうまくコンパイルでき, 正しいところにインストールできて完璧に動作するとしたらとてもラッキーなのですが, あいにくこれは滅多にないことなのです. ほとんどのプログラムについてあなたは髪を掻きむしることになるでしょうし, かなりのプログラムでは, 白髪混じりの頭になってしまったり, あるいは慢性の脱毛症にすらなってしまうかもしれません... Ports Collection の基本的なアイディアは, 適切に動作させるために必要な複雑な手順のすべてを取り除き, インストールを簡単で楽な作業にすることにあります. Ports Collection を利用すれば, 大変な作業は必要ありません. Ports Collection に含まれる ports は, 単に make install と入力するだけでインストールできるのです. Ports Collection の利用 このセクションでは, Ports Collection を利用してシステムにプログラムをインストールしたり, システムから削除したりする基本的な手順について説明します. ports のインストール 一番最初に知らなければならないのは, Ports Collection は スケルトン と呼ばれるもので構成されているという事実です. port スケルトンは簡単に言うと, アプリケーションを FreeBSD 上でコンパイルしインストールするために必要となる最小限のファイルのセットのことです. それぞれの port スケルトンには, 次のファイルが含まれています. Makefile. Makefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する, さまざまな命令文が含まれています. files ディレクトリ. files ディレクトリには, md5 というファイルが置かれています. このファイルは, ports チェックサムに使われる MD5 アルゴリズムの名前をとって名付けられています. チェックサムとは, チェックしたいファイルに含まれるすべてのデータを加算した数値です. ファイル中の文字が一つでも変更されると チェックサムは変更前と異なるものとなり, エラーメッセージが表示されます. そのため, ファイルに変更が加えられているかどうか調べることが可能です. files ディレクトリには, port に必要で, 他のディレクトリには入れられないファイルが含まれることもあります. patches ディレクトリ. このディレクトリには FreeBSD システム上でプログラムをコンパイルし, インストールするためのパッチが含まれています. パッチ(patch)とは基本的に, 個々のファイルに対する変更点を表した小さなファイル群のことです. ファイルはプレインテキスト形式で, 10 行目を削除26 行目を ... に変更 などと書かれています. パッチは, diff(差分) とも呼ばれます. これは, パッチが diff プログラムで作成されるからです. pkg ディレクトリ. 普通, このディレクトリには三つのファイルが含まれています. port によっては必要に応じて三つ以上になる場合もありますが, ほとんどの場合その三つしか必要ありません. そのファイルとは, 以下の三つです. COMMENT. これにはプログラムの一行説明文が含まれています. DESCR. これにはプログラムの, 複数行にわたる詳しい説明文が含まれます. PLIST. これは, その port によってインストールされる全ファイルのリストです. これにはプログラムを削除する際に, どのファイルを削除すれば良いのかを ports システムに伝える役割もあります. さて, Ports Collection が何を目的として使われるものなのか, それ理解するための基礎的な知識はこれで十分です. 最初の port をインストールする準備ができました. port のインストールには二つの方法があります. 実際の作業に入る前に, インストールする port を選ぶ必要があります. 選ぶ方法はいくつかありますが, 最も簡単なのは FreeBSD ウェブサイトの ports リストを利用することでしょう. そこにリストされている ports や, サイトの検索機能を使って閲覧することができます. 各々の port には説明文が含まれていますので, インストールを決める前にその port に関する説明を読むこともできます. もう一つの方法は, whereis コマンドを使うことです. whereis コマンドを使うには, プロンプトから単に whereis <インストールしたいプログラム名> と入力します. もし, あなたのシステム上でプログラムが見つかれば, それがどこにあるのかが次のように表示されます. &prompt.root; whereis xchat xchat: /usr/ports/irc/xchat &prompt.root; この表示は, xchat (irc クライアントの一つ) が /usr/ports/irc/xchat というディレクトリに見つかったことを示しています. また, Ports Collection の持つ検索機能を利用して port を検索する方法もあります. この検索機能を利用するには, カレントディレクトリが /usr/ports である必要があります. そのディレクトリに移動したら, make search key=プログラム名 と入力してください. プログラム名の部分には検索したいプログラム名を入れます. たとえば, xchat を探したい場合には次のようにします. &prompt.root; cd /usr/ports &prompt.root; make search key=xchat Port: xchat-1.3.8 Path: /usr/ports/irc/xchat Info: An X11 IRC client using the GTK+ toolkit, and optionally, GNOME Maint: jim@FreeBSD.org Index: irc B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gmake-3.77 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 出力のうち特に注意して見なければならないのは Path という行です. この行は xchat がどこにあるかを示しています. 出力される他の情報は port をインストールする際には直接必要となるものではありませんので, ここでは触れないでおきます. ports をインストールするには, root ユーザにならなければなりません. インストールしたい port が見つかったら, 実際のインストールい移ることができます. CD-ROM からのコンパイル タイトルから想像できると思いますが, このセクションで説明する内容は, FreeBSD の CDROM セットを持っていることを前提としています. もし CDROM セットを持っていなければ, FreeBSD Mall で注文することができます. FreeBSD CDROM がドライブに挿入されていて, /cdrom (マウントポイントは必ず /cdromでないといけません) にマウントされていれば, port をインストールすることができます. まず, カレントディレクトリをインストールしたい port のあるディレクトリに変更してください. &prompt.root; cd /usr/ports/irc/xchat xchat ディレクトリに移動すると, port スケルトンがあるのが確認できると思います. 次に行なうのは, port のコンパイル (構築, ビルド(build)とも呼ばれます) です. これは, プロンプトから単に make と入力するだけで行なえます. そうすると, 次のような出力が現われるはずです. &prompt.root; make >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure output snipped] ... ===> Building for xchat-1.3.8 ... [compilation snipped] ... &prompt.root; コンパイルが終了してプロンプトに戻ることを確認してください. 次に port をインストールを行ないます. port をインストールするのに必要なのは, make コマンドに一つの単語, install を指定することだけです. &prompt.root; make install ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [install routines snipped] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; プロンプトに戻ったら, インストールしたプログラムは実行できるようになっています. make, make install と二つに分けられた手順の代わりに, 最初から make install と実行することで, 手順の二番目の操作を省くことができます. port には CDROM への収録を許可しないライセンス条項を持つものがあることに 注意してください. これにはダウンロード前に登録を必要としたり, 再配布が禁止されているなどというさまざまな理由があります. CDROM に含まれていない port をインストールしたい場合には, ネットワークに接続する必要があります (次のセクションをご覧ください). インターネット経由での ports のコンパイル 前セクションと同じように, このセクションでは, インターネットへの接続が可能であることを前提としています. もしインターネット接続が不可能な場合は, CDROM からのインストールが必要になるでしょう. インターネット経由で port をインストールする方法は, CDROM からインストールする場合と完全に同じです. 唯一異なる部分はプログラムのソースコードを CDROM からではなく, インターネット経由でダウンロードするということです. 次のように, 必要な手順は同じです. &prompt.root; make install >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from http://xchat.org/files/v1.3/. Receiving xchat-1.3.8.tar.bz2 (305543 bytes): 100% 305543 bytes transferred in 2.9 seconds (102.81 Kbytes/s) ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure output snipped] ... ===> Building for xchat-1.3.8 ... [compilation snipped] ... ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [install routines snipped] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; ご覧のとおり, 出力の違いはシステムがどこから port を入手したか示す行だけです. 以上が, システムに ports をインストールするために必要な操作です. 次のセクションでは, システムにインストールされている port を削除する方法について学びます. インストールされた ports の削除 ports のインストール方法について知ればおそらく, インストールの後になって, それが間違っていたことに気付いた時などに備えて それらを削除する方法はどうすれば良いのか疑問に感じることでしょう. ここでは, その削除の方法について扱います. さて, 前の例 (例のまま何も変更していない人は xchat) を削除してみましょう. ports のインストールと同じように, まず最初にやらなければならないのは port のディレクトリに移動することです. port のディレクトリは /usr/ports/irc/xchat でしたね. ディレクトリを移動したら, xchat を削除するのに必要な準備は終わりです. 削除するには, make deinstall コマンド (わかりやすいですよね?) を実行します. &prompt.root; cd /usr/ports/irc/xchat &prompt.root; make deinstall ===> Deinstalling for xchat-1.3.8 &prompt.root; 極めて簡単な作業です. これでうまく xchat をシステムから削除することができました. もう一度再インストールしたい場合には, /usr/ports/irc/xchat から make reinstall を実行することで行なうことができます. トラブルシューティング このセクションでは, Ports Collection について良く質問される質問と, いくつかの基本的なトラブルシューティングテクニック, そして port がうまく動かない場合にできることについて扱います. 質問と回答集 私はモデムについての議論を しているのかと思っていました??! なるほど. あなたはきっと, コンピュータの背面についているシリアルポートのことだと思ってしまったのでしょう. あるバージョンの Unix から, 別のバージョンの Unix へとプログラムを移殖することを porting というのですが, ここでわたしたちは porting の結果という意味で port を使っています. わたしは, 標準に含まれないプログラムのインストールには packages を使うものだと思っていたのですが. そのとおり. 通常は packages が最も手早くて簡単な方法です. それでは, どうして面倒な ports があるのですか? いくつかの理由があります. ライセンス条項に, バイナリではなくソースコードでの配布を求めているソフトウェアがあるためです. バイナリ配布を信用していない人もいます. ソースコードがあれば少なくとも, ソースコードを読んで, (理論的には) 潜在的な問題点を自分で見つけ出すこともできるはずです. ローカルなパッチを入手した場合, それを自分で追加するためにソースコードが必要になります. プログラムがいかにコンパイルされるべきかについて, あなたはパッケージを作った人とは異なる見解を持っているかもしれません. どんな最適化オプションをつけるべきかとか, デバッグバージョンを作ってから それを strip するべきだとか, いや, そうするべきでない, などなど, 確固たる見解を持っている人もいるでしょう. package は通常, 非常に保守的な設定で構築されています. もし port に特定のプロセッサ用のコードを使うコンパイルオプションがあったり, 特定の拡張ボードを有効化するオプションがあれば, package を作成している人でなくとも, あなた自身が port を使ってそれらを有効にし, 設定の異なるたくさんの package を作成することができます. これの例外は, 用紙のサイズです. 異なる用紙のサイズに対応している package の場合, 用紙サイズ毎に複数の package が提供されることがあります. ソースコードを手元に置いておきたい人たちもいます. 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, ソースコードを 借用したり (もちろん, ライセンスが許せばの話ですが) するのです. あなたがソースコードを持っていなければ, それはソフトウェアとは 言えませんね! ;-) パッチ(patch)とは何ですか? パッチとは, あるバージョンから他のバージョンへどのように変更するかを 示す, (通常は) 小さなファイルです. 23 行目を削除, 468 行目の後にこれらの 2 行を追加, または 197 行目をこのように変更というような内容を含んでいます. これは, diff という名前のプログラムで生成されます. tarball とは一体何ですか? .tar または .tar.gz という拡張子を持つファイルです (.tar.Z のようなバリエーションもありますし, DOS のファイルシステム用に .tgz と短縮される場合もあります). これは基本的にファイルを一つにまとめた (.tar) ディレクトリツリーです. 圧縮されている (.gz) 場合もあります. 元々 Tape ARchives (訳注: テープアーカイブ) (このため tar という名前なのです) で使われていたものなのですが, インターネット上でプログラムのソースコードを配布するために 広く使われている方法です. これらのファイルの中身を見たり, 展開したりすることもできます. FreeBSD の基本システムに付属する Unix 標準の tar コマンドを使ってみると 次のようになります. &prompt.user; tar tvzf foobar.tar.gz &prompt.user; tar xzvf foobar.tar.gz &prompt.user; tar tvf foobar.tar &prompt.user; tar xvf foobar.tar チェックサムとは何ですか? これは, チェックしたいファイル中のすべてのデータを加えて生成した 数値です. 何か文字が書き換わっていたら, チェックサムが一致しなくなります. そのため, 単純な比較だけで違いを見つけることができるのです. 今まで「CD-ROM からの ports のコンパイル」にあるようにして ports をインストールできていたのですが, kermit のインストールをしようとするとうまくいきません. &prompt.root; make install >> cku190.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の CDROM を買ってしまったのでしょうか? CD-ROM からの ports のコンパイル のセクションで説明されているとおり, ports の一部にライセンス上の制限から CDROM には収録できない種類のものが存在します. kermit はその一例です. kermit のライセンス条件は tarball を CDROM に収録することを禁じているため, 申し訳ありませんが手動で tarball を取得してください. 質問にあるようなエラーメッセージが表示されるのは, あなたがそのときにインターネットへ接続していなかったことによります. 一度 MASTER_SITES のいずれかから (Makefile の中に書いてあります) ダウンロードしておけば, プロセスを再開することができます. kermit の tarball を入手しましたが, /usr/ports/distfiles に ファイルを置こうとすると, 書き込み権がないというエラーがでます. ports は /usr/ports/distfiles から tarball を探します. しかし, これは読み出し専用の CDROM へのシンボリックリンクなので, ここにファイルを置くことはできません. 次のようにすれば他の場所を探すよう ports に指示することができます. &prompt.root; make DISTDIR=/where/you/put/it install ports は, すべてを /usr/ports に置いたときだけ動作するのでしょうか? システムの管理者によると, 私の個人的なファイルは /u/people/guests/wurzburger に入れなければならないのですが, これではうまくいかないように思います. PORTSDIR 変数と PREFIX 変数を変更することで, 違うディレクトリを 使用することができます. たとえば, &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install とすると, ports は /u/people/guests/wurzburger/ports でコンパイルされ, すべて /usr/local 以下にインストールされます. &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install この場合, コンパイルは /usr/ports でおこない, /u/people/guests/wurzburger/local にインストールします. もちろん, &prompt.root; make PORTSDIR=../ports PREFIX=../local install とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが, 考え方は理解していただけたと思います). + (X Window System に含まれる) &man.imake.1; を使用する + ports の場合は PREFIX が機能せず, + /usr/X11R6 の下へインストールしようとします. + また, Perl 関連の ports も同様に PREFIX を無視して + Perl ツリーにインストールします. + これらの ports で PREFIX + がきちんと参照されるように変更するのは, ほとんど不可能です. + もし ports をインストールするたびにこれらを毎回タイプするのが気に入らないのであれば, これらを環境変数にセットしてしまうという手があります. どのようにすれば良いかについては, あなたの使っているシェルのマニュアルページを参照してください. わたしは FreeBSD の CDROM を持っていませんが, すべての tarball を システムに置いておきたいのです. そうすれば ports をインストール するたびに毎回ダウンロードが終わるのを待たなくてすむでしょう. これを一度におこなう簡単な方法はありませんか? Ports Collection 全体の tarball を持ってくるには, 次のようにします. &prompt.root; cd /usr/ports &prompt.root; make fetch ports の下の一つのディレクトリの tarball を持ってくるには, 次のようにします. &prompt.root; cd /usr/ports/directory &prompt.root; make fetch ports を一つだけ持ってくる方法は, きっとすでにご存知だと思います. 近くにある FreeBSD のミラーサイトから tarball を持ってくる方がおそらく速いはずです. MASTER_SITES に書かれているサイト以外から持ってくるように ports に指示する方法はありませんか? もちろんあります. たとえば ftp.FreeBSD.orgMASTER_SITES に書かれている サイトより近いとしたら, 以下のようにしてください. &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch make がダウンロードしようとする前に, どんなファイルが必要とするか知りたいのですが. make fetch-list とすると, ports に必要なファイルの一覧を表示できます. ports のコンパイルを途中で止める方法はありますか? 私はインストールをする前に いろいろとソースコードを解析したいのですが, 毎回 control-C を打たなければならないのが少し面倒です. make extract を実行すると, ファイル転送とソースコードの展開まで行なったところで停止します. 自分で ports を作ろうとしています. わたしの作ったパッチが正しく処理できることを確認できるように, コンパイルを止めたいのです. パッチのための make extract のようなものはありませんか? あります. make patch があなたの望むものです. おそらく PATCH_DEBUG オプションも同様に役に立つことでしょう. あなたの努力に感謝いたします!! あるコンパイルオプションはバグの原因になるという話を聞きました. 本当なのでしょうか? どうやったら正しい設定で ports をコンパイルできますか? 本当です. gcc の バージョン 2.6.3 (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では, オプションを オプションなしで 使うと, バグのあるコードを出力します (ほとんどの ports は オプションを使いません). コンバイルオプションは次のように定義すべきです. &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install これを /etc/make.conf に書いておくこともできますが, 残念なことにすべての ports がこの指定を尊重してくれるわけではありません. もっとも確実なのは make configure を実行し, ソースディレクトリの Makefile を見て, 手で修正することですが, ソースが多くのサブディレクトリに分かれていて, 各々に Makefile がある場合は大変な仕事になります. FreeBSD の標準コンパイルオプションは非常に保守的ですので, 変更していなければ問題となることはないでしょう. ports がたくさんありすぎて, わたしの欲しいものがなかなか見つけられません. どんな ports が使えるのか, リストはどこかにありませんか? /usr/ports の中にある INDEX ファイルを見てみましょう. また, あるキーワードで ports コレクションを検索することも可能です. たとえば以下のようにすれば, プログラミング言語 LISP に関連した ports を探すことができます. &prompt.user; cd /usr/ports &prompt.user; make search key=lisp foo ports をインストールしたいのですが, それのコンパイルは すぐに停止して, bar ports のコンパイルが始まってしまいます. 一体どうして? foo ports が, bar ports の提供する何らかの機能を必要としているからです. たとえば foo が画像を扱うもので bar がその画像処理に必要なライブラリを持っている場合などです. もしくは barfoo をコンパイルするのに必要なツールなのかもしれません. ports から grizzle プログラムをインストールしましたが, まったく ディスクスペースの浪費です. 削除したいのですが, すべてのファイルがどこへインストールされたのかわかりません. 何か手がかりはありませんか? 大丈夫, 次のようにしてください. &prompt.root; pkg_delete grizzle-6.5 もしくは, 次のようにします. &prompt.root; cd /usr/ports/somewhere/grizzle &prompt.root; make deinstall ちょっと待ってください. 削除しようとするコマンドのバージョン番号を 知っていなくてはならないのでしょうか? あなたは, わたしがバージョン番号を 覚えていると本気で思っているのですか? そんなことはありません. バージョン番号は次のようにすればわかります. &prompt.root; pkg_info -a | grep grizzle Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. ディスク容量のことなのですが, ports のディレクトリは非常に膨大な容量を使うように見えます. 残しておいた方がよいのでしょうか? それとも削除してしまって構わないのでしょうか? はい. インストールが首尾よく終わり, もうソースコードが必要でないと思うなら, それらを残しておく理由はないでしょう. 一番良い方法は, 次のとおりです. &prompt.root; cd /usr/ports &prompt.root; make clean これはすべての ports のサブディレクトリを調べ, 各 ports のスケルトン以外の削除をおこないます. これを試してみたのですが, tarball や ports で使われたファイルが distfiles ディレクトリに残っています. これも削除してしまっても大丈夫ですか? はい. それを使った作業が終わったのであれば, 削除してしまっても大丈夫です. 手動でファイルを操作するか, もしくは make distclean を使えば削除することができます. わたしはとてもとてもたくさんのプログラムを楽しみたいのです. 一度にすべての ports をインストールする方法はありませんか? 次のようにしてください. &prompt.root; cd /usr/ports &prompt.root; make install ports の中には, 同じ名前でインストールを行なうものがあるということに注意してください. 二つのグラフィック ports をインストールして, それらが両方とも /usr/local/bin/plot をインストールする場合などは明らかに問題となるでしょう. やってみました. 時間がとてもかかるだろうと思ったので, そのまま実行を 続けさせて, わたしは寝ました. 翌朝コンピュータを見てみると, 三つ半の ports しか処理が終わっていませんでした. 何か悪かったのでしょうか? ports の中には, わたしたちの決められないこと (たとえば, あなたが A4 の 用紙に印刷したいのか, US レターサイズの用紙に印刷したいのかなど) について質問してくるものがあるからです. それらの質問には手動で答える必要があります. 一日中モニタの前に座って過ごしたりしたくないのですが, 何か良いアイディアはありませんか? では, あなたが寝に / 仕事に / 公園にいく前に以下を実行してください. &prompt.root; cd /usr/ports &prompt.root; make -DBATCH install これでユーザの入力を要求しないすべての ports をインストールします. そして戻ってきてから次のように実行してください. &prompt.root; cd /usr/ports &prompt.root; make -DIS_INTERACTIVE install そして残りの作業を実行してください. わたしたちは Ports Collection にある frobble を使っています. ですが, わたしたちの必要に応じて ports を変更したところがあるのです. 自分で package を作って, それをわたしたちのサイトのまわりに簡単に配布できるような方法がありますか? もちろんあります. 変更点をパッチにする方法は知っていますよね? &prompt.root; cd /usr/ports/somewhere/frobble &prompt.root; make extract &prompt.root; cd work/frobble-2.8 [あなたのパッチをあててください] &prompt.root; cd ../.. &prompt.root; make package この ports の技術は本当に賢いですね. わたしはこれがどのようにして動いているのか知りたいのですが, その秘密とは何ですか? 秘密なんて一切ありません. Makefiles ディレクトリ にある bsd.port.mkbsd.port.subdir.mk ファイルを見てください. (複雑なシェルスクリプトを嫌う読者は, このリンクを追いかけないほうが良いでしょう...) たすけて! port がうまく動かない! port がうまく動作しない状況に遭遇したら, あなたにできることは次のようなことしかありません. 自分で直しましょう! port の作り方 のセクションが参考になるはずです. 苦情を言いましょう — ただし電子メールで! まず port の保守担当者に電子メールを送ってください. make maintainer と入力するか, Makefile を直接読み, 保守担当者の電子メールアドレスを調べます. メールを送る際には, port 名とバージョン番号 (Makefile$FreeBSD: 行), そしてエラーが出力されるまでの出力ログを忘れずに添付してください. 保守担当者から返信がなければ, send-pr を使ってバグレポートを提出しても構いません. その port のことは忘れてしまってください. これは最も気楽な方法です — 重要な ports というのは, ほんの一握りしかありません. また, port が更新された時に問題が解決しているかも知れません. 近くの FTP サイトから package を入手しましょう. マスタ package コレクションは, ftp.FreeBSD.orgpackage のディレクトリにありますが, まずはあなたの地域のミラーサイトを最初に調べてください. ソースからコンパイルすることを試みるより確実ですし, 時間もかかりません. package をシステムにインストールするには, &man.pkg.add.1; を使います. 高度な話題 以前ここにあった文書は, 探しやすいように Porter's Handbook へ移動しました. あなたが ports の作成や提出をしたいと考えているなら, そちらへどうぞ. diff --git a/ja_JP.eucJP/share/sgml/authors.ent b/ja_JP.eucJP/share/sgml/authors.ent index baafc14165..c589b67dba 100644 --- a/ja_JP.eucJP/share/sgml/authors.ent +++ b/ja_JP.eucJP/share/sgml/authors.ent @@ -1,557 +1,569 @@ abial@FreeBSD.org"> ache@FreeBSD.org"> adam@FreeBSD.org"> ade@FreeBSD.org"> adrian@FreeBSD.org"> akiyama@FreeBSD.org"> alc@FreeBSD.org"> alex@FreeBSD.org"> alfred@FreeBSD.org"> amurai@FreeBSD.org"> andreas@FreeBSD.org"> andy@FreeBSD.org"> archie@FreeBSD.org"> asami@FreeBSD.org"> asmodai@FreeBSD.org"> assar@FreeBSD.org"> ats@FreeBSD.org"> awebster@pubnix.net"> babkin@FreeBSD.org"> bde@FreeBSD.org"> ben@FreeBSD.org"> +bean@FreeBSD.org"> + benno@FreeBSD.org"> billf@FreeBSD.org"> bmah@FreeBSD.org"> bmilekic@FreeBSD.org"> bp@FreeBSD.org"> brandon@FreeBSD.org"> brian@FreeBSD.org"> bsd@FreeBSD.org"> cawimm@FreeBSD.org"> cg@FreeBSD.org"> charnier@FreeBSD.org"> +chm@FreeBSD.org"> + chris@FreeBSD.org"> chuckr@glue.umd.edu"> chuckr@FreeBSD.org"> cjh@FreeBSD.org"> +clive@FreeBSD.org"> + cp@FreeBSD.org"> cokane@FreeBSD.org"> cpiazza@FreeBSD.org"> cracauer@FreeBSD.org"> csgr@FreeBSD.org"> cwt@FreeBSD.org"> dan@FreeBSD.org"> danny@FreeBSD.org"> dannyboy@FreeBSD.org"> darrenr@FreeBSD.org"> davidn@blaze.net.au"> dbaker@FreeBSD.org"> dburr@FreeBSD.org"> dcs@FreeBSD.org"> dec@FreeBSD.org"> demon@FreeBSD.org"> deischen@FreeBSD.org"> des@FreeBSD.org"> dfr@FreeBSD.org"> dg@FreeBSD.org"> dick@FreeBSD.org"> dillon@FreeBSD.org"> dima@FreeBSD.org"> dirk@FreeBSD.org"> Dirk.vanGulik@jrc.it"> +dmlb@FreeBSD.org"> + DougB@FreeBSD.org"> dt@FreeBSD.org"> dufault@FreeBSD.org"> dwhite@FreeBSD.org"> dwmalone@FreeBSD.org"> dyson@FreeBSD.org"> eivind@FreeBSD.org"> ejc@FreeBSD.org"> erich@FreeBSD.org"> faq@FreeBSD.org"> fenner@FreeBSD.org"> flathill@FreeBSD.org"> foxfair@FreeBSD.org"> fsmp@FreeBSD.org"> gad@FreeBSD.org"> gallatin@FreeBSD.org"> gclarkii@FreeBSD.org"> gena@NetVision.net.il"> ghelmer@cs.iastate.edu"> gibbs@FreeBSD.org"> gioria@FreeBSD.org"> gj@FreeBSD.org"> gpalmer@FreeBSD.org"> graichen@FreeBSD.org"> green@FreeBSD.org"> grog@FreeBSD.org"> groudier@club-internet.fr"> gryphon@healer.com"> gshapiro@FreeBSD.org"> gsutter@FreeBSD.org"> guido@FreeBSD.org"> hanai@FreeBSD.org"> handy@sxt4.physics.montana.edu"> hrs@FreeBSD.org"> roger@freebsd.org"> helbig@FreeBSD.org"> hm@FreeBSD.org"> hoek@FreeBSD.org"> horikawa@FreeBSD.org"> hosokawa@FreeBSD.org"> hsu@FreeBSD.org"> +iedowse@FreeBSD.org"> + imp@FreeBSD.org"> issei@FreeBSD.org"> itojun@itojun.org"> iwasaki@FreeBSD.org"> jake@FreeBSD.org"> jasone@FreeBSD.org"> jayanth@FreeBSD.org"> jb@cimlogic.com.au"> jdp@FreeBSD.org"> jedgar@FreeBSD.org"> jeh@FreeBSD.org"> jehamby@lightside.com"> jesusr@FreeBSD.org"> jfieber@FreeBSD.org"> jfitz@FreeBSD.org"> jgreco@FreeBSD.org"> jhay@FreeBSD.org"> jhb@FreeBSD.org"> jhs@FreeBSD.org"> jim@FreeBSD.org"> jkh@FreeBSD.org"> jkoshy@FreeBSD.org"> jlemon@FreeBSD.org"> john@starfire.MN.ORG"> jlrobin@FreeBSD.org"> jmacd@FreeBSD.org"> jmas@FreeBSD.org"> jmb@FreeBSD.org"> jmg@FreeBSD.org"> jmz@FreeBSD.org"> joe@FreeBSD.org"> joerg@FreeBSD.org"> jon@FreeBSD.org"> john@FreeBSD.org"> jraynard@FreeBSD.org"> jseger@FreeBSD.org"> julian@FreeBSD.org"> jwd@FreeBSD.org"> jvh@FreeBSD.org"> karl@FreeBSD.org"> kato@FreeBSD.org"> kbyanc@FreeBSD.org"> keith@FreeBSD.org"> kelly@ad1440.net"> ken@FreeBSD.org"> kevlo@FreeBSD.org"> kiri@FreeBSD.org"> kjc@FreeBSD.org"> knu@FreeBSD.org"> kris@FreeBSD.org"> kuriyama@FreeBSD.org"> lars@FreeBSD.org"> lile@FreeBSD.org"> lioux@FreeBSD.org"> ljo@FreeBSD.org"> luoqi@FreeBSD.org"> marcel@FreeBSD.org"> markm@FreeBSD.org"> marko@FreeBSD.org"> martin@FreeBSD.org"> max@FreeBSD.org"> mark@vmunix.com"> mbarkah@FreeBSD.org"> mckay@FreeBSD.org"> mckusick@FreeBSD.org"> md@bsc.no"> winter@jurai.net"> mharo@FreeBSD.org"> mjacob@FreeBSD.org"> mks@FreeBSD.org"> motoyuki@FreeBSD.org"> mph@FreeBSD.org"> mpp@FreeBSD.org"> msmith@FreeBSD.org"> mtaylor@FreeBSD.org"> murray@FreeBSD.org"> nakai@FreeBSD.org"> nate@FreeBSD.org"> nbm@FreeBSD.org"> nectar@FreeBSD.org"> newton@FreeBSD.org"> n_hibma@FreeBSD.org"> nik@FreeBSD.org"> non@FreeBSD.org"> nsayer@FreeBSD.org"> nsj@FreeBSD.org"> nyan@FreeBSD.org"> obrien@FreeBSD.org"> okazaki@FreeBSD.org"> olah@FreeBSD.org"> onoe@FreeBSD.org"> opsys@open-systems.net"> patrick@FreeBSD.org"> paul@FreeBSD.org"> pb@fasterix.freenix.org"> pds@FreeBSD.org"> peter@FreeBSD.org"> phantom@FreeBSD.org"> phk@FreeBSD.org"> pho@FreeBSD.org"> piero@strider.inet.it"> pjchilds@imforei.apana.org.au"> proven@FreeBSD.org"> ps@FreeBSD.org"> pst@FreeBSD.org"> reg@FreeBSD.org"> rgrimes@FreeBSD.org"> rhuff@cybercom.net"> ricardag@ag.com.br"> rich@FreeBSD.org"> rnordier@FreeBSD.org"> roam@FreeBSD.org"> roberto@FreeBSD.org"> rse@FreeBSD.org"> ru@FreeBSD.org"> rv@FreeBSD.org"> rwatson@FreeBSD.org"> sada@FreeBSD.org"> sanpei@FreeBSD.org"> scottl@FreeBSD.org"> scrappy@FreeBSD.org"> se@FreeBSD.org"> sef@FreeBSD.org"> shafeeq@FreeBSD.org"> sheldonh@FreeBSD.org"> shige@FreeBSD.org"> shin@FreeBSD.org"> simokawa@FreeBSD.org"> smace@FreeBSD.org"> smpatel@FreeBSD.org"> sobomax@FreeBSD.org"> sos@FreeBSD.org"> stark@FreeBSD.org"> stb@FreeBSD.org"> steve@FreeBSD.org"> sumikawa@FreeBSD.org"> swallace@FreeBSD.org"> tanimura@FreeBSD.org"> taoka@FreeBSD.org"> takawata@FreeBSD.org"> tedm@FreeBSD.org"> tegge@FreeBSD.org"> tg@FreeBSD.org"> thepish@FreeBSD.org"> tom@FreeBSD.org"> +tomsoft@FreeBSD.org"> + torstenb@FreeBSD.org"> toshi@FreeBSD.org"> trevor@FreeBSD.org"> truckman@FreeBSD.org"> ugen@FreeBSD.org"> uhclem@FreeBSD.org"> ulf@FreeBSD.org"> ume@FreeBSD.org"> unfurl@FreeBSD.org"> vanilla@FreeBSD.org"> wes@FreeBSD.org"> whiteside@acm.org"> wilko@FreeBSD.org"> will@FreeBSD.org"> wlloyd@mpd.ca"> wollman@FreeBSD.org"> wosch@FreeBSD.org"> wpaul@FreeBSD.org"> wsanchez@FreeBSD.org"> yokota@FreeBSD.org">